github.com/prebid/prebid-server@v0.275.0/openrtb_ext/deal_tier_test.go (about) 1 package openrtb_ext 2 3 import ( 4 "encoding/json" 5 "testing" 6 7 "github.com/prebid/openrtb/v19/openrtb2" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestReadDealTiersFromImp(t *testing.T) { 12 testCases := []struct { 13 description string 14 impExt json.RawMessage 15 expectedResult DealTierBidderMap 16 expectedError string 17 }{ 18 { 19 description: "Nil", 20 impExt: nil, 21 expectedResult: DealTierBidderMap{}, 22 }, 23 { 24 description: "None", 25 impExt: json.RawMessage(``), 26 expectedResult: DealTierBidderMap{}, 27 }, 28 { 29 description: "Empty Object", 30 impExt: json.RawMessage(`{}`), 31 expectedResult: DealTierBidderMap{}, 32 }, 33 { 34 description: "imp.ext - no prebid but with other params", 35 impExt: json.RawMessage(`{"appnexus": {"dealTier": {"minDealTier": 5, "prefix": "anyPrefix"}, "placementId": 12345}, "tid": "1234"}`), 36 expectedResult: DealTierBidderMap{}, 37 }, 38 { 39 description: "imp.ext.prebid - nil", 40 impExt: json.RawMessage(`{"prebid": null}`), 41 expectedResult: DealTierBidderMap{}, 42 }, 43 { 44 description: "imp.ext.prebid - empty", 45 impExt: json.RawMessage(`{"prebid": {}}`), 46 expectedResult: DealTierBidderMap{}, 47 }, 48 { 49 description: "imp.ext.prebid - no bidder but with other params", 50 impExt: json.RawMessage(`{"prebid": {"supportdeals": true}}`), 51 expectedResult: DealTierBidderMap{}, 52 }, 53 { 54 description: "imp.ext.prebid.bidder - one", 55 impExt: json.RawMessage(`{"prebid": {"bidder": {"appnexus": {"dealTier": {"minDealTier": 5, "prefix": "anyPrefix"}, "placementId": 12345}}}}`), 56 expectedResult: DealTierBidderMap{BidderAppnexus: {Prefix: "anyPrefix", MinDealTier: 5}}, 57 }, 58 { 59 description: "imp.ext.prebid.bidder - one with other params", 60 impExt: json.RawMessage(`{"prebid": {"bidder": {"appnexus": {"dealTier": {"minDealTier": 5, "prefix": "anyPrefix"}, "placementId": 12345}}, "supportdeals": true}, "tid": "1234"}`), 61 expectedResult: DealTierBidderMap{BidderAppnexus: {Prefix: "anyPrefix", MinDealTier: 5}}, 62 }, 63 { 64 description: "imp.ext.prebid.bidder - multiple", 65 impExt: json.RawMessage(`{"prebid": {"bidder": {"appnexus": {"dealTier": {"minDealTier": 5, "prefix": "appnexusPrefix"}, "placementId": 12345}, "rubicon": {"dealTier": {"minDealTier": 8, "prefix": "rubiconPrefix"}, "placementId": 12345}}}}`), 66 expectedResult: DealTierBidderMap{BidderAppnexus: {Prefix: "appnexusPrefix", MinDealTier: 5}, BidderRubicon: {Prefix: "rubiconPrefix", MinDealTier: 8}}, 67 }, 68 { 69 description: "imp.ext.prebid.bidder - one without deal tier", 70 impExt: json.RawMessage(`{"prebid": {"bidder": {"appnexus": {"placementId": 12345}}}}`), 71 expectedResult: DealTierBidderMap{}, 72 }, 73 { 74 description: "imp.ext.prebid.bidder - error", 75 impExt: json.RawMessage(`{"prebid": {"bidder": {"appnexus": {"dealTier": "wrong type", "placementId": 12345}}}}`), 76 expectedError: "json: cannot unmarshal string into Go struct field .prebid.bidder.dealTier of type openrtb_ext.DealTier", 77 }, 78 } 79 80 for _, test := range testCases { 81 imp := openrtb2.Imp{Ext: test.impExt} 82 83 result, err := ReadDealTiersFromImp(imp) 84 85 assert.Equal(t, test.expectedResult, result, test.description+":result") 86 87 if len(test.expectedError) == 0 { 88 assert.NoError(t, err, test.description+":error") 89 } else { 90 assert.EqualError(t, err, test.expectedError, test.description+":error") 91 } 92 } 93 }