Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
ecommerce
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
ecommerce
Commits
c125d858
Commit
c125d858
authored
Apr 25, 2018
by
Robert Raposa
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Order skus for increased cache hits.
LEARNER-4943
parent
2da3cdb4
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
17 additions
and
2 deletions
+17
-2
ecommerce/extensions/api/v2/tests/views/test_baskets.py
+16
-2
ecommerce/extensions/api/v2/views/baskets.py
+1
-0
No files found.
ecommerce/extensions/api/v2/tests/views/test_baskets.py
View file @
c125d858
...
...
@@ -563,6 +563,9 @@ class BasketCalculateViewTests(ProgramTestMixin, TestCase):
"""Verify a request made with the is_anonymous parameter is cached"""
url_with_one_sku
=
self
.
_generate_sku_url
(
self
.
products
,
number_of_products
=
1
,
username
=
None
)
url_with_two_skus
=
self
.
_generate_sku_url
(
self
.
products
,
number_of_products
=
2
,
username
=
None
)
url_with_two_skus_reversed
=
self
.
_generate_sku_url
(
self
.
products
,
number_of_products
=
2
,
username
=
None
,
reverse_skus
=
True
)
expected
=
{
'Test Succeeded'
:
True
}
mock_calculate_basket
.
return_value
=
expected
...
...
@@ -599,6 +602,14 @@ class BasketCalculateViewTests(ProgramTestMixin, TestCase):
self
.
assertTrue
(
mock_calculate_basket
.
called
,
msg
=
'The cache should be missed.'
)
self
.
assertEqual
(
response
.
data
,
expected
)
mock_calculate_basket
.
reset_mock
()
# Check that this new set of skus hits cache, even when reversed
response
=
self
.
client
.
get
(
url_with_two_skus_reversed
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertFalse
(
mock_calculate_basket
.
called
,
msg
=
'The cache should be hit.'
)
self
.
assertEqual
(
response
.
data
,
expected
)
# Check that cache works and that log message is sent for Marketing user
# Note: This and the following checks related to it should be removed once we remove
# reliance on the Marketing user for caching.
...
...
@@ -782,7 +793,7 @@ class BasketCalculateViewTests(ProgramTestMixin, TestCase):
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
data
,
expected
)
def
_generate_sku_url
(
self
,
products
,
number_of_products
=
None
,
username
=
None
):
def
_generate_sku_url
(
self
,
products
,
number_of_products
=
None
,
username
=
None
,
reverse_skus
=
False
):
"""
Generates the calculate basket view's url for the given products
...
...
@@ -796,8 +807,11 @@ class BasketCalculateViewTests(ProgramTestMixin, TestCase):
"""
if
not
number_of_products
:
number_of_products
=
len
(
products
)
sku_list
=
[
product
.
stockrecords
.
first
()
.
partner_sku
for
product
in
products
[:
number_of_products
]]
if
reverse_skus
:
sku_list
=
list
(
reversed
(
sku_list
))
qs
=
urllib
.
urlencode
(
{
'sku'
:
[
product
.
stockrecords
.
first
()
.
partner_sku
for
product
in
products
[:
number_of_products
]]
},
{
'sku'
:
sku_list
},
True
)
url
=
'{root}?{qs}'
.
format
(
root
=
self
.
path
,
qs
=
qs
)
...
...
ecommerce/extensions/api/v2/views/baskets.py
View file @
c125d858
...
...
@@ -406,6 +406,7 @@ class BasketCalculateView(generics.GenericAPIView):
skus
=
request
.
GET
.
getlist
(
'sku'
)
if
not
skus
:
return
HttpResponseBadRequest
(
_
(
'No SKUs provided.'
))
skus
.
sort
()
code
=
request
.
GET
.
get
(
'code'
,
None
)
try
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment