diff --git a/mParticle-Google-Analytics-Firebase-GA4/MPKitFirebaseGA4Analytics.m b/mParticle-Google-Analytics-Firebase-GA4/MPKitFirebaseGA4Analytics.m index 458b811..7e66ae3 100755 --- a/mParticle-Google-Analytics-Firebase-GA4/MPKitFirebaseGA4Analytics.m +++ b/mParticle-Google-Analytics-Firebase-GA4/MPKitFirebaseGA4Analytics.m @@ -536,7 +536,7 @@ - (NSMutableArray *)getParametersForProducts:(id)products { if (product.price) { [productParameters setObject:product.price forKey:kFIRParameterPrice]; } - if (product.position) { + if (product.position >= 0) { id indexParameter = @(product.position); [productParameters setObject:indexParameter forKey:kFIRParameterIndex]; } diff --git a/mParticle-Google-Analytics-Firebase-GA4Tests/MPKitFirebaseGA4AnalyticsTests.m b/mParticle-Google-Analytics-Firebase-GA4Tests/MPKitFirebaseGA4AnalyticsTests.m index 217e0fe..ddeedd2 100644 --- a/mParticle-Google-Analytics-Firebase-GA4Tests/MPKitFirebaseGA4AnalyticsTests.m +++ b/mParticle-Google-Analytics-Firebase-GA4Tests/MPKitFirebaseGA4AnalyticsTests.m @@ -312,6 +312,27 @@ - (void)testProductParameters { XCTAssertEqual([item count], 9); } +- (void)testProductPositionEqualZero { + MPKitFirebaseGA4Analytics *exampleKit = [[MPKitFirebaseGA4Analytics alloc] init]; + [exampleKit didFinishLaunchingWithConfiguration:@{}]; + + MPProduct *product = [[MPProduct alloc] initWithName:@"expensivePotato" sku:@"SKU123" quantity:@1 price:@40.0]; + NSMutableDictionary *testProductCustomAttributes = [[@{@"productCustomAttribute": @"potato", @"store": @"Target"} mutableCopy] mutableCopy]; + product.brand = @"LV"; + product.category = @"vegetable"; + product.position = 0; + product.userDefinedAttributes = testProductCustomAttributes; + + MPCommerceEvent *event = [[MPCommerceEvent alloc] initWithImpressionName:@"suggested products list" product:product]; + NSSet *impressionProducts = event.impressions[@"suggested products list"]; + + NSArray *itemsArray = [exampleKit getParametersForProducts:impressionProducts]; + id item = itemsArray[0]; + + // The item inside itemsArray should include 9 parameters in total including the 2 product custom attributes + XCTAssertEqual([item count], 9); +} + - (void)testCommerceEventCheckoutOptions { MPKitFirebaseGA4Analytics *exampleKit = [[MPKitFirebaseGA4Analytics alloc] init]; [exampleKit didFinishLaunchingWithConfiguration:@{}];