@@ -7,17 +7,20 @@ import { config } from '../../../src/config.js';
7
7
import { NATIVE , VIDEO } from '../../../src/mediaTypes.js' ;
8
8
9
9
describe ( 'The Criteo bidding adapter' , function ( ) {
10
- let utilsMock ;
10
+ let utilsMock , sandbox ;
11
11
12
12
beforeEach ( function ( ) {
13
13
// Remove FastBid to avoid side effects
14
14
localStorage . removeItem ( 'criteo_fast_bid' ) ;
15
15
utilsMock = sinon . mock ( utils ) ;
16
+
17
+ sandbox = sinon . sandbox . create ( ) ;
16
18
} ) ;
17
19
18
20
afterEach ( function ( ) {
19
21
global . Criteo = undefined ;
20
22
utilsMock . restore ( ) ;
23
+ sandbox . restore ( ) ;
21
24
} ) ;
22
25
23
26
describe ( 'isBidRequestValid' , function ( ) {
@@ -705,6 +708,115 @@ describe('The Criteo bidding adapter', function () {
705
708
expect ( request . data . user ) . to . not . be . null ;
706
709
expect ( request . data . user . ceh ) . to . equal ( 'hashedemail' ) ;
707
710
} ) ;
711
+
712
+ it ( 'should properly build a request without first party data' , function ( ) {
713
+ const bidRequests = [
714
+ {
715
+ bidder : 'criteo' ,
716
+ adUnitCode : 'bid-123' ,
717
+ transactionId : 'transaction-123' ,
718
+ sizes : [ [ 728 , 90 ] ] ,
719
+ params : {
720
+ zoneId : 123
721
+ }
722
+ } ,
723
+ ] ;
724
+
725
+ sandbox . stub ( config , 'getConfig' ) . callsFake ( key => {
726
+ const config = {
727
+ } ;
728
+ return utils . deepAccess ( config , key ) ;
729
+ } ) ;
730
+
731
+ const request = spec . buildRequests ( bidRequests , bidderRequest ) ;
732
+ expect ( request . data . publisher . ext ) . to . equal ( undefined ) ;
733
+ expect ( request . data . user . ext ) . to . equal ( undefined ) ;
734
+ expect ( request . data . slots [ 0 ] . ext ) . to . equal ( undefined ) ;
735
+ } ) ;
736
+
737
+ it ( 'should properly build a request with criteo specific ad unit first party data' , function ( ) {
738
+ const bidRequests = [
739
+ {
740
+ bidder : 'criteo' ,
741
+ adUnitCode : 'bid-123' ,
742
+ transactionId : 'transaction-123' ,
743
+ sizes : [ [ 728 , 90 ] ] ,
744
+ params : {
745
+ zoneId : 123 ,
746
+ ext : {
747
+ bidfloor : 0.75
748
+ }
749
+ }
750
+ } ,
751
+ ] ;
752
+
753
+ sandbox . stub ( config , 'getConfig' ) . callsFake ( key => {
754
+ const config = {
755
+ } ;
756
+ return utils . deepAccess ( config , key ) ;
757
+ } ) ;
758
+
759
+ const request = spec . buildRequests ( bidRequests , bidderRequest ) ;
760
+ expect ( request . data . slots [ 0 ] . ext ) . to . deep . equal ( {
761
+ bidfloor : 0.75 ,
762
+ } ) ;
763
+ } ) ;
764
+
765
+ it ( 'should properly build a request with first party data' , function ( ) {
766
+ const contextData = {
767
+ keywords : [ 'power tools' ] ,
768
+ data : {
769
+ pageType : 'article'
770
+ }
771
+ } ;
772
+ const userData = {
773
+ gender : 'M' ,
774
+ data : {
775
+ registered : true
776
+ }
777
+ } ;
778
+ const bidRequests = [
779
+ {
780
+ bidder : 'criteo' ,
781
+ adUnitCode : 'bid-123' ,
782
+ transactionId : 'transaction-123' ,
783
+ sizes : [ [ 728 , 90 ] ] ,
784
+ params : {
785
+ zoneId : 123 ,
786
+ ext : {
787
+ bidfloor : 0.75
788
+ }
789
+ } ,
790
+ fpd : {
791
+ context : {
792
+ data : {
793
+ someContextAttribute : 'abc'
794
+ }
795
+ }
796
+ }
797
+ } ,
798
+ ] ;
799
+
800
+ sandbox . stub ( config , 'getConfig' ) . callsFake ( key => {
801
+ const config = {
802
+ fpd : {
803
+ context : contextData ,
804
+ user : userData
805
+ }
806
+ } ;
807
+ return utils . deepAccess ( config , key ) ;
808
+ } ) ;
809
+
810
+ const request = spec . buildRequests ( bidRequests , bidderRequest ) ;
811
+ expect ( request . data . publisher . ext ) . to . deep . equal ( contextData ) ;
812
+ expect ( request . data . user . ext ) . to . deep . equal ( userData ) ;
813
+ expect ( request . data . slots [ 0 ] . ext ) . to . deep . equal ( {
814
+ bidfloor : 0.75 ,
815
+ data : {
816
+ someContextAttribute : 'abc'
817
+ }
818
+ } ) ;
819
+ } ) ;
708
820
} ) ;
709
821
710
822
describe ( 'interpretResponse' , function ( ) {
0 commit comments