@Test public void testRemoveProduct() throws Exception { ProductBagApi bags = new ProductBagApi(new MockContext()); // error scenarios assertFalse(bags.removeProduct(null, new Product.Builder("name", "sku", 1.0).build())); assertFalse(bags.removeProduct("whatever", new Product.Builder("name", "sku", 1.0).build())); assertFalse(bags.removeProduct("whatever", null)); // remove a product that doesn't exist Product product = new Product.Builder("product name", "product sku", 1).build(); Product product2 = new Product.Builder("product name 2", "product sku 2", 1).build(); bags.addProduct("some bag name", product); ProductBag bag = bags.findBag("some bag name"); assertEquals("some bag name", bag.getName()); assertEquals(1, bag.getProducts().size()); String bagString = bags.toString(); assertFalse(bags.removeProduct("some bag name 2", product)); assertFalse(bags.removeProduct("some bag name", product2)); assertEquals(bagString, bags.toString()); assertTrue(bags.removeProduct("some bag name", product)); assertEquals(1, bags.getBags().size()); assertEquals(0, bag.getProducts().size()); assertNotEquals(bagString, bags.toString()); }