def test_is_available_without_start_and_without_end(self, now, expected): article = create_article( available_from=None, available_until=None) with freeze_time(now): self.assertEqual(article.is_available, expected)
def test_is_available_with_start_and_end(self, now, expected): article = create_article( available_from=datetime(2014, 9, 15, 18, 0, 0), available_until=datetime(2014, 9, 23, 18, 0, 0)) with freeze_time(now): self.assertEqual(article.is_available, expected)
def test_order_article(self): article_before = create_article(party=self.party, quantity=5) self.db.session.add(article_before) self.db.session.commit() self.assertEqual(article_before.quantity, 5) url = '/shop/order_single/{}'.format(str(article_before.id)) form_data = { 'first_names': 'Hiro', 'last_name': 'Protagonist', 'date_of_birth': '01.01.1970', 'country': 'State of Mind', 'zip_code': '31337', 'city': 'Atrocity', 'street': 'L33t Street 101', 'quantity': 1, # TODO: Test with `3` if limitation is removed. } with self.client(user=self.orderer) as client: response = client.post(url, data=form_data) self.assertEqual(response.status_code, 302) self.assertEqual(response.headers.get('Location'), 'http://example.com/shop/order_placed') article_afterwards = Article.query.get(article_before.id) self.assertEqual(article_afterwards.quantity, 4) order = Order.query.filter_by(placed_by=self.orderer).one() self.assertEqual(order.order_number, 'AEC-01-B00005') self.assertEqual(len(order.items), 1) self.assertEqual(order.items[0].article.id, article_before.id) self.assertEqual(order.items[0].price, article_before.price) self.assertEqual(order.items[0].tax_rate, article_before.tax_rate) self.assertEqual(order.items[0].quantity, 1)
def build_article(self, serial_number, description, price, tax_rate): return create_article( party=self.party, serial_number=serial_number, description=description, price=price, tax_rate=tax_rate, quantity=10)
def create_order_with_items(self, price_quantity_pairs): user = create_user(42) order = create_order(placed_by=user) for price, quantity in price_quantity_pairs: article = create_article(price=price, quantity=quantity) order.add_item(article, quantity) return order
def create_article(self, quantity): article = create_article(party=self.party, quantity=quantity) self.db.session.add(article) return article
def create_item(self, quantity): article = create_article() return CartItem(article, quantity)