@@ -154,7 +154,7 @@ func testMissingOneImplFeatureListSuite(
154154 ctx context.Context ,
155155 t * testing.T ,
156156) {
157- t .Run ("bazBrowser" , func (t * testing.T ) {
157+ t .Run ("Query bazBrowser without exclusions " , func (t * testing.T ) {
158158 const targetBrowser = "bazBrowser"
159159 otherBrowsers := []string {
160160 "fooBrowser" ,
@@ -330,6 +330,74 @@ func testMissingOneImplFeatureListSuite(
330330 })
331331
332332 })
333+
334+ t .Run ("with excluded/discouraged features" , func (t * testing.T ) {
335+ // Exclude Feature X
336+ excludedFeatures := []string {"FeatureX" }
337+ for _ , featureKey := range excludedFeatures {
338+ err := spannerClient .InsertExcludedFeatureKey (ctx , featureKey )
339+ if err != nil {
340+ t .Fatalf ("Failed to insert excluded feature key: %v" , err )
341+ }
342+ }
343+
344+ // Discourage FeatureZ
345+ discouragedFeatures := []string {"FeatureZ" }
346+ for _ , featureKey := range discouragedFeatures {
347+ err := spannerClient .UpsertFeatureDiscouragedDetails (ctx , featureKey , FeatureDiscouragedDetails {
348+ AccordingTo : nil ,
349+ Alternatives : nil ,
350+ })
351+ if err != nil {
352+ t .Fatalf ("Failed to upsert feature discouraged details: %v" , err )
353+ }
354+ }
355+
356+ t .Run ("simple query" , func (t * testing.T ) {
357+ targetBrowser := "bazBrowser"
358+ otherBrowsers := []string {"fooBrowser" , "barBrowser" }
359+ targetDate := time .Date (2024 , 4 , 15 , 0 , 0 , 0 , 0 , time .UTC )
360+ pageSize := 25
361+ token := encodeMissingOneImplFeatureListCursor (0 )
362+
363+ expectedResult := & MissingOneImplFeatureListPage {
364+ NextPageToken : nil ,
365+ FeatureList : []MissingOneImplFeature {
366+ // fooBrowser 113 release
367+ // Currently supported features:
368+ // fooBrowser: FeatureX, FeatureZ, FeatureY, FeatureW
369+ // barBrowser: FeatureX, FeatureZ, FeatureY, FeatureW
370+ // bazBrowser: FeatureX, FeatureY
371+ // Missing in on for bazBrowser: FeatureW, FeatureZ
372+ {
373+ WebFeatureID : "FeatureW" ,
374+ },
375+ },
376+ }
377+ // Assert with excluded/discouraged features
378+ assertMissingOneImplFeatureList (
379+ ctx ,
380+ t ,
381+ targetDate ,
382+ targetBrowser ,
383+ otherBrowsers ,
384+ expectedResult ,
385+ & token ,
386+ pageSize ,
387+ )
388+ })
389+
390+ // Clear the excluded and discouraged features after the test
391+ err := spannerClient .ClearExcludedFeatureKeys (ctx )
392+ if err != nil {
393+ t .Fatalf ("Failed to clear excluded feature keys: %v" , err )
394+ }
395+
396+ err = spannerClient .ClearFeatureDiscouragedDetails (ctx )
397+ if err != nil {
398+ t .Fatalf ("Failed to clear feature discouraged details: %v" , err )
399+ }
400+ })
333401}
334402
335403func TestListMissingOneImplFeatureList (t * testing.T ) {
0 commit comments