Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
 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'))
Exemplo n.º 4
0
 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'))
Exemplo n.º 5
0
    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'))
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0
    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'))
Exemplo n.º 8
0
    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)
Exemplo n.º 9
0
    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)
Exemplo n.º 10
0
    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)
Exemplo n.º 11
0
    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)
Exemplo n.º 12
0
    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')
Exemplo n.º 13
0
 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)
Exemplo n.º 14
0
 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)
Exemplo n.º 15
0
    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)
Exemplo n.º 16
0
    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)
Exemplo n.º 17
0
    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)
Exemplo n.º 18
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)
Exemplo n.º 19
0
    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)
Exemplo n.º 20
0
    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)
Exemplo n.º 21
0
    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)
Exemplo n.º 22
0
    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)
Exemplo n.º 23
0
    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')