def setUp(self): super(CouponReportCSVViewTest, self).setUp() self.user = self.create_user(full_name="Test User", is_staff=True) self.client.login(username=self.user.username, password=self.password) self.course = CourseFactory() self.verified_seat = self.course.create_or_update_seat( 'verified', False, 0, self.partner) self.stock_record = StockRecord.objects.filter( product=self.verified_seat).first() partner1 = PartnerFactory(name='Tester1') catalog1 = Catalog.objects.create(name="Test catalog 1", partner=partner1) catalog1.stock_records.add(self.stock_record) self.coupon1 = create_coupon(partner=partner1, catalog=catalog1) self.coupon1.history.all().update(history_user=self.user) partner2 = PartnerFactory(name='Tester2') catalog2 = Catalog.objects.create(name="Test catalog 2", partner=partner2) catalog2.stock_records.add(self.stock_record) self.coupon2 = create_coupon(partner=partner2, catalog=catalog2) self.coupon2.history.all().update(history_user=self.user)
def test_append_to_existing_coupon(self): """Test adding additional vouchers to an existing coupon.""" create_coupon(partner=self.partner, catalog=self.catalog) data = { 'partner': self.partner, 'benefit_type': Benefit.PERCENTAGE, 'benefit_value': 100, 'catalog': self.catalog, 'end_date': datetime.date(2020, 1, 1), 'code': '', 'quantity': 2, 'start_date': datetime.date(2015, 1, 1), 'voucher_type': Voucher.MULTI_USE } coupon_append = CouponOrderCreateView().create_coupon_product( title='Test coupon', price=100, data=data) self.assertEqual( Product.objects.filter(product_class=self.product_class).count(), 1) self.assertEqual( StockRecord.objects.filter(product=coupon_append).count(), 1) self.assertEqual(coupon_append.attr.coupon_vouchers.vouchers.count(), 7) self.assertEqual( coupon_append.attr.coupon_vouchers.vouchers.filter( usage=Voucher.MULTI_USE).count(), 2)
def test_basket_not_free(self): """ Verify a response message is returned when the basket is not free. """ self.assertEqual(StockRecord.objects.get(product=self.seat).price_excl_tax, Decimal('50.00')) create_coupon(catalog=self.catalog, code='COUPONTEST', benefit_value=0) url = self.redeem_url + '?code={}'.format('COUPONTEST') response = self.client.get(url) self.assertEqual(str(response.context['error']), _('Basket total not $0, current value = $50.00'))
def test_basket_not_free(self): """ Verify a response message is returned when the basket is not free. """ self.assertEqual(StockRecord.objects.get(product=self.seat).price_excl_tax, Decimal('50.00')) create_coupon(catalog=self.catalog, code='COUPONTEST', benefit_value=0) url = self.redeem_url + '?code={}'.format('COUPONTEST') response = self.client.get(url) self.assertEqual(str(response.context['error']), _('Basket total not $0, current value = $50.00'))
def test_order_not_completed(self): """ Verify a response message is returned when an order is not completed. """ create_coupon(catalog=self.catalog, code='COUPONTEST') self.assertEqual(Voucher.objects.filter(code='COUPONTEST').count(), 1) url = self.redeem_url + '?code={}'.format('COUPONTEST') response = self.client.get(url) self.assertEqual(response.context['error'], _('Error when trying to redeem code'))
def setUp(self): super(CouponReportCSVViewTest, self).setUp() partner1 = PartnerFactory(name='Tester1') catalog1 = Catalog.objects.create(name="Test catalog 1", partner=partner1) self.coupon1 = create_coupon(partner=partner1, catalog=catalog1) partner2 = PartnerFactory(name='Tester2') catalog2 = Catalog.objects.create(name="Test catalog 2", partner=partner2) self.coupon2 = create_coupon(partner=partner2, catalog=catalog2)
def test_order_not_completed(self): """ Verify a response message is returned when an order is not completed. """ create_coupon(catalog=self.catalog, code='COUPONTEST') self.assertEqual(Voucher.objects.filter(code='COUPONTEST').count(), 1) url = self.redeem_url + '?code={}'.format('COUPONTEST') response = self.client.get(url) self.assertEqual(response.context['error'], _('Error when trying to redeem code'))
def test_redirect(self): """ Verify a redirect happens when valid info is provided. """ create_coupon(catalog=self.catalog, code='COUPONTEST') self.assertEqual(Voucher.objects.filter(code='COUPONTEST').count(), 1) httpretty.register_uri(httpretty.POST, settings.ENROLLMENT_API_URL, status=200) url = self.redeem_url + '?code={}'.format('COUPONTEST') response = self.client.get(url) self.assertIsInstance(response, HttpResponseRedirect)
def test_redirect(self): """ Verify a redirect happens when valid info is provided. """ create_coupon(catalog=self.catalog, code='COUPONTEST') self.assertEqual(Voucher.objects.filter(code='COUPONTEST').count(), 1) httpretty.register_uri(httpretty.POST, settings.ENROLLMENT_API_URL, status=200) url = self.redeem_url + '?code={}'.format('COUPONTEST') response = self.client.get(url) self.assertIsInstance(response, HttpResponseRedirect)
def test_multiple_vouchers(self): """ Verify a redirect happens when a basket with already existing vouchers is used. """ create_coupon(catalog=self.catalog, code='COUPONTEST') self.assertEqual(Voucher.objects.filter(code='COUPONTEST').count(), 1) basket = Basket.get_basket(self.user, self.site) basket.vouchers.add(Voucher.objects.get(code='COUPONTEST')) httpretty.register_uri(httpretty.POST, settings.ENROLLMENT_API_URL, status=200) url = self.redeem_url + '?code={}'.format('COUPONTEST') response = self.client.get(url) self.assertIsInstance(response, HttpResponseRedirect)
def test_multiple_vouchers(self): """ Verify a redirect happens when a basket with already existing vouchers is used. """ create_coupon(catalog=self.catalog, code='COUPONTEST') self.assertEqual(Voucher.objects.filter(code='COUPONTEST').count(), 1) basket = Basket.get_basket(self.user, self.site) basket.vouchers.add(Voucher.objects.get(code='COUPONTEST')) httpretty.register_uri(httpretty.POST, settings.ENROLLMENT_API_URL, status=200) url = self.redeem_url + '?code={}'.format('COUPONTEST') response = self.client.get(url) self.assertIsInstance(response, HttpResponseRedirect)
def test_product_filtering(self): """Verify products are filtered.""" create_coupon() url = reverse('api:v2:product-list') response = self.client.get(url) self.assertEqual(response.status_code, 200) response_data = json.loads(response.content) self.assertEqual(response_data['count'], 3) filtered_url = '{}?product_class=CoUpOn'.format(url) response = self.client.get(filtered_url) self.assertEqual(response.status_code, 200) response_data = json.loads(response.content) self.assertEqual(response_data['count'], 1) self.assertEqual(response_data['results'][0]['product_class'], 'Coupon')
def setUp(self): super(CouponFulfillmentModuleTest, self).setUp() coupon = create_coupon() user = UserFactory() basket = BasketFactory() basket.add_product(coupon, 1) self.order = factories.create_order(number=1, basket=basket, user=user)
def setUp(self): super(CouponFulfillmentModuleTest, self).setUp() coupon = create_coupon() user = UserFactory() basket = BasketFactory() basket.add_product(coupon, 1) self.order = factories.create_order(number=1, basket=basket, user=user)
def setUp(self): super(CouponReportCSVViewTest, self).setUp() self.user = self.create_user(full_name="Test User", is_staff=True) self.client.login(username=self.user.username, password=self.password) self.course = CourseFactory() self.verified_seat = self.course.create_or_update_seat('verified', False, 0, self.partner) self.stock_record = StockRecord.objects.filter(product=self.verified_seat).first() partner1 = PartnerFactory(name='Tester1') catalog1 = Catalog.objects.create(name="Test catalog 1", partner=partner1) catalog1.stock_records.add(self.stock_record) self.coupon1 = create_coupon(partner=partner1, catalog=catalog1) self.coupon1.history.all().update(history_user=self.user) partner2 = PartnerFactory(name='Tester2') catalog2 = Catalog.objects.create(name="Test catalog 2", partner=partner2) catalog2.stock_records.add(self.stock_record) self.coupon2 = create_coupon(partner=partner2, catalog=catalog2) self.coupon2.history.all().update(history_user=self.user)
def test_create_coupon_product(self): """Test the created coupon data.""" coupon = create_coupon() self.assertEqual(Product.objects.filter(product_class=self.product_class).count(), 1) self.assertIsInstance(coupon, Product) self.assertEqual(coupon.title, 'Test coupon') self.assertEqual(StockRecord.objects.filter(product=coupon).count(), 1) stock_record = StockRecord.objects.get(product=coupon) self.assertEqual(stock_record.price_currency, 'USD') self.assertEqual(stock_record.price_excl_tax, 100) self.assertEqual(coupon.attr.coupon_vouchers.vouchers.count(), 5)
def test_coupon_voucher_serializer(self): """Verify that the vouchers of a coupon are properly serialized.""" coupon = create_coupon() url = reverse('api:v2:product-detail', kwargs={'pk': coupon.id}) response = self.client.get(url) self.assertEqual(response.status_code, 200) response_data = json.loads(response.content) voucher = response_data['attribute_values'][0]['value'][0] self.assertEqual(voucher['name'], 'Test coupon') self.assertEqual(voucher['usage'], Voucher.SINGLE_USE) self.assertEqual(voucher['benefit'][0], Benefit.PERCENTAGE) self.assertEqual(voucher['benefit'][1], 100.0)
def test_coupon_product_details(self): """Verify the endpoint returns all coupon information.""" coupon = create_coupon() url = reverse('api:v2:product-detail', kwargs={'pk': coupon.id}) response = self.client.get(url) self.assertEqual(response.status_code, 200) response_data = json.loads(response.content) self.assertEqual(response_data['id'], 3) self.assertEqual(response_data['title'], 'Test coupon') self.assertEqual(response_data['price'], '100.00') self.assertEqual(response_data['attribute_values'][0]['name'], 'Coupon vouchers') self.assertEqual(len(response_data['attribute_values'][0]['value']), 5)
def test_add_product_to_basket(self): """Test adding a coupon product to a basket.""" coupon = create_coupon(partner=self.partner) coupon_client = Client.objects.create(username='******') basket = CouponViewSet().add_product_to_basket(product=coupon, client=coupon_client, site=self.site, partner=self.partner) self.assertIsInstance(basket, Basket) self.assertEqual(Basket.objects.count(), 1) self.assertEqual(basket.lines.count(), 1) self.assertEqual(basket.lines.first().price_excl_tax, 100)
def test_append_to_existing_coupon(self): """Test adding additional vouchers to an existing coupon.""" create_coupon(partner=self.partner, catalog=self.catalog) data = { 'partner': self.partner, 'benefit_type': Benefit.PERCENTAGE, 'benefit_value': 100, 'catalog': self.catalog, 'end_date': datetime.date(2020, 1, 1), 'code': '', 'quantity': 2, 'start_date': datetime.date(2015, 1, 1), 'voucher_type': Voucher.MULTI_USE } coupon_append = CouponViewSet().create_coupon_product( title='Test coupon', price=100, data=data ) self.assertEqual(Product.objects.filter(product_class=self.product_class).count(), 1) self.assertEqual(StockRecord.objects.filter(product=coupon_append).count(), 1) self.assertEqual(coupon_append.attr.coupon_vouchers.vouchers.count(), 7) self.assertEqual(coupon_append.attr.coupon_vouchers.vouchers.filter(usage=Voucher.MULTI_USE).count(), 2)
def test_add_product_to_basket(self): """Test adding a coupon product to a basket.""" coupon = create_coupon(partner=self.partner) coupon_client = Client.objects.create(username='******') basket = CouponViewSet().add_product_to_basket( product=coupon, client=coupon_client, site=self.site, partner=self.partner ) self.assertIsInstance(basket, Basket) self.assertEqual(Basket.objects.count(), 1) self.assertEqual(basket.lines.count(), 1) self.assertEqual(basket.lines.first().price_excl_tax, 100)
def setUp(self): super(UtilTests, self).setUp() self.user = self.create_user(full_name="Test User", is_staff=True) self.client.login(username=self.user.username, password=self.password) self.course = CourseFactory() self.verified_seat = self.course.create_or_update_seat('verified', False, 0, self.partner) self.catalog = Catalog.objects.create(partner=self.partner) self.stock_record = StockRecord.objects.filter(product=self.verified_seat).first() self.catalog.stock_records.add(self.stock_record) self.coupon = create_coupon(title='Test product', catalog=self.catalog)
def test_create_order(self): """Test the order creation.""" coupon = create_coupon(partner=self.partner) coupon_client = Client.objects.create(username='******') basket = CouponViewSet().add_product_to_basket( product=coupon, client=coupon_client, site=self.site, partner=self.partner ) response_data = CouponViewSet().create_order_for_invoice(basket, coupon_id=coupon.id) self.assertEqual(response_data[AC.KEYS.BASKET_ID], 1) self.assertEqual(response_data[AC.KEYS.ORDER], 1) self.assertEqual(response_data[AC.KEYS.PAYMENT_DATA][AC.KEYS.PAYMENT_PROCESSOR_NAME], 'Invoice') self.assertEqual(Order.objects.count(), 1) self.assertEqual(Order.objects.first().status, 'Complete') self.assertEqual(Order.objects.first().total_incl_tax, 100) self.assertEqual(Basket.objects.first().status, 'Submitted')