@@ -4660,6 +4660,151 @@ describe(`ConstructorIO - Tracker${bundledDescriptionSuffix}`, () => {
46604660
46614661 expect ( tracker . trackRecommendationView ( requiredParameters ) ) . to . equal ( true ) ;
46624662 } ) ;
4663+
4664+ it ( 'Should respond with a valid response when seedItemIds is an array' , ( done ) => {
4665+ const seedItemIds = [ '123' ] ;
4666+ const { tracker } = new ConstructorIO ( {
4667+ apiKey : testApiKey ,
4668+ fetch : fetchSpy ,
4669+ ...requestQueueOptions ,
4670+ } ) ;
4671+ const requiredParamsWithSeedItemIds = {
4672+ seedItemIds,
4673+ ...requiredParameters ,
4674+ } ;
4675+
4676+ tracker . on ( 'success' , ( responseParams ) => {
4677+ const requestParams = helpers . extractBodyParamsFromFetch ( fetchSpy ) ;
4678+
4679+ // Request
4680+ expect ( fetchSpy ) . to . have . been . called ;
4681+ expect ( requestParams ) . to . have . property ( 'seed_item_ids' ) . to . deep . equal ( [ '123' ] ) ;
4682+
4683+ // Response
4684+ expect ( responseParams ) . to . have . property ( 'method' ) . to . equal ( 'POST' ) ;
4685+ expect ( responseParams ) . to . have . property ( 'message' ) ;
4686+
4687+ done ( ) ;
4688+ } ) ;
4689+
4690+ expect ( tracker . trackRecommendationView ( requiredParamsWithSeedItemIds ) ) . to . equal ( true ) ;
4691+ } ) ;
4692+
4693+ it ( 'Should respond with a valid response and convert seedItemIds to an array if it\'s is a number' , ( done ) => {
4694+ const seedItemIds = 123 ;
4695+ const { tracker } = new ConstructorIO ( {
4696+ apiKey : testApiKey ,
4697+ fetch : fetchSpy ,
4698+ ...requestQueueOptions ,
4699+ } ) ;
4700+ const requiredParamsWithSeedItemIds = {
4701+ seedItemIds,
4702+ ...requiredParameters ,
4703+ } ;
4704+
4705+ tracker . on ( 'success' , ( responseParams ) => {
4706+ const requestParams = helpers . extractBodyParamsFromFetch ( fetchSpy ) ;
4707+
4708+ // Request
4709+ expect ( fetchSpy ) . to . have . been . called ;
4710+ expect ( requestParams ) . to . have . property ( 'seed_item_ids' ) . to . deep . equal ( [ '123' ] ) ;
4711+
4712+ // Response
4713+ expect ( responseParams ) . to . have . property ( 'method' ) . to . equal ( 'POST' ) ;
4714+ expect ( responseParams ) . to . have . property ( 'message' ) ;
4715+
4716+ done ( ) ;
4717+ } ) ;
4718+
4719+ expect ( tracker . trackRecommendationView ( requiredParamsWithSeedItemIds ) ) . to . equal ( true ) ;
4720+ } ) ;
4721+
4722+ it ( 'Should respond with a valid response and convert seedItemIds to an array if it\'s a string' , ( done ) => {
4723+ const seedItemIds = '123' ;
4724+ const { tracker } = new ConstructorIO ( {
4725+ apiKey : testApiKey ,
4726+ fetch : fetchSpy ,
4727+ ...requestQueueOptions ,
4728+ } ) ;
4729+ const requiredParamsWithSeedItemIds = {
4730+ seedItemIds,
4731+ ...requiredParameters ,
4732+ } ;
4733+
4734+ tracker . on ( 'success' , ( responseParams ) => {
4735+ const requestParams = helpers . extractBodyParamsFromFetch ( fetchSpy ) ;
4736+
4737+ // Request
4738+ expect ( fetchSpy ) . to . have . been . called ;
4739+ expect ( requestParams ) . to . have . property ( 'seed_item_ids' ) . to . deep . equal ( [ '123' ] ) ;
4740+
4741+ // Response
4742+ expect ( responseParams ) . to . have . property ( 'method' ) . to . equal ( 'POST' ) ;
4743+ expect ( responseParams ) . to . have . property ( 'message' ) ;
4744+
4745+ done ( ) ;
4746+ } ) ;
4747+
4748+ expect ( tracker . trackRecommendationView ( requiredParamsWithSeedItemIds ) ) . to . equal ( true ) ;
4749+ } ) ;
4750+
4751+ it ( 'Should respond with a valid response and omit seed_item_ids if seedItemIds is null' , ( done ) => {
4752+ const seedItemIds = null ;
4753+ const { tracker } = new ConstructorIO ( {
4754+ apiKey : testApiKey ,
4755+ fetch : fetchSpy ,
4756+ ...requestQueueOptions ,
4757+ } ) ;
4758+ const requiredParamsWithSeedItemIds = {
4759+ seedItemIds,
4760+ ...requiredParameters ,
4761+ } ;
4762+
4763+ tracker . on ( 'success' , ( responseParams ) => {
4764+ const requestParams = helpers . extractBodyParamsFromFetch ( fetchSpy ) ;
4765+
4766+ // Request
4767+ expect ( fetchSpy ) . to . have . been . called ;
4768+ expect ( requestParams ) . to . not . have . property ( 'seed_item_ids' ) ;
4769+
4770+ // Response
4771+ expect ( responseParams ) . to . have . property ( 'method' ) . to . equal ( 'POST' ) ;
4772+ expect ( responseParams ) . to . have . property ( 'message' ) ;
4773+
4774+ done ( ) ;
4775+ } ) ;
4776+
4777+ expect ( tracker . trackRecommendationView ( requiredParamsWithSeedItemIds ) ) . to . equal ( true ) ;
4778+ } ) ;
4779+
4780+ it ( 'Should respond with a valid response and omit seed_item_ids if seedItemIds is an object' , ( done ) => {
4781+ const seedItemIds = { seedItemIds : '123' } ;
4782+ const { tracker } = new ConstructorIO ( {
4783+ apiKey : testApiKey ,
4784+ fetch : fetchSpy ,
4785+ ...requestQueueOptions ,
4786+ } ) ;
4787+ const requiredParamsWithSeedItemIds = {
4788+ seedItemIds,
4789+ ...requiredParameters ,
4790+ } ;
4791+
4792+ tracker . on ( 'success' , ( responseParams ) => {
4793+ const requestParams = helpers . extractBodyParamsFromFetch ( fetchSpy ) ;
4794+
4795+ // Request
4796+ expect ( fetchSpy ) . to . have . been . called ;
4797+ expect ( requestParams ) . to . not . have . property ( 'seed_item_ids' ) ;
4798+
4799+ // Response
4800+ expect ( responseParams ) . to . have . property ( 'method' ) . to . equal ( 'POST' ) ;
4801+ expect ( responseParams ) . to . have . property ( 'message' ) ;
4802+
4803+ done ( ) ;
4804+ } ) ;
4805+
4806+ expect ( tracker . trackRecommendationView ( requiredParamsWithSeedItemIds ) ) . to . equal ( true ) ;
4807+ } ) ;
46634808 } ) ;
46644809
46654810 describe ( 'trackRecommendationClick' , ( ) => {
0 commit comments