master
go 179 lines 4.39 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package funcapi
4
5 import (
6 "encoding/json"
7 "testing"
8
9 "github.com/stretchr/testify/assert"
10 "github.com/stretchr/testify/require"
11 )
12
13 func TestFieldType_StringAndJSON(t *testing.T) {
14 cases := []struct {
15 value FieldType
16 expected string
17 }{
18 {FieldTypeNone, "none"},
19 {FieldTypeInteger, "integer"},
20 {FieldTypeFloat, "float"},
21 {FieldTypeBoolean, "boolean"},
22 {FieldTypeString, "string"},
23 {FieldTypeDetailString, "detail-string"},
24 {FieldTypeBarWithInteger, "bar-with-integer"},
25 {FieldTypeDuration, "duration"},
26 {FieldTypeTimestamp, "timestamp"},
27 {FieldTypeArray, "array"},
28 {FieldTypeFeedTemplate, "feedTemplate"},
29 {FieldType(250), "none"},
30 }
31
32 for _, tc := range cases {
33 t.Run(tc.expected, func(t *testing.T) {
34 assert.Equal(t, tc.expected, tc.value.String())
35 data, err := tc.value.MarshalJSON()
36 require.NoError(t, err)
37 assert.Equal(t, `"`+tc.expected+`"`, string(data))
38 data, err = json.Marshal(tc.value)
39 require.NoError(t, err)
40 assert.Equal(t, `"`+tc.expected+`"`, string(data))
41 })
42 }
43 }
44
45 func TestFieldVisual_StringAndJSON(t *testing.T) {
46 cases := []struct {
47 value FieldVisual
48 expected string
49 }{
50 {FieldVisualValue, "value"},
51 {FieldVisualBar, "bar"},
52 {FieldVisualPill, "pill"},
53 {FieldVisualRichValue, "richValue"},
54 {FieldVisualFeedTemplate, "feedTemplate"},
55 {FieldVisualRowOptions, "rowOptions"},
56 {FieldVisual(250), "value"},
57 }
58
59 for _, tc := range cases {
60 t.Run(tc.expected, func(t *testing.T) {
61 assert.Equal(t, tc.expected, tc.value.String())
62 data, err := json.Marshal(tc.value)
63 require.NoError(t, err)
64 assert.Equal(t, `"`+tc.expected+`"`, string(data))
65 })
66 }
67 }
68
69 func TestFieldTransform_StringAndJSON(t *testing.T) {
70 cases := []struct {
71 value FieldTransform
72 expected string
73 }{
74 {FieldTransformNone, "none"},
75 {FieldTransformNumber, "number"},
76 {FieldTransformDuration, "duration"},
77 {FieldTransformDatetime, "datetime"},
78 {FieldTransformDatetimeUsec, "datetime_usec"},
79 {FieldTransformText, "text"},
80 {FieldTransformXML, "xml"},
81 {FieldTransform(250), "none"},
82 }
83
84 for _, tc := range cases {
85 t.Run(tc.expected, func(t *testing.T) {
86 assert.Equal(t, tc.expected, tc.value.String())
87 data, err := json.Marshal(tc.value)
88 require.NoError(t, err)
89 assert.Equal(t, `"`+tc.expected+`"`, string(data))
90 })
91 }
92 }
93
94 func TestFieldSort_StringAndJSON(t *testing.T) {
95 cases := []struct {
96 value FieldSort
97 expected string
98 }{
99 {FieldSortAscending, "ascending"},
100 {FieldSortDescending, "descending"},
101 {FieldSort(250), "ascending"},
102 }
103
104 for _, tc := range cases {
105 t.Run(tc.expected, func(t *testing.T) {
106 assert.Equal(t, tc.expected, tc.value.String())
107 data, err := json.Marshal(tc.value)
108 require.NoError(t, err)
109 assert.Equal(t, `"`+tc.expected+`"`, string(data))
110 })
111 }
112 }
113
114 func TestFieldSummary_StringAndJSON(t *testing.T) {
115 cases := []struct {
116 value FieldSummary
117 expected string
118 }{
119 {FieldSummaryCount, "count"},
120 {FieldSummaryUniqueCount, "uniqueCount"},
121 {FieldSummarySum, "sum"},
122 {FieldSummaryMin, "min"},
123 {FieldSummaryMax, "max"},
124 {FieldSummaryMean, "mean"},
125 {FieldSummaryMedian, "median"},
126 {FieldSummary(250), "count"},
127 }
128
129 for _, tc := range cases {
130 t.Run(tc.expected, func(t *testing.T) {
131 assert.Equal(t, tc.expected, tc.value.String())
132 data, err := json.Marshal(tc.value)
133 require.NoError(t, err)
134 assert.Equal(t, `"`+tc.expected+`"`, string(data))
135 })
136 }
137 }
138
139 func TestFieldFilter_StringAndJSON(t *testing.T) {
140 cases := []struct {
141 value FieldFilter
142 expected string
143 }{
144 {FieldFilterNone, "none"},
145 {FieldFilterRange, "range"},
146 {FieldFilterMultiselect, "multiselect"},
147 {FieldFilterFacet, "facet"},
148 {FieldFilter(250), "none"},
149 }
150
151 for _, tc := range cases {
152 t.Run(tc.expected, func(t *testing.T) {
153 assert.Equal(t, tc.expected, tc.value.String())
154 data, err := json.Marshal(tc.value)
155 require.NoError(t, err)
156 assert.Equal(t, `"`+tc.expected+`"`, string(data))
157 })
158 }
159 }
160
161 func TestParamSelection_StringAndJSON(t *testing.T) {
162 cases := []struct {
163 value ParamSelection
164 expected string
165 }{
166 {ParamSelect, "select"},
167 {ParamMultiSelect, "multiselect"},
168 {ParamSelection(250), "select"},
169 }
170
171 for _, tc := range cases {
172 t.Run(tc.expected, func(t *testing.T) {
173 assert.Equal(t, tc.expected, tc.value.String())
174 data, err := json.Marshal(tc.value)
175 require.NoError(t, err)
176 assert.Equal(t, `"`+tc.expected+`"`, string(data))
177 })
178 }
179 }