@Test public void testTrackEcommerceOrder() throws Exception { Locale.setDefault(Locale.US); EcommerceItems items = new EcommerceItems(); items.addItem(new EcommerceItems.Item("fake_sku").name("fake_product").category("fake_category").price(200).quantity(2)); items.addItem(new EcommerceItems.Item("fake_sku_2").name("fake_product_2").category("fake_category_2").price(400).quantity(3)); track().order("orderId", 10020).subTotal(7002).tax(2000).shipping(1000).discount(0).items(items).with(mTracker); verify(mTracker).track(mCaptor.capture()); TrackMe tracked = mCaptor.getValue(); assertEquals(tracked.get(QueryParams.GOAL_ID), "0"); assertEquals(tracked.get(QueryParams.ORDER_ID), "orderId"); assertEquals(tracked.get(QueryParams.REVENUE), "100.20"); assertEquals(tracked.get(QueryParams.SUBTOTAL), "70.02"); assertEquals(tracked.get(QueryParams.TAX), "20.00"); assertEquals(tracked.get(QueryParams.SHIPPING), "10.00"); assertEquals(tracked.get(QueryParams.DISCOUNT), "0.00"); String ecommerceItemsJson = tracked.get(QueryParams.ECOMMERCE_ITEMS); new JSONArray(ecommerceItemsJson); // will throw exception if not valid json assertTrue(ecommerceItemsJson.contains("[\"fake_sku\",\"fake_product\",\"fake_category\",\"2.00\",\"2\"]")); assertTrue(ecommerceItemsJson.contains("[\"fake_sku_2\",\"fake_product_2\",\"fake_category_2\",\"4.00\",\"3\"]")); }
@Test public void testTrackEcommerceOrder() throws Exception { Locale.setDefault(Locale.US); EcommerceItems items = new EcommerceItems(); items.addItem(new EcommerceItems.Item("fake_sku").name("fake_product").category("fake_category").price(200).quantity(2)); items.addItem(new EcommerceItems.Item("fake_sku_2").name("fake_product_2").category("fake_category_2").price(400).quantity(3)); track().order("orderId", 10020).subTotal(7002).tax(2000).shipping(1000).discount(0).items(items).with(mTracker); verify(mTracker).track(mCaptor.capture()); TrackMe tracked = mCaptor.getValue(); assertEquals(tracked.get(QueryParams.GOAL_ID), "0"); assertEquals(tracked.get(QueryParams.ORDER_ID), "orderId"); assertEquals(tracked.get(QueryParams.REVENUE), "100.20"); assertEquals(tracked.get(QueryParams.SUBTOTAL), "70.02"); assertEquals(tracked.get(QueryParams.TAX), "20.00"); assertEquals(tracked.get(QueryParams.SHIPPING), "10.00"); assertEquals(tracked.get(QueryParams.DISCOUNT), "0.00"); String ecommerceItemsJson = tracked.get(QueryParams.ECOMMERCE_ITEMS); new JSONArray(ecommerceItemsJson); // will throw exception if not valid json assertTrue(ecommerceItemsJson.contains("[\"fake_sku\",\"fake_product\",\"fake_category\",\"2.00\",\"2\"]")); assertTrue(ecommerceItemsJson.contains("[\"fake_sku_2\",\"fake_product_2\",\"fake_category_2\",\"4.00\",\"3\"]")); }
@Override public TrackMe build() { if (mEcommerceItems == null) mEcommerceItems = new EcommerceItems(); return new TrackMe(getBaseTrackMe()) .set(QueryParams.GOAL_ID, 0) .set(QueryParams.ORDER_ID, mOrderId) .set(QueryParams.REVENUE, CurrencyFormatter.priceString(mGrandTotal)) .set(QueryParams.ECOMMERCE_ITEMS, mEcommerceItems.toJson()) .set(QueryParams.SUBTOTAL, CurrencyFormatter.priceString(mSubTotal)) .set(QueryParams.TAX, CurrencyFormatter.priceString(mTax)) .set(QueryParams.SHIPPING, CurrencyFormatter.priceString(mShipping)) .set(QueryParams.DISCOUNT, CurrencyFormatter.priceString(mDiscount)); } }
@Override public TrackMe build() { if (mEcommerceItems == null) mEcommerceItems = new EcommerceItems(); return new TrackMe(getBaseTrackMe()) .set(QueryParams.GOAL_ID, 0) .set(QueryParams.ORDER_ID, mOrderId) .set(QueryParams.REVENUE, CurrencyFormatter.priceString(mGrandTotal)) .set(QueryParams.ECOMMERCE_ITEMS, mEcommerceItems.toJson()) .set(QueryParams.SUBTOTAL, CurrencyFormatter.priceString(mSubTotal)) .set(QueryParams.TAX, CurrencyFormatter.priceString(mTax)) .set(QueryParams.SHIPPING, CurrencyFormatter.priceString(mShipping)) .set(QueryParams.DISCOUNT, CurrencyFormatter.priceString(mDiscount)); } }
/** * Tracks an Ecommerce order, including any ecommerce item previously added to the order. All * monetary values should be passed as an integer number of cents (or the smallest integer unit * for your currency) * * @param orderId (required) A unique string identifying the order * @param grandTotal (required) total amount of the order, in cents */ public Order order(String orderId, int grandTotal) { return new Order(this, orderId, grandTotal); }
/** * Tracks an Ecommerce order, including any ecommerce item previously added to the order. All * monetary values should be passed as an integer number of cents (or the smallest integer unit * for your currency) * * @param orderId (required) A unique string identifying the order * @param grandTotal (required) total amount of the order, in cents */ public Order order(String orderId, int grandTotal) { return new Order(this, orderId, grandTotal); }