def test_query_create_raises_value_error_when_kwarg_key_is_not_in_concrete_fields(self):
     qs = MockSet(
         model=create_model('first', 'second', 'third')
     )
     attrs = dict(first=1, second=2, third=3, fourth=4)
     with self.assertRaises(FieldError):
         qs.create(**attrs)
 def test_query_create_raises_value_error_when_kwarg_key_is_not_in_concrete_fields(self):
     qs = MockSet(
         model=create_model('first', 'second', 'third')
     )
     attrs = dict(first=1, second=2, third=3, fourth=4)
     with self.assertRaises(FieldError):
         qs.create(**attrs)
示例#3
0
class SellerViewTests(WebTest):
    def setUp(self):
        self.seller_qs = MockSet(model=Seller)
        self.category_qs = MockSet(model=Category)
        self.sale_qs = MockSet(model=Sale)

        self.seller = self.seller_qs.create(
            username='******',
            email='*****@*****.**',
            password='******',
            phone='+7-952-952-52-38'
        )

        self.category1 = self.category_qs.create(category_name='Category1')
        self.category2 = self.category_qs.create(category_name='Category2')

        self.sale1 = self.sale_qs.create(
            title='1-title',
            body='1-body',
            photo='',
            price=1000,
            category=self.category1,
            author=self.seller
        )
        self.sale2 = self.sale_qs.create(
            title='2-title',
            body='2-body',
            photo='',
            price=2000,
            category=self.category2,
            author=self.seller
        )

    def test_basic_view(self):
        with patch.object(SellerDetail, 'get_object', return_value=self.seller):
            url = reverse('seller_detail', kwargs={'pk': 1})  # pk can be anything
            response = self.client.get(url)
            self.assertEqual(response.status_code, 200)

    def test_sale_list_on_seller_guest_page(self):
        with patch.object(SellerDetail, 'get_object', return_value=self.seller):
            url = reverse('seller_detail', kwargs={'pk': 1})  # pk can be anything
            response = self.client.get(url)

            for sale in self.seller.get_sales_list():
                self.assertContains(response, sale.title)
                self.assertContains(response, sale.category)

    def test_sale_list_on_seller_auth_page(self):
        with patch.object(SellerDetail, 'get_object', return_value=self.seller):
            url = reverse('seller_detail', kwargs={'pk': 1})  # pk can be anything
            response = self.client.get(url)

            for sale in self.seller.get_sales_list():
                self.assertContains(response, sale.title)
                self.assertContains(response, sale.category)
                self.assertIn(sale.get_update_url(), response.content.decode())
                self.assertIn(sale.get_delete_url(), response.content.decode())
示例#4
0
    def test_pagination_is_ten(self):
        sale_qs = MockSet(model=Sale)
        for i in range(15):
            sale_qs.create(pk=i, title='Title ' + str(i), body='Body ' + str(i), photo='', price=1000 * i, category=self.category1, author=self.seller)

        with patch.object(HomeView, 'get_queryset', return_value=sale_qs):
            response = self.client.get(reverse('home'))
            self.assertEqual(response.status_code, 200)
            self.assertTrue('is_paginated' in response.context)
            self.assertTrue(response.context['is_paginated'] == True)
            self.assertTrue(len(response.context['sale_list']) == 10)
    def test_query_creates_new_model_and_adds_to_set(self):
        qs = MockSet(model=create_model('foo', 'bar', 'none'))
        attrs = dict(foo=1, bar='a')
        obj = qs.create(**attrs)

        assert obj in [x for x in qs]
        assert hasattr(obj, 'foo') and obj.foo == 1
        assert hasattr(obj, 'bar') and obj.bar == 'a'
        assert hasattr(obj, 'none') and obj.none is None
示例#6
0
 def test_query_creates_new_model_and_adds_to_set(self):
     qs = MockSet(model=create_model('foo', 'bar', 'none'))
     attrs = dict(foo=1, bar='a')
     obj = qs.create(**attrs)
     obj.save.assert_called_once_with(force_insert=True, using=ANY)
     assert obj in [x for x in qs]
     assert hasattr(obj, 'foo') and obj.foo == 1
     assert hasattr(obj, 'bar') and obj.bar == 'a'
     assert hasattr(obj, 'none') and obj.none is None
示例#7
0
    def test_query_creates_new_model_and_adds_to_set(self):
        qs = MockSet(model=create_model('foo', 'bar', 'none'))
        attrs = dict(foo=1, bar='a')
        obj = qs.create(**attrs)

        assert obj in [x for x in qs]
        assert hasattr(obj, 'foo') and obj.foo == 1
        assert hasattr(obj, 'bar') and obj.bar == 'a'
        assert hasattr(obj, 'none') and obj.none is None
示例#8
0
    def test_two_sales(self):
        sale_qs = MockSet(model=Sale)
        sale1 = sale_qs.create(pk=1, title='1-title', body='1-body', photo='', price=1000, category=self.category1, author=self.seller)
        sale2 = sale_qs.create(pk=2, title='2-title', body='2-body', photo='', price=2000, category=self.category2, author=self.seller)

        with patch.object(HomeView, 'get_queryset', return_value=sale_qs):
            response = self.client.get(reverse('home'))
            self.assertContains(response, '1-title')
            self.assertContains(response, '2-title')
示例#9
0
    def test_query_creates_new_model_and_adds_to_set(self):
        qs = MockSet(cls=MockModel)

        attrs = dict(foo=1, bar='a')
        obj = qs.create(**attrs)

        obj.save.assert_called_once_with(force_insert=True, using=ANY)
        assert obj in [x for x in qs]

        for k, v in attrs.items():
            assert getattr(obj, k, None) == v
示例#10
0
    def test_valid_user_creation(self):
        seller_qs = MockSet(model=Seller)
        seller = seller_qs.create(username='******',
                                  password='******',
                                  email='*****@*****.**',
                                  phone='+7-952-952-52-38',
                                  first_name='Andrei',
                                  last_name='Borodin',
                                  middle_name='Olegovich')

        self.assertEqual(seller.username, 'borodin_a_o')
        self.assertEqual(seller.password, 'password')
        self.assertEqual(seller.email, '*****@*****.**')
        self.assertEqual(seller.phone, '+7-952-952-52-38')
        self.assertEqual(seller.first_name, 'Andrei')
        self.assertEqual(seller.last_name, 'Borodin')
        self.assertEqual(seller.middle_name, 'Olegovich')
示例#11
0
class HomeViewTests(WebTest):

    def setUp(self):
        self.seller_qs = MockSet(model=Seller)
        self.category_qs = MockSet(model=Category)

        self.seller = self.seller_qs.create(
            pk=1,
            username='******',
            email='*****@*****.**',
            password='******',
            phone='+7-952-952-52-38'
        )

        self.category1 = self.category_qs.create(category_name='Category1')
        self.category2 = self.category_qs.create(category_name='Category2')

    def test_view_url_exists_at_desired_location(self):
        response = self.client.get('')
        self.assertEqual(response.status_code, 200)

    def test_view_url_accessible_by_name(self):
        response = self.client.get(reverse('home'))
        self.assertEqual(response.status_code, 200)

    def test_view_uses_correct_template(self):
        response = self.client.get(reverse('home'))
        self.assertEqual(response.status_code, 200)
        self.assertTemplateUsed(response, 'index.html')

    def test_zero_sales(self):
        response = self.client.get(reverse('home'))
        self.assertContains(response, 'No sales yet')

    def test_one_sale(self):
        sale_qs = MockSet(model=Sale)
        sale1 = sale_qs.create(
            pk=1,
            title='1-title',
            body='1-body',
            photo='',
            price=1000,
            category=self.category1,
            author=self.seller
        )
        with patch.object(HomeView, 'get_queryset', return_value=sale_qs):
            response = self.client.get(reverse('home'))
            self.assertContains(response, '1-title')
            self.assertContains(response, '1-body')
            self.assertContains(response, 'Category1')
            self.assertContains(response, 1000)
            self.assertContains(response, self.seller.get_full_name())

    def test_two_sales(self):
        sale_qs = MockSet(model=Sale)
        sale1 = sale_qs.create(pk=1, title='1-title', body='1-body', photo='', price=1000, category=self.category1, author=self.seller)
        sale2 = sale_qs.create(pk=2, title='2-title', body='2-body', photo='', price=2000, category=self.category2, author=self.seller)

        with patch.object(HomeView, 'get_queryset', return_value=sale_qs):
            response = self.client.get(reverse('home'))
            self.assertContains(response, '1-title')
            self.assertContains(response, '2-title')

    def test_unauthorized_links(self):
        response = self.client.get(reverse('home'))
        self.assertIn(reverse('register'), response.content.decode())
        self.assertIn(reverse('login'), response.content.decode())
        self.assertNotIn(reverse('logout'), response.content.decode())

    def test_authorized_links(self):
        user = Seller.objects.create_user(
            username='******',
            password='******',
            email='*****@*****.**',
            phone='+7-952-952-52-38'
        )
        self.client.force_login(user, backend=None)
        response = self.client.get(reverse('home'))
        self.assertIn(reverse('logout'), response.content.decode())
        self.assertNotIn(reverse('register'), response.content.decode())
        self.assertNotIn(reverse('login'), response.content.decode())

    def test_pagination_is_ten(self):
        sale_qs = MockSet(model=Sale)
        for i in range(15):
            sale_qs.create(pk=i, title='Title ' + str(i), body='Body ' + str(i), photo='', price=1000 * i, category=self.category1, author=self.seller)

        with patch.object(HomeView, 'get_queryset', return_value=sale_qs):
            response = self.client.get(reverse('home'))
            self.assertEqual(response.status_code, 200)
            self.assertTrue('is_paginated' in response.context)
            self.assertTrue(response.context['is_paginated'] == True)
            self.assertTrue(len(response.context['sale_list']) == 10)