def test_add_single_item(self): """ Basket.add() a single item is successful. """ basket = Basket() basket.add("pasta") self.assertEqual(len(basket), 1)
def test_add_two_items(self): """ Adding more than one item increases basket length. """ basket = Basket() basket.add("pasta") basket.add("twix") self.assertEqual(len(basket), 2)
def test_get_total_with_one_offer(self): """ Basket get_total returns correct value with a bogof offer applied. """ product_store = self._create_product_store() bogof_blueberries = MultiBuyOffer("blueberries", 1, 1) basket = Basket(product_store) basket.add("blueberries", 2) basket.add("fish") self.assertEqual(basket.get_total(offers=[bogof_blueberries]), Decimal('5.20'))
def test_get_total_with_dependent_discount_offer(self): """ Basket get_total returns correct value with dependent discount offer applied. """ product_store = self._create_product_store() twix_pasta_20_discount = DependentDiscountOffer("twix", "pasta", Decimal("0.2")) basket = Basket(product_store) basket.add("twix", 2) basket.add("pasta") self.assertEqual(basket.get_total(offers=[twix_pasta_20_discount]), Decimal('2.94'))
def test_one_with_one_dependent(self): """ One target product in the presence of one dependent product triggers discount. """ product_store = self._create_product_store() twix_20_discount = DependentDiscountOffer("twix", "pasta", Decimal("0.2")) basket = Basket(product_store) twix_basketitem = basket.add("twix") basket.add("pasta") self.assertEqual(twix_20_discount.calculate_line_total(twix_basketitem, product_store, basket), Decimal("0.64"))
class BasketTest(unittest.TestCase): def setUp(self): ps = ProductStore.load_from_config_file() os = OfferStore.load_from_config_file() self.basket = Basket(ps, os) def _get_total_price(self, response): total_price = 0 for item in response: total_price = total_price + item['price_after_discount'] return total_price def test_empty_basket_view(self): self.assertEqual([], self.basket.status()) def test_no_offers(self): self.basket.add('AP1') self.basket.add('CH1') response = self.basket.status() price = self._get_total_price(response) self.assertEqual(price, 9.11) def test_multi_offers(self): self.basket.add('AP1') self.basket.add('AP1') self.basket.add('AP1') self.basket.add('CH1') self.basket.add('MK1') response = self.basket.status() price = self._get_total_price(response) self.assertEqual(price, 16.61)
def handle_file(message): try: if message.photo: file_id = message.photo[-1].file_id file_info = bot.get_file(file_id) file = requests.get( 'https://api.telegram.org/file/bot{0}/{1}'.format( TOKEN, file_info.file_path)) with open( dir_path + '\imgs\%s_%s.png' % (file_id, message.chat.id), 'wb') as f: f.write(file.content) decoded_barcode = decode( Image.open(dir_path + '\imgs\%s_%s.png' % (file_id, message.chat.id))) bot.send_message(message.chat.id, u"Оберіть Опцію") if not decoded_barcode: bot.send_message( message.chat.id, u'Штрих код не знайдено, спробуйте ще раз') else: res = tmp_geting_data(str(int(decoded_barcode[0].data))) for basket in basket_list: if basket.chat_id == message.chat.id: basket.counter += 1 basket.add(res) basket.add_barcode_to_list( str(int(decoded_barcode[0].data))) tmp_list = [item.chat_id for item in basket_list] if message.chat.id not in tmp_list: tmp_basket = Basket(message.chat.id) tmp_basket.counter += 1 tmp_basket.add(res) tmp_basket.add_barcode_to_list( str(int(decoded_barcode[0].data))) basket_list.append(tmp_basket) # time.sleep(5) # print(basket_list) mp.track(message.chat.id, 'Handle file') # bot.send_message(message.chat.id, u"Оберіть Опцію") os.remove(dir_path + '/imgs/%s_%s.png' % (file_id, message.chat.id)) except Exception as err: logger.write_logs(handle_file.__name__, err)
class TestBasket(TestCase): def setUp(self): catalogue = create_catalogue() offers = create_offers() self.basket = Basket(catalogue, offers) def test_add(self): self.basket.add("sardines") self.assertEqual(self.basket._items[0].name, "Sardines") def test_remove(self): self.basket.add("sardines") self.basket.add("biscuits") self.basket.remove("biscuits") self.assertEqual(len(self.basket._items), 1) self.assertEqual(self.basket._items[0].name, "Sardines") def test_remove_quantity(self): self.basket.add("sardines", quantity=2) self.basket.add("biscuits", quantity=3) self.basket.remove("biscuits", 2) self.assertEqual(len(self.basket._items), 2) self.assertEqual(self.basket._items[0].name, "Sardines") self.assertEqual(self.basket._items[1].name, "Biscuits") self.assertEqual(self.basket._items[1].quantity, 1) def test_subtotal(self): self.basket.add("baked beans") self.basket.add("biscuits") self.assertEqual(self.basket.subtotal, 2.19) def test_buy_two_get_one_free_discounts(self): self.basket.add("baked beans", quantity=4) self.basket.add("biscuits") self.assertEqual(self.basket.subtotal, 5.16) self.assertEqual(self.basket.discount, 0.99) self.assertEqual(self.basket.total, 4.17) def test_percentage_off_discount(self): self.basket.add("sardines", quantity=3) self.basket.add("biscuits") self.assertEqual(self.basket.subtotal, 6.87) self.assertEqual(self.basket.discount, 1.42) self.assertEqual(self.basket.total, 5.45) def test_cheapest_free_discount(self): self.basket.add("shampoo (large)", quantity=3) self.basket.add("shampoo (medium)") self.basket.add("shampoo (small)", quantity=2) self.assertEqual(self.basket.subtotal, 17.00) self.assertEqual(self.basket.discount, 5.50) self.assertEqual(self.basket.total, 11.50) def test_mixed_discount(self): self.basket.add("baked beans", 2) self.basket.add("biscuits") self.basket.add("sardines", 2) self.assertEqual(self.basket.subtotal, 6.96) self.assertEqual(self.basket.discount, 0.95) self.assertEqual(self.basket.total, 6.01) def test_empty_basket(self): self.assertEqual(self.basket.subtotal, 0) self.assertEqual(self.basket.discount, 0) self.assertEqual(self.basket.total, 0)
class TestBasket(unittest.TestCase): def setUp(self): self.basket = Basket() self.beans = Item("Beans", 0.22) self.milk = Item("Milk", 0.60) def test_basket_starts_empty(self): self.assertEqual(0, self.basket.number_of_items()) def test_can_add_item_to_basket(self): self.basket.add(self.beans) self.assertEqual(1, self.basket.number_of_items()) def test_can_remove_item_from_basket(self): self.basket.add(self.beans) self.basket.add(self.milk) self.basket.remove(self.beans) self.assertEqual(1, self.basket.number_of_items()) def test_can_empty_basket(self): self.basket.add(self.beans) self.basket.add(self.milk) self.basket.empty() self.assertEqual(0, self.basket.number_of_items()) def test_can_get_total_cost_of_items_in_basket(self): self.basket.add(self.beans) self.basket.add(self.milk) self.assertEqual(0.82, self.basket.get_total())
class TestItem(unittest.TestCase): def setUp(self): self.beans = Item("Beans", 0.20) self.milk = Item("Milk", 0.75) self.basket = Basket() self.discount = Discount() def test_bogof_list_starts_empty(self): self.assertEqual(0, len(self.discount.bogof_items)) def test_can_add_item_to_bogof_list(self): self.discount.add_to_bogof(self.beans) self.assertEqual(1, len(self.discount.bogof_items)) def test_bogof_2_beans_is_20_pence(self): self.basket.add(self.beans) self.basket.add(self.beans) bogof_discount = self.discount.bogof_for_item(self.basket, self.beans) self.assertEqual(0.20, bogof_discount) def test_bogof_1_beans_is_0_pence(self): self.basket.add(self.beans) bogof_discount = self.discount.bogof_for_item(self.basket, self.beans) self.assertEqual(0.0, bogof_discount) def test_bogof_3_beans_is_20_pence(self): self.basket.add(self.beans) self.basket.add(self.beans) self.basket.add(self.beans) bogof_discount = self.discount.bogof_for_item(self.basket, self.beans) self.assertEqual(0.20, bogof_discount) def test_bogof_4_beans_is_40_pence(self): self.basket.add(self.beans) self.basket.add(self.beans) self.basket.add(self.beans) self.basket.add(self.beans) bogof_discount = self.discount.bogof_for_item(self.basket, self.beans) self.assertEqual(0.40, bogof_discount) def test_bogof_discount_basket_95_pence(self): self.basket.add(self.beans) self.basket.add(self.beans) self.basket.add(self.milk) self.basket.add(self.milk) self.discount.add_to_bogof(self.beans) self.discount.add_to_bogof(self.milk) bogof_discount = self.discount.bogof_discount(self.basket) self.assertEqual(0.95, bogof_discount) def test_10_percent_discount_on_total_over_20_pounds(self): dvd = Item("DVD", 20.00) self.basket.add(self.beans) self.basket.add(self.beans) self.basket.add(dvd) basket_total = self.discount.extra_10_per_cent(self.basket) self.assertEqual(18.36, basket_total) def test_extra_2_per_cent_discount__cust_has_loyalty_card(self): customer = Customer("Jack") customer.has_loyalty_card = True dvd = Item("DVD", 20.00) self.basket.add(dvd) basket_total = self.discount.extra_2_percent_for_loyal_cust( self.basket, customer) self.assertEqual(19.60, basket_total) def test_extra_2_per_cent_discount__cust_does_not_have_loyalty_card(self): customer = Customer("Jack") dvd = Item("DVD", 20.00) self.basket.add(dvd) basket_total = self.discount.extra_2_percent_for_loyal_cust( self.basket, customer) self.assertEqual(20.00, basket_total)
class TestBasket(unittest.TestCase): def setUp(self): self.basket = Basket() def tearDown(self): self.basket = None def testBasketAppear(self): assert self.basket, "Basket must be defined." def testBasketCanAddProduct(self): self.basket.add(Product()) def testBsketRemoveProduct(self): product = Product() self.basket.add(product) self.basket.remove(product) assert len(self.basket.products) == 0, "Basket must be empty on all products deleted" self.basket.add(product) self.basket.add(product) self.basket.add(product) self.basket.remove(product) assert self.basket.quantity_for(product) == 2, "Basket mst actually remove product from" def testBasketStoresQuantity(self): product = Product(1) product2 = Product(2) self.basket.add(product,5) self.basket.add(product2,3) assert self.basket.quantity_for(product2) == 3 assert self.basket.quantity_for(product) == 5