예제 #1
0
    def test_can_filter_by_spare_part_name(self):
        spare_part1 = SparePartFactory()
        spare_part2 = SparePartFactory()

        response = self.client.get('/store/?q=%s' % '+'.join(spare_part1.name.split()))
        self.assertEqual(list(response.context['spare_parts']), [spare_part1])

        response = self.client.get('/store/?q=%s' % '+'.join(spare_part2.name.split()))
        self.assertEqual(list(response.context['spare_parts']), [spare_part2])
예제 #2
0
    def test_can_filter_by_brand_name(self):
        brand1 = BrandFactory()
        brand2 = BrandFactory()
        spare_part1 = SparePartFactory(brand=brand1)
        spare_part2 = SparePartFactory(brand=brand2)

        response = self.client.get('/store/?q=%s' % '+'.join(brand1.name.split()))
        self.assertEqual(list(response.context['spare_parts']), [spare_part1])

        response = self.client.get('/store/?q=%s' % '+'.join(brand2.name.split()))
        self.assertEqual(list(response.context['spare_parts']), [spare_part2])
예제 #3
0
    def setUp(self):
        self.brand1 = BrandFactory()
        self.brand2 = BrandFactory()
        self.brand3 = BrandFactory()

        for _ in range(5):
            SparePartFactory(brand=self.brand1)
            SparePartFactory(brand=self.brand2)

        SparePartFactory(brand=self.brand1)

        self.response = self.client.get('/store/stats/')
예제 #4
0
    def test_can_get_top_brands_stats(self):
        brand1 = BrandFactory()
        brand2 = BrandFactory()
        BrandFactory()  # Brand with less than 5 items

        for _ in range(5):
            SparePartFactory(brand=brand1)
            SparePartFactory(brand=brand2)
        SparePartFactory(brand=brand1)

        url = '/api/stats/'
        response = self.client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(len(response.data), 2)
        self.assertEqual([response.data[0]['name'], response.data[1]['name']],
                         [brand1.name, brand2.name])
예제 #5
0
    def test_can_search_by_brand_name(self):
        url = '/api/list/?search=%s'
        spare_parts = [SparePartFactory() for _ in range(11)]

        search = '+'.join(spare_parts[3].brand.name.split())
        response = self.client.get(url % search)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data['results'][0]['brand']['name'],
                         spare_parts[3].brand.name)
예제 #6
0
 def test_get_spare_part_list(self):
     url = '/api/list/'
     for _ in range(11):
         SparePartFactory()
     response = self.client.get(url)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertEqual(response.data['count'], 11)  # Total spare parts
     self.assertTrue(
         response.data['next'].endswith('?page=2'))  # Pagination online
     self.assertEqual(len(response.data['results']),
                      10)  # Limit number os items per page
예제 #7
0
 def setUp(self):
     self.spare_part = SparePartFactory()
     self.response = self.client.get('/store/%d/' % self.spare_part.id)
예제 #8
0
 def test_returns_last_page_if_page_is_out_of_range(self):
     spare_parts = [SparePartFactory() for _ in range(11)]
     response = self.client.get('/store/?page=999')
     self.assertEqual(list(response.context['spare_parts']), [spare_parts[10]])
예제 #9
0
 def test_second_page_returns_correct_spare_parts(self):
     spare_parts = [SparePartFactory() for _ in range(21)]
     response = self.client.get('/store/?page=2')
     self.assertEqual(list(response.context['spare_parts']), spare_parts[10:20])
예제 #10
0
 def test_returns_10_parts_by_page(self):
     spare_parts = [SparePartFactory() for _ in range(11)]
     response = self.client.get('/store/')
     self.assertEqual(list(response.context['spare_parts']), spare_parts[:10])