Exemple #1
0
    def test_all_already_purchased_products(self):
        """
        Test user can not purchase products again using the multiple item view
        """
        course = CourseFactory()
        product1 = course.create_or_update_seat("Verified", True, 0,
                                                self.partner)
        product2 = course.create_or_update_seat("Professional", True, 0,
                                                self.partner)
        stock_record = StockRecordFactory(product=product1,
                                          partner=self.partner)
        catalog = Catalog.objects.create(partner=self.partner)
        catalog.stock_records.add(stock_record)
        stock_record = StockRecordFactory(product=product2,
                                          partner=self.partner)
        catalog.stock_records.add(stock_record)

        qs = urllib.urlencode(
            {
                'sku': [
                    product.stockrecords.first().partner_sku
                    for product in [product1, product2]
                ]
            }, True)
        url = '{root}?{qs}'.format(root=self.path, qs=qs)
        with mock.patch.object(UserAlreadyPlacedOrder,
                               'user_already_placed_order',
                               return_value=True):
            response = self.client.get(url)
            self.assertEqual(response.status_code, 200)
            self.assertEqual(response.context['error'],
                             'You have already purchased these products')
Exemple #2
0
    def test_enrolled_verified_student_for_enrollment_code(
            self, mode, id_verification):
        """
        Verify the view return HTTP 303 if the student is enrolled as verified and purchasing enrollment code
        (The Enrollment API call being used returns an inactive enrollment record in this case)
        """
        course = CourseFactory()
        self.mock_enrollment_api_success_enrolled(course.id, mode=mode)
        toggle_switch(ENROLLMENT_CODE_SWITCH, True)
        course.create_or_update_seat(mode,
                                     id_verification,
                                     10,
                                     self.partner,
                                     create_enrollment_code=True)
        product = Product.objects.get(
            product_class__name=ENROLLMENT_CODE_PRODUCT_CLASS_NAME)
        stock_record = StockRecordFactory(product=product,
                                          partner=self.partner)
        catalog = Catalog.objects.create(partner=self.partner)
        catalog.stock_records.add(stock_record)

        url = '{path}?sku={sku}'.format(path=self.path,
                                        sku=stock_record.partner_sku)
        response = self.client.get(url)
        self.assertEqual(response.status_code, 303)
        self.assertEqual(response.reason_phrase, "SEE OTHER")
        self.assertEqual(response.wsgi_request.path_info,
                         '/basket/single-item/')
        self.assertEqual(response.wsgi_request.GET['sku'],
                         stock_record.partner_sku)
 def setUp(self):
     super(JournalProductUpdateSerializerTest, self).setUp()
     product_class = ProductClassFactory(name="Journal")
     self.product = ProductFactory(product_class=product_class,
                                   stockrecords=[],
                                   categories="")
     StockRecordFactory(partner_sku="unit02",
                        product=self.product,
                        partner=PartnerFactory(short_code="dummy-partner"))
 def setUp(self):
     super(StockRecordSerializerForUpdateTest, self).setUp()
     self.stock_record = StockRecordFactory(
         partner=PartnerFactory(
             short_code="dummy-partner"
         ),
         product=ProductFactory(
             categories=""
         )
     )
Exemple #5
0
    def setUp(self):
        super(BasketAddItemsViewTests, self).setUp()
        self.user = self.create_user()
        self.client.login(username=self.user.username, password=self.password)

        self.course = CourseFactory(partner=self.partner)
        product = self.course.create_or_update_seat('verified', False, 50)
        self.stock_record = StockRecordFactory(product=product, partner=self.partner)
        self.catalog = Catalog.objects.create(partner=self.partner)
        self.catalog.stock_records.add(self.stock_record)
    def test_list(self):
        """ Verify a list of stock records is returned. """
        StockRecordFactory(partner__short_code='Tester')
        StockRecord.objects.create(partner=self.partner, product=self.product, partner_sku='dummy-sku',
                                   price_currency='USD', price_excl_tax=200.00)

        response = self.client.get(self.list_path)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(StockRecord.objects.count(), 4)

        results = [self.serialize_stockrecord(stockrecord) for stockrecord in
                   self.product.stockrecords.all()]
        expected = {'count': 2, 'next': None, 'previous': None, 'results': results}
        self.assertDictEqual(json.loads(response.content), expected)
    def test_already_verified_student(self, mode, id_verification):
        """
        Verify the view return HTTP 400 if the student is already enrolled as verified student in the course
        """
        course = CourseFactory()
        self.mock_enrollment_api_success(course.id, mode=mode)
        product = course.create_or_update_seat(mode, id_verification, 0, self.partner)
        stock_record = StockRecordFactory(product=product, partner=self.partner)
        catalog = Catalog.objects.create(partner=self.partner)
        catalog.stock_records.add(stock_record)

        url = '{path}?sku={sku}'.format(path=self.path, sku=stock_record.partner_sku)
        expected_content = 'You are already enrolled in {product}.'.format(product=product.course.name)
        response = self.client.get(url)
        self.assertEqual(response.status_code, 400)
        self.assertEqual(response.content, expected_content)
Exemple #8
0
    def test_not_already_purchased_product(self):
        """
        Verify student can place order for not purchased product
        """
        course = CourseFactory()
        product = course.create_or_update_seat("Verified", True, 0, self.partner)
        stock_record = StockRecordFactory(product=product, partner=self.partner)
        catalog = Catalog.objects.create(partner=self.partner)
        catalog.stock_records.add(stock_record)
        sku = stock_record.partner_sku

        url = '{path}?sku={sku}'.format(path=self.path, sku=sku)
        response = self.client.get(url)

        self.assertEqual(response.status_code, 303)
        self.assertEqual(response.wsgi_request.path_info, '/basket/single-item/')
        self.assertEqual(response.wsgi_request.GET['sku'], sku)
Exemple #9
0
    def test_unenrolled_verified_student(self, mode, id_verification):
        """
        Verify the view return HTTP 303 if the student is unenrolled as verified student in the course
        (The Enrollment API call being used returns an inactive enrollment record in this case)
        """
        course = CourseFactory()
        self.mock_enrollment_api_success_unenrolled(course.id, mode=mode)
        product = course.create_or_update_seat(mode, id_verification, 0, self.partner)
        stock_record = StockRecordFactory(product=product, partner=self.partner)
        catalog = Catalog.objects.create(partner=self.partner)
        catalog.stock_records.add(stock_record)
        sku = stock_record.partner_sku

        url = '{path}?sku={sku}'.format(path=self.path, sku=sku)
        response = self.client.get(url)
        self.assertEqual(response.status_code, 303)
        self.assertEqual(response.wsgi_request.path_info, '/basket/single-item/')
        self.assertEqual(response.wsgi_request.GET['sku'], sku)
Exemple #10
0
    def test_enrolled_verified_student(self, mode, id_verification):
        """
        Verify the view return HTTP 400 if the student is already enrolled as verified student in the course
        (The Enrollment API call being used returns an active enrollment record in this case)
        """
        course = CourseFactory()
        self.mock_enrollment_api_success_enrolled(course.id, mode=mode)
        product = course.create_or_update_seat(mode, id_verification, 0, self.partner)
        stock_record = StockRecordFactory(product=product, partner=self.partner)
        catalog = Catalog.objects.create(partner=self.partner)
        catalog.stock_records.add(stock_record)
        self.create_coupon(catalog=catalog, code=COUPON_CODE, benefit_value=5)

        url = '{path}?sku={sku}&code={code}'.format(path=self.path, sku=stock_record.partner_sku, code=COUPON_CODE)
        expected_content = 'You are already enrolled in {product}.'.format(product=product.course.name)
        response = self.client.get(url)
        self.assertEqual(response.status_code, 400)
        self.assertEqual(response.content, expected_content)
Exemple #11
0
 def test_already_purchased_product(self):
     """
     Verify student can not place multiple orders for single course seat
     """
     course = CourseFactory()
     product = course.create_or_update_seat("Verified", True, 0, self.partner)
     stock_record = StockRecordFactory(product=product, partner=self.partner)
     catalog = Catalog.objects.create(partner=self.partner)
     catalog.stock_records.add(stock_record)
     sku = stock_record.partner_sku
     basket = factories.BasketFactory(owner=self.user, site=self.site)
     basket.add_product(product, 1)
     create_order(user=self.user, basket=basket)
     url = '{path}?sku={sku}'.format(path=self.path, sku=sku)
     expected_content = 'You have already purchased {course} seat.'.format(course=product.course.name)
     response = self.client.get(url)
     self.assertEqual(response.status_code, 200)
     self.assertEqual(response.context['error'], expected_content)