From 0b62ce6b8ab9731cb6076a1302869bc6d91701a0 Mon Sep 17 00:00:00 2001 From: Niall Brennan Date: Thu, 2 Sep 2021 17:08:57 +0100 Subject: [PATCH 1/2] avoid null value error --- .../firebase/FirebaseIntegration.java | 3 ++- .../integration/firebase/FirebaseTest.java | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java b/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java index a1dcb8e..47d5e14 100644 --- a/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java +++ b/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java @@ -26,6 +26,7 @@ import static com.segment.analytics.internal.Utils.hasPermission; import static com.segment.analytics.internal.Utils.isNullOrEmpty; +import static java.util.Objects.isNull; /** * Google Analytics for Firebase is a free app measurement solution that provides insight on app @@ -211,7 +212,7 @@ && isNullOrEmpty(properties.currency())) { } else { property = makeKey(property); } - if (property.equals(Param.ITEMS)) { + if (property.equals(Param.ITEMS) && value != null) { List products = properties.getList("products", ValueMap.class); ArrayList mappedProducts = formatProducts(products); bundle.putParcelableArrayList(property, mappedProducts); diff --git a/src/test/java/com/segment/analytics/android/integration/firebase/FirebaseTest.java b/src/test/java/com/segment/analytics/android/integration/firebase/FirebaseTest.java index f0f5235..091c7af 100644 --- a/src/test/java/com/segment/analytics/android/integration/firebase/FirebaseTest.java +++ b/src/test/java/com/segment/analytics/android/integration/firebase/FirebaseTest.java @@ -152,6 +152,23 @@ public void trackPurchaseWithProducts() { verify(firebase).logEvent(eq("purchase"), bundleEq(expected)); } + @Test + public void trackPurchaseWithNullProducts() { + Properties properties = new Properties() + .putValue("revenue", 100.0) + .putValue("currency", "USD") + .putValue("products", null); + + integration.track(new TrackPayload.Builder().anonymousId("1234").properties(properties).event("Order Completed").build()); + + Bundle expected = new Bundle(); + expected.putDouble("value", 100.0); + expected.putString("currency", "USD"); + expected.putString("items", null); + + verify(firebase).logEvent(eq("purchase"), bundleEq(expected)); + } + @Test public void trackWithEventNameTransformation() { Properties properties = new Properties() From e9bf4661d81c9d55676d4026fc75ace0e99fafdc Mon Sep 17 00:00:00 2001 From: Niall Brennan Date: Thu, 2 Sep 2021 17:10:49 +0100 Subject: [PATCH 2/2] avoid null value error --- .../android/integrations/firebase/FirebaseIntegration.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java b/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java index 47d5e14..a714665 100644 --- a/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java +++ b/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java @@ -26,7 +26,6 @@ import static com.segment.analytics.internal.Utils.hasPermission; import static com.segment.analytics.internal.Utils.isNullOrEmpty; -import static java.util.Objects.isNull; /** * Google Analytics for Firebase is a free app measurement solution that provides insight on app