@@ -223,6 +223,12 @@ type mockPrecalculateBrowserFeatureSupportEventsConfig struct {
223223 err error
224224}
225225
226+ type mockUpsertFeatureDiscouragedDetailsConfig struct {
227+ expectedInputs map [string ]gcpspanner.FeatureDiscouragedDetails
228+ outputs map [string ]error
229+ expectedCount int
230+ }
231+
226232type mockWebFeatureSpannerClient struct {
227233 t * testing.T
228234 upsertWebFeatureCount int
@@ -235,6 +241,8 @@ type mockWebFeatureSpannerClient struct {
235241 upsertFeatureSpecCount int
236242 mockPrecalculateBrowserFeatureSupportEventsCfg mockPrecalculateBrowserFeatureSupportEventsConfig
237243 precalculateBrowserFeatureSupportEventsCount int
244+ mockUpsertFeatureDiscouragedDetailsCfg mockUpsertFeatureDiscouragedDetailsConfig
245+ upsertFeatureDiscouragedDetailsCount int
238246}
239247
240248func (c * mockWebFeatureSpannerClient ) UpsertWebFeature (
@@ -339,13 +347,34 @@ func (c *mockWebFeatureSpannerClient) PrecalculateBrowserFeatureSupportEvents(_
339347 return c .mockPrecalculateBrowserFeatureSupportEventsCfg .err
340348}
341349
350+ func (c * mockWebFeatureSpannerClient ) UpsertFeatureDiscouragedDetails (
351+ _ context.Context , featureID string , in gcpspanner.FeatureDiscouragedDetails ) error {
352+ if len (c .mockUpsertFeatureDiscouragedDetailsCfg .expectedInputs ) <= c .upsertFeatureDiscouragedDetailsCount {
353+ c .t .Fatal ("no more expected input for UpsertFeatureDiscouragedDetails" )
354+ }
355+ if len (c .mockUpsertFeatureDiscouragedDetailsCfg .outputs ) <= c .upsertFeatureDiscouragedDetailsCount {
356+ c .t .Fatal ("no more configured outputs for UpsertFeatureDiscouragedDetails" )
357+ }
358+ expectedInput , found := c .mockUpsertFeatureDiscouragedDetailsCfg .expectedInputs [featureID ]
359+ if ! found {
360+ c .t .Errorf ("unexpected input %v" , in )
361+ }
362+ if ! reflect .DeepEqual (expectedInput , in ) {
363+ c .t .Errorf ("unexpected input expected %v received %v" , expectedInput , in )
364+ }
365+ c .upsertFeatureDiscouragedDetailsCount ++
366+
367+ return c .mockUpsertFeatureDiscouragedDetailsCfg .outputs [featureID ]
368+ }
369+
342370func newMockmockWebFeatureSpannerClient (
343371 t * testing.T ,
344372 mockUpsertWebFeatureCfg mockUpsertWebFeatureConfig ,
345373 mockUpsertFeatureBaselineStatusCfg mockUpsertFeatureBaselineStatusConfig ,
346374 mockInsertBrowserFeatureAvailabilityCfg mockInsertBrowserFeatureAvailabilityConfig ,
347375 mockUpsertFeatureSpecCfg mockUpsertFeatureSpecConfig ,
348376 mocmockPrecalculateBrowserFeatureSupportEventsCfg mockPrecalculateBrowserFeatureSupportEventsConfig ,
377+ mockUpsertFeatureDiscouragedDetailsCfg mockUpsertFeatureDiscouragedDetailsConfig ,
349378) * mockWebFeatureSpannerClient {
350379 return & mockWebFeatureSpannerClient {
351380 t : t ,
@@ -359,6 +388,8 @@ func newMockmockWebFeatureSpannerClient(
359388 insertBrowserFeatureAvailabilityCountPerFeature : map [string ]int {},
360389 mockPrecalculateBrowserFeatureSupportEventsCfg : mocmockPrecalculateBrowserFeatureSupportEventsCfg ,
361390 precalculateBrowserFeatureSupportEventsCount : 0 ,
391+ mockUpsertFeatureDiscouragedDetailsCfg : mockUpsertFeatureDiscouragedDetailsCfg ,
392+ upsertFeatureDiscouragedDetailsCount : 0 ,
362393 }
363394}
364395
@@ -367,6 +398,7 @@ var ErrBaselineStatusTest = errors.New("baseline status test error")
367398var ErrBrowserFeatureAvailabilityTest = errors .New ("browser feature availability test error" )
368399var ErrFeatureSpecTest = errors .New ("feature spec test error" )
369400var ErrPrecalculateBrowserFeatureSupportEventsTest = errors .New ("precalculate support events error" )
401+ var ErrFeatureDiscouragedDetailsTest = errors .New ("feature discouraged details test error" )
370402
371403// nolint:gochecknoglobals
372404var (
@@ -383,6 +415,7 @@ func TestInsertWebFeatures(t *testing.T) {
383415 mockInsertBrowserFeatureAvailabilityCfg mockInsertBrowserFeatureAvailabilityConfig
384416 mockUpsertFeatureSpecCfg mockUpsertFeatureSpecConfig
385417 mockPrecalculateBrowserFeatureSupportEventsCfg mockPrecalculateBrowserFeatureSupportEventsConfig
418+ mockUpsertFeatureDiscouragedDetailsCfg mockUpsertFeatureDiscouragedDetailsConfig
386419 input map [string ]web_platform_dx__web_features.FeatureValue
387420 expectedError error // Expected error from InsertWebFeatures
388421 }{
@@ -493,7 +526,10 @@ func TestInsertWebFeatures(t *testing.T) {
493526 Name : "Feature 1" ,
494527 Caniuse : nil ,
495528 CompatFeatures : nil ,
496- Discouraged : nil ,
529+ Discouraged : & web_platform_dx__web_features.Discouraged {
530+ AccordingTo : []string {"according-to-1" , "according-to-2" },
531+ Alternatives : []string {"alternative-1" , "alternative-2" },
532+ },
497533 Spec : & web_platform_dx__web_features.StringOrStringArray {
498534 StringArray : []string {"feature1-link1" , "feature1-link2" },
499535 String : nil ,
@@ -558,6 +594,16 @@ func TestInsertWebFeatures(t *testing.T) {
558594 expectedCount : 1 ,
559595 err : nil ,
560596 },
597+ mockUpsertFeatureDiscouragedDetailsCfg : mockUpsertFeatureDiscouragedDetailsConfig {
598+ expectedInputs : map [string ]gcpspanner.FeatureDiscouragedDetails {
599+ "feature1" : {
600+ AccordingTo : []string {"according-to-1" , "according-to-2" },
601+ Alternatives : []string {"alternative-1" , "alternative-2" },
602+ },
603+ },
604+ outputs : map [string ]error {"feature1" : nil },
605+ expectedCount : 1 ,
606+ },
561607 expectedError : nil ,
562608 },
563609 {
@@ -596,6 +642,11 @@ func TestInsertWebFeatures(t *testing.T) {
596642 expectedCount : 0 ,
597643 err : nil ,
598644 },
645+ mockUpsertFeatureDiscouragedDetailsCfg : mockUpsertFeatureDiscouragedDetailsConfig {
646+ expectedInputs : map [string ]gcpspanner.FeatureDiscouragedDetails {},
647+ outputs : map [string ]error {},
648+ expectedCount : 0 ,
649+ },
599650 input : map [string ]web_platform_dx__web_features.FeatureValue {
600651 "feature1" : {
601652 Name : "Feature 1" ,
@@ -704,6 +755,11 @@ func TestInsertWebFeatures(t *testing.T) {
704755 expectedCount : 0 ,
705756 err : nil ,
706757 },
758+ mockUpsertFeatureDiscouragedDetailsCfg : mockUpsertFeatureDiscouragedDetailsConfig {
759+ expectedInputs : map [string ]gcpspanner.FeatureDiscouragedDetails {},
760+ outputs : map [string ]error {},
761+ expectedCount : 0 ,
762+ },
707763 expectedError : ErrBaselineStatusTest ,
708764 },
709765 {
@@ -792,6 +848,11 @@ func TestInsertWebFeatures(t *testing.T) {
792848 expectedCount : 0 ,
793849 err : nil ,
794850 },
851+ mockUpsertFeatureDiscouragedDetailsCfg : mockUpsertFeatureDiscouragedDetailsConfig {
852+ expectedInputs : map [string ]gcpspanner.FeatureDiscouragedDetails {},
853+ outputs : map [string ]error {},
854+ expectedCount : 0 ,
855+ },
795856 expectedError : ErrBrowserFeatureAvailabilityTest ,
796857 },
797858 {
@@ -904,6 +965,11 @@ func TestInsertWebFeatures(t *testing.T) {
904965 expectedCount : 0 ,
905966 err : nil ,
906967 },
968+ mockUpsertFeatureDiscouragedDetailsCfg : mockUpsertFeatureDiscouragedDetailsConfig {
969+ expectedInputs : map [string ]gcpspanner.FeatureDiscouragedDetails {},
970+ outputs : map [string ]error {},
971+ expectedCount : 0 ,
972+ },
907973 expectedError : ErrFeatureSpecTest ,
908974 },
909975 {
@@ -1078,6 +1144,11 @@ func TestInsertWebFeatures(t *testing.T) {
10781144 expectedCount : 1 ,
10791145 err : ErrPrecalculateBrowserFeatureSupportEventsTest ,
10801146 },
1147+ mockUpsertFeatureDiscouragedDetailsCfg : mockUpsertFeatureDiscouragedDetailsConfig {
1148+ expectedInputs : map [string ]gcpspanner.FeatureDiscouragedDetails {},
1149+ outputs : map [string ]error {},
1150+ expectedCount : 0 ,
1151+ },
10811152 expectedError : ErrPrecalculateBrowserFeatureSupportEventsTest ,
10821153 },
10831154 }
@@ -1091,6 +1162,7 @@ func TestInsertWebFeatures(t *testing.T) {
10911162 tc .mockInsertBrowserFeatureAvailabilityCfg ,
10921163 tc .mockUpsertFeatureSpecCfg ,
10931164 tc .mockPrecalculateBrowserFeatureSupportEventsCfg ,
1165+ tc .mockUpsertFeatureDiscouragedDetailsCfg ,
10941166 )
10951167 consumer := NewWebFeaturesConsumer (mockClient )
10961168
@@ -1134,6 +1206,13 @@ func TestInsertWebFeatures(t *testing.T) {
11341206 mockClient .mockPrecalculateBrowserFeatureSupportEventsCfg .expectedCount ,
11351207 mockClient .precalculateBrowserFeatureSupportEventsCount )
11361208 }
1209+
1210+ if mockClient .upsertFeatureDiscouragedDetailsCount !=
1211+ mockClient .mockUpsertFeatureDiscouragedDetailsCfg .expectedCount {
1212+ t .Errorf ("expected %d calls to UpsertFeatureDiscouragedDetails, got %d" ,
1213+ mockClient .mockUpsertFeatureDiscouragedDetailsCfg .expectedCount ,
1214+ mockClient .upsertFeatureDiscouragedDetailsCount )
1215+ }
11371216 })
11381217 }
11391218}
0 commit comments