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
58134459
Commit
58134459
authored
Feb 15, 2017
by
asadiqbal
Committed by
Asad Iqbal
Feb 21, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ENT-178: Fix validation of seat types, catalog_query and course_catalog
parent
453092d1
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
39 additions
and
23 deletions
+39
-23
ecommerce/coupons/tests/mixins.py
+1
-1
ecommerce/enterprise/tests/test_entitlements.py
+1
-0
ecommerce/extensions/offer/admin.py
+1
-1
ecommerce/extensions/offer/models.py
+8
-5
ecommerce/extensions/offer/tests/test_models.py
+25
-3
ecommerce/extensions/voucher/tests/test_utils.py
+3
-13
No files found.
ecommerce/coupons/tests/mixins.py
View file @
58134459
...
...
@@ -239,7 +239,7 @@ class CouponMixin(object):
partner
=
PartnerFactory
(
name
=
'Tester'
)
if
client
is
None
:
client
,
__
=
BusinessClient
.
objects
.
get_or_create
(
name
=
'Test Client'
)
if
catalog
is
None
and
not
(
catalog_query
and
course_seat_types
):
if
catalog
is
None
and
not
(
(
catalog_query
or
course_catalog
)
and
course_seat_types
):
catalog
=
Catalog
.
objects
.
create
(
partner
=
partner
)
if
code
is
not
''
:
quantity
=
1
...
...
ecommerce/enterprise/tests/test_entitlements.py
View file @
58134459
...
...
@@ -138,6 +138,7 @@ class EntitlementsTests(EnterpriseServiceMockMixin, CourseCatalogServiceMockMixi
title
=
coupon_title
,
quantity
=
quantity
,
course_catalog
=
course_catalog_id
,
course_seat_types
=
'verified'
)
return
course_catalog_coupon
...
...
ecommerce/extensions/offer/admin.py
View file @
58134459
...
...
@@ -2,7 +2,7 @@ from oscar.apps.offer.admin import * # pylint: disable=unused-import,wildcard-i
class
RangeAdminExtended
(
admin
.
ModelAdmin
):
list_display
=
(
'name'
,
'catalog'
,
'c
ourse_catalog'
,
)
list_display
=
(
'name'
,
'catalog'
,
'c
atalog_query'
,
'course_catalog'
,
'course_seat_types'
)
raw_id_fields
=
(
'catalog'
,)
search_fields
=
[
'name'
,
'course_catalog'
]
...
...
ecommerce/extensions/offer/models.py
View file @
58134459
...
...
@@ -208,16 +208,19 @@ class Range(AbstractRange):
def
clean
(
self
):
""" Validation for model fields. """
if
self
.
catalog
and
(
self
.
catalog_query
or
self
.
course_seat_types
):
if
self
.
catalog
and
(
self
.
c
ourse_catalog
or
self
.
c
atalog_query
or
self
.
course_seat_types
):
log_message_and_raise_validation_error
(
'Failed to create Range. Catalog and dynamic catalog fields may not be set in the same range.'
)
# Both catalog_query and course_seat_types must be set or empty
error_message
=
'Failed to create Range. Both catalog_query and course_seat_types fields must be set.'
if
self
.
catalog_query
and
not
self
.
course_seat_types
:
error_message
=
'Failed to create Range. Either catalog_query or course_catalog must be given but not both '
\
'and course_seat_types fields must be set.'
if
self
.
catalog_query
and
self
.
course_catalog
:
log_message_and_raise_validation_error
(
error_message
)
elif
(
self
.
catalog_query
or
self
.
course_catalog
)
and
not
self
.
course_seat_types
:
log_message_and_raise_validation_error
(
error_message
)
elif
self
.
course_seat_types
and
not
self
.
catalog_query
:
elif
self
.
course_seat_types
and
not
(
self
.
catalog_query
or
self
.
course_catalog
)
:
log_message_and_raise_validation_error
(
error_message
)
if
self
.
course_seat_types
:
...
...
ecommerce/extensions/offer/tests/test_models.py
View file @
58134459
...
...
@@ -156,7 +156,7 @@ class RangeTests(CouponMixin, CourseCatalogServiceMockMixin, CourseCatalogTestMi
catalog_id
=
course_catalog_id
,
catalog_query
=
catalog_query
)
self
.
range
.
catalog_query
=
None
self
.
range
.
course_seat_types
=
None
self
.
range
.
course_seat_types
=
'verified'
self
.
range
.
course_catalog
=
course_catalog_id
self
.
range
.
save
()
...
...
@@ -174,7 +174,7 @@ class RangeTests(CouponMixin, CourseCatalogServiceMockMixin, CourseCatalogTestMi
__
,
seat
=
self
.
create_course_and_seat
()
course_catalog_id
=
1
self
.
range
.
catalog_query
=
None
self
.
range
.
course_seat_types
=
None
self
.
range
.
course_seat_types
=
'verified'
self
.
range
.
course_catalog
=
course_catalog_id
self
.
range
.
save
()
...
...
@@ -204,9 +204,17 @@ class RangeTests(CouponMixin, CourseCatalogServiceMockMixin, CourseCatalogTestMi
{
'catalog_query'
:
'*:*'
},
{
'catalog_query'
:
''
,
'course_seat_types'
:
[
'verified'
]},
{
'course_seat_types'
:
[
'verified'
]},
{
'course_catalog'
:
''
,
'course_seat_types'
:
'verified'
},
{
'course_catalog'
:
'20'
},
{
'course_catalog'
:
'20'
,
'catalog_query'
:
'*:*'
},
{
'course_catalog'
:
'20'
,
'catalog_query'
:
'*:*'
,
'course_seat_types'
:
'verified'
},
)
def
test_creating_range_with_wrong_data
(
self
,
data
):
"""Verify creating range without catalog_query or catalog_seat_types raises ValidationError."""
"""
Verify creating range raises ValidationError:
- without course_catalog or catalog_query or catalog_seat_types.
- with both given course_catalog and catalog_query.
"""
with
self
.
assertRaises
(
ValidationError
):
Range
.
objects
.
create
(
**
data
)
...
...
@@ -232,6 +240,20 @@ class RangeTests(CouponMixin, CourseCatalogServiceMockMixin, CourseCatalogTestMi
self
.
assertEqual
(
new_range
.
course_seat_types
,
data
[
'course_seat_types'
])
self
.
assertEqual
(
new_range
.
catalog
,
None
)
def
test_creating_dynamic_range_with_course_catalog
(
self
):
"""
Verify creating range with course_catalog and catalog_seat_types creates
range with those values.
"""
data
=
{
'course_catalog'
:
'10'
,
'course_seat_types'
:
'verified,professional'
}
new_range
=
Range
.
objects
.
create
(
**
data
)
self
.
assertEqual
(
new_range
.
course_catalog
,
data
[
'course_catalog'
])
self
.
assertEqual
(
new_range
.
course_seat_types
,
data
[
'course_seat_types'
])
self
.
assertEqual
(
new_range
.
catalog
,
None
)
@ddt.data
(
5
,
'credit,verified'
,
'verified,not_allowed_value'
)
def
test_creating_range_with_wrong_course_seat_types
(
self
,
course_seat_types
):
""" Verify creating range with incorrect course seat types will raise exception. """
...
...
ecommerce/extensions/voucher/tests/test_utils.py
View file @
58134459
...
...
@@ -139,11 +139,12 @@ class UtilTests(CouponMixin, CourseCatalogMockMixin, CourseCatalogTestMixin, Lms
course_seat_types
=
course_seat_types
)
def
create_course_catalog_coupon
(
self
,
coupon_title
,
quantity
,
course_catalog
):
def
create_course_catalog_coupon
(
self
,
coupon_title
,
quantity
,
course_catalog
,
course_seat_types
):
return
self
.
create_coupon
(
title
=
coupon_title
,
quantity
=
quantity
,
course_catalog
=
course_catalog
,
course_seat_types
=
course_seat_types
,
)
def
use_voucher
(
self
,
order_num
,
voucher
,
user
):
...
...
@@ -263,6 +264,7 @@ class UtilTests(CouponMixin, CourseCatalogMockMixin, CourseCatalogTestMixin, Lms
coupon_title
=
coupon_title
,
quantity
=
quantity
,
course_catalog
=
course_catalog
,
course_seat_types
=
'verified'
,
)
self
.
assertEqual
(
course_catalog_coupon
.
title
,
coupon_title
)
...
...
@@ -272,18 +274,6 @@ class UtilTests(CouponMixin, CourseCatalogMockMixin, CourseCatalogTestMixin, Lms
course_catalog_voucher_range
=
course_catalog_vouchers
.
first
()
.
offers
.
first
()
.
benefit
.
range
self
.
assertEqual
(
course_catalog_voucher_range
.
course_catalog
,
course_catalog
)
self
.
data
.
update
({
'name'
:
coupon_title
,
'benefit_value'
:
course_catalog_vouchers
.
first
()
.
offers
.
first
()
.
benefit
.
value
,
'code'
:
course_catalog_vouchers
.
first
()
.
code
,
'quantity'
:
quantity
,
'course_catalog'
:
course_catalog
,
'catalog'
:
None
,
'course_seat_types'
:
None
})
with
self
.
assertRaises
(
IntegrityError
):
create_vouchers
(
**
self
.
data
)
def
assert_report_first_row
(
self
,
row
,
coupon
,
voucher
):
"""
Verify that the first row fields contain the right data.
...
...
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