| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- package api
- import (
- "context"
- "testing"
- "connectrpc.com/connect"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- apiv1 "github.com/OliveTin/OliveTin/gen/olivetin/api/v1"
- config "github.com/OliveTin/OliveTin/internal/config"
- "github.com/OliveTin/OliveTin/internal/entities"
- "github.com/OliveTin/OliveTin/internal/executor"
- )
- func TestBuildEntityFieldsetDisplayRendersEntityHtmlTitleAndCssClass(t *testing.T) {
- entities.ClearEntitiesOfType("html_display")
- defer entities.ClearEntitiesOfType("html_display")
- entities.AddEntity("html_display", "0", map[string]any{
- "content": "<div class=\"content\">test</div>",
- })
- cfg := config.DefaultConfig()
- cfg.Dashboards = []*config.DashboardComponent{
- {
- Title: "Stream status",
- Contents: []*config.DashboardComponent{
- {
- Title: "Compare result",
- Type: "fieldset",
- Entity: "html_display",
- Contents: []*config.DashboardComponent{
- {
- Type: "display",
- CssClass: "full_screen",
- Title: "{{ html_display.content }}",
- },
- },
- },
- },
- },
- }
- ex := executor.DefaultExecutor(cfg)
- ex.RebuildActionMap()
- rr := &DashboardRenderRequest{
- cfg: cfg,
- ex: ex,
- }
- fieldsets := buildEntityFieldsets("html_display", cfg.Dashboards[0].Contents[0], rr)
- require.Len(t, fieldsets, 1)
- display := findComponentByType(fieldsets[0].Contents, "display")
- require.NotNil(t, display)
- assert.Equal(t, "full_screen", display.CssClass)
- assert.Equal(t, "<div class=\"content\">test</div>", display.Title)
- }
- func findComponentByType(components []*apiv1.DashboardComponent, componentType string) *apiv1.DashboardComponent {
- for _, component := range components {
- if component.Type == componentType {
- return component
- }
- if found := findNestedComponent(component, componentType); found != nil {
- return found
- }
- }
- return nil
- }
- func findNestedComponent(component *apiv1.DashboardComponent, componentType string) *apiv1.DashboardComponent {
- if len(component.Contents) == 0 {
- return nil
- }
- return findComponentByType(component.Contents, componentType)
- }
- func TestGetDashboardEntityDisplayHtmlTitle(t *testing.T) {
- entities.ClearEntitiesOfType("html_display")
- defer entities.ClearEntitiesOfType("html_display")
- entities.AddEntity("html_display", "0", map[string]any{
- "content": "<div class=\"content\">test</div>",
- })
- cfg := config.DefaultConfig()
- cfg.Dashboards = []*config.DashboardComponent{
- {
- Title: "Html Dashboard",
- Contents: []*config.DashboardComponent{
- {
- Title: "Compare result",
- Type: "fieldset",
- Entity: "html_display",
- Contents: []*config.DashboardComponent{
- {
- Type: "display",
- CssClass: "full_screen",
- Title: "{{ html_display.content }}",
- },
- },
- },
- },
- },
- }
- ts, client := getNewTestServerAndClient(cfg)
- defer ts.Close()
- resp, err := client.GetDashboard(context.Background(), connect.NewRequest(&apiv1.GetDashboardRequest{
- Title: "Html Dashboard",
- }))
- require.NoError(t, err)
- display := findComponentByType(resp.Msg.Dashboard.Contents, "display")
- require.NotNil(t, display)
- assert.Equal(t, "full_screen", display.CssClass)
- assert.Equal(t, "<div class=\"content\">test</div>", display.Title)
- }
|