partial improvements to search
This commit is contained in:
@@ -535,6 +535,37 @@ class ProductSearchTest(TestCase):
|
||||
# check prices
|
||||
self.assertTrue(payload['prices']['min'] <= payload['prices']['max'])
|
||||
|
||||
def test_anon_user_can_search_no_querystring(self):
|
||||
expected_instances = [
|
||||
self.factory(tags="lunares/rojos", category='zapatos', description="zapatos verdes"),
|
||||
self.factory(tags="colores/rojos, tono/brillante"),
|
||||
self.factory(tags="lunares/azules", description="zapatos rojos"),
|
||||
self.factory(tags="lunares/rojos", description="zapatos"),
|
||||
self.factory(attributes='"zapatos de campo", tono/oscuro'),
|
||||
]
|
||||
unexpected_instances = [
|
||||
self.factory(description="chanclas"),
|
||||
self.factory(tags="azules"),
|
||||
]
|
||||
|
||||
q = quote("zapatos rojos")
|
||||
|
||||
url = f"{self.endpoint}?q="
|
||||
# send in request
|
||||
response = self.client.get(url)
|
||||
# check response
|
||||
self.assertEqual(response.status_code, 200)
|
||||
# load response data
|
||||
payload = response.json()
|
||||
# check for expected fields in payload
|
||||
self.assertIsNotNone(payload.get('filters'))
|
||||
self.assertIsNotNone(payload.get('count'))
|
||||
self.assertIsNotNone(payload.get('products'))
|
||||
self.assertIsNotNone(payload.get('prices'))
|
||||
|
||||
# check for object creation
|
||||
self.assertEquals(len(payload['products']), len(expected_instances) + len(unexpected_instances))
|
||||
|
||||
def test_anon_user_can_paginate_search(self):
|
||||
expected_instances = [
|
||||
self.factory(tags="lunares/rojos", category='zapatos', description="zapatos verdes"),
|
||||
@@ -549,10 +580,10 @@ class ProductSearchTest(TestCase):
|
||||
]
|
||||
|
||||
q = quote("zapatos rojos")
|
||||
limit = 2
|
||||
|
||||
# test limit less than available
|
||||
limit = 3
|
||||
url = f"{self.endpoint}?q={q}&limit={limit}"
|
||||
# send in request
|
||||
response = self.client.get(url)
|
||||
|
||||
# check response
|
||||
@@ -562,6 +593,44 @@ class ProductSearchTest(TestCase):
|
||||
self.assertEquals(len(payload['products']), limit)
|
||||
self.assertEquals(payload['count'], len(expected_instances))
|
||||
|
||||
# test limit less than available
|
||||
limit = 10
|
||||
url = f"{self.endpoint}?q={q}&limit={limit}"
|
||||
response = self.client.get(url)
|
||||
|
||||
# check response
|
||||
self.assertEqual(response.status_code, 200)
|
||||
# load response data
|
||||
payload = response.json()
|
||||
self.assertEquals(len(payload['products']), len(expected_instances))
|
||||
self.assertEquals(payload['count'], len(expected_instances))
|
||||
|
||||
# test limit equal to available, offset zero
|
||||
limit = len(expected_instances)
|
||||
offset = 0
|
||||
url = f"{self.endpoint}?q={q}&limit={limit}&offset={offset}"
|
||||
response = self.client.get(url)
|
||||
|
||||
# check response
|
||||
self.assertEqual(response.status_code, 200)
|
||||
# load response data
|
||||
payload = response.json()
|
||||
self.assertEquals(len(payload['products']), len(expected_instances))
|
||||
self.assertEquals(payload['count'], len(expected_instances))
|
||||
|
||||
# test limit and offset equal to available
|
||||
limit = len(expected_instances)
|
||||
offset = limit
|
||||
url = f"{self.endpoint}?q={q}&limit={limit}&offset={offset}"
|
||||
response = self.client.get(url)
|
||||
|
||||
# check response
|
||||
self.assertEqual(response.status_code, 200)
|
||||
# load response data
|
||||
payload = response.json()
|
||||
self.assertEquals(len(payload['products']), 0)
|
||||
self.assertEquals(payload['count'], len(expected_instances))
|
||||
|
||||
def test_anon_user_can_filter_shipping_cost_true(self):
|
||||
expected_instances = [
|
||||
self.factory(tags="colores/rojos, tono/brillante", shipping_cost=100.00),
|
||||
@@ -685,7 +754,6 @@ class ProductSearchTest(TestCase):
|
||||
]
|
||||
|
||||
q = quote("zapatos rojos")
|
||||
# discount=true
|
||||
url = f"{self.endpoint}?q={q}&category=ropa/nueva"
|
||||
# send in request
|
||||
response = self.client.get(url)
|
||||
@@ -815,7 +883,7 @@ class ProductSearchTest(TestCase):
|
||||
url = f"{self.endpoint}?q={q}&order=oldest"
|
||||
# send in request
|
||||
response = self.client.get(url)
|
||||
|
||||
import ipdb; ipdb.set_trace()
|
||||
# check response
|
||||
self.assertEqual(response.status_code, 200)
|
||||
# load response data
|
||||
|
||||
Reference in New Issue
Block a user