|
|
|
|
@ -1,4 +1,5 @@ |
|
|
|
|
from datetime import timedelta |
|
|
|
|
from decimal import Decimal |
|
|
|
|
|
|
|
|
|
from django.test import TestCase |
|
|
|
|
from django.utils.timezone import now |
|
|
|
|
@ -23,9 +24,8 @@ class DiscountForCoursesModelTestCase(TestCase): |
|
|
|
|
product=Discount.PRODUCT_ONE_COURSE) |
|
|
|
|
|
|
|
|
|
all_curses_discounts, discounts_for_courses = Discount.objects.get_courses_discounts() |
|
|
|
|
self.assertEqual(all_curses_discounts, {'max_discount': None}) |
|
|
|
|
self.assertEqual(discounts_for_courses[0], {'course': course_1.pk, 'max_discount': 30}) |
|
|
|
|
self.assertEqual(discounts_for_courses[1], {'course': course_2.pk, 'max_discount': 50}) |
|
|
|
|
self.assertEqual(all_curses_discounts, None) |
|
|
|
|
self.assertEqual(discounts_for_courses, {course_1.pk: 30, course_2.pk: 50}) |
|
|
|
|
|
|
|
|
|
def test_greater_value_discount_without_user(self): |
|
|
|
|
course = CourseFactory.create() |
|
|
|
|
@ -35,8 +35,8 @@ class DiscountForCoursesModelTestCase(TestCase): |
|
|
|
|
product=Discount.PRODUCT_ONE_COURSE) |
|
|
|
|
|
|
|
|
|
all_curses_discounts, discounts_for_courses = Discount.objects.get_courses_discounts() |
|
|
|
|
self.assertEqual(all_curses_discounts, {'max_discount': None}) |
|
|
|
|
self.assertEqual(discounts_for_courses[0], {'course': course.pk, 'max_discount': 50}) |
|
|
|
|
self.assertEqual(all_curses_discounts, None) |
|
|
|
|
self.assertEqual(discounts_for_courses, {course.pk: 50}) |
|
|
|
|
|
|
|
|
|
def test_exclude_personal_discounts_without_user(self): |
|
|
|
|
user_1 = UserFactory.create() |
|
|
|
|
@ -46,8 +46,8 @@ class DiscountForCoursesModelTestCase(TestCase): |
|
|
|
|
DiscountFactory.create(end=now() + timedelta(days=5), value=50, course=course, |
|
|
|
|
product=Discount.PRODUCT_ONE_COURSE, client=user_1) |
|
|
|
|
all_curses_discounts, discounts_for_courses = Discount.objects.get_courses_discounts() |
|
|
|
|
self.assertEqual(all_curses_discounts, {'max_discount': None}) |
|
|
|
|
self.assertEqual(discounts_for_courses[0], {'course': course.pk, 'max_discount': 30}) |
|
|
|
|
self.assertEqual(all_curses_discounts, None) |
|
|
|
|
self.assertEqual(discounts_for_courses, {course.pk: 30}) |
|
|
|
|
|
|
|
|
|
def test_discount_for_one_course_and_all_courses(self): |
|
|
|
|
course = CourseFactory.create() |
|
|
|
|
@ -58,8 +58,8 @@ class DiscountForCoursesModelTestCase(TestCase): |
|
|
|
|
DiscountFactory.create(end=now() + timedelta(days=5), value=10, product=Discount.PRODUCT_ALL_COURSES) |
|
|
|
|
|
|
|
|
|
all_curses_discounts, discounts_for_courses = Discount.objects.get_courses_discounts() |
|
|
|
|
self.assertEqual(all_curses_discounts, {'max_discount': 10}) |
|
|
|
|
self.assertEqual(discounts_for_courses[0], {'course': course.pk, 'max_discount': 50}) |
|
|
|
|
self.assertEqual(all_curses_discounts, 10) |
|
|
|
|
self.assertEqual(discounts_for_courses, {course.pk: 50}) |
|
|
|
|
|
|
|
|
|
def test_personal_discounts(self): |
|
|
|
|
course = CourseFactory.create() |
|
|
|
|
@ -70,8 +70,8 @@ class DiscountForCoursesModelTestCase(TestCase): |
|
|
|
|
DiscountFactory.create(end=now() + timedelta(days=5), value=10, product=Discount.PRODUCT_ALL_COURSES) |
|
|
|
|
|
|
|
|
|
all_curses_discounts, discounts_for_courses = Discount.objects.get_courses_discounts(user=self.user) |
|
|
|
|
self.assertEqual(all_curses_discounts, {'max_discount': 10}) |
|
|
|
|
self.assertEqual(discounts_for_courses[0], {'course': course.pk, 'max_discount': 50}) |
|
|
|
|
self.assertEqual(all_curses_discounts, 10) |
|
|
|
|
self.assertEqual(discounts_for_courses, {course.pk: 50}) |
|
|
|
|
|
|
|
|
|
def test_personal_discounts_multiple_users(self): |
|
|
|
|
user_1 = UserFactory() |
|
|
|
|
@ -85,12 +85,12 @@ class DiscountForCoursesModelTestCase(TestCase): |
|
|
|
|
client=self.user) |
|
|
|
|
|
|
|
|
|
all_curses_discounts, discounts_for_courses = Discount.objects.get_courses_discounts(user=self.user) |
|
|
|
|
self.assertEqual(all_curses_discounts, {'max_discount': 10}) |
|
|
|
|
self.assertEqual(discounts_for_courses[0], {'course': course.pk, 'max_discount': 50}) |
|
|
|
|
self.assertEqual(all_curses_discounts, 10) |
|
|
|
|
self.assertEqual(discounts_for_courses, {course.pk: 50}) |
|
|
|
|
|
|
|
|
|
all_curses_discounts, discounts_for_courses = Discount.objects.get_courses_discounts(user=user_1) |
|
|
|
|
self.assertEqual(all_curses_discounts, {'max_discount': None}) |
|
|
|
|
self.assertEqual(discounts_for_courses[0], {'course': course.pk, 'max_discount': 30}) |
|
|
|
|
self.assertEqual(all_curses_discounts, None) |
|
|
|
|
self.assertEqual(discounts_for_courses, {course.pk: 30}) |
|
|
|
|
|
|
|
|
|
def test_discount_for_one_course_without_user(self): |
|
|
|
|
course_1 = CourseFactory.create() |
|
|
|
|
@ -105,9 +105,9 @@ class DiscountForCoursesModelTestCase(TestCase): |
|
|
|
|
product=Discount.PRODUCT_ONE_COURSE) |
|
|
|
|
|
|
|
|
|
all_curses_discounts, discounts_for_courses = Discount.objects.get_courses_discounts(user=None, course=course_1) |
|
|
|
|
self.assertEqual(all_curses_discounts, {'max_discount': None}) |
|
|
|
|
self.assertEqual(all_curses_discounts, None) |
|
|
|
|
self.assertEqual(len(discounts_for_courses), 1) |
|
|
|
|
self.assertEqual(discounts_for_courses[0], {'course': course_1.pk, 'max_discount': 30}) |
|
|
|
|
self.assertEqual(discounts_for_courses, {course_1.pk: 30}) |
|
|
|
|
|
|
|
|
|
def test_discount_for_one_course_with_multiple_users(self): |
|
|
|
|
user_1 = UserFactory.create() |
|
|
|
|
@ -130,15 +130,15 @@ class DiscountForCoursesModelTestCase(TestCase): |
|
|
|
|
|
|
|
|
|
all_curses_discounts, discounts_for_courses = Discount.objects.get_courses_discounts(user=user_1, |
|
|
|
|
course=course_1) |
|
|
|
|
self.assertEqual(all_curses_discounts, {'max_discount': 10}) |
|
|
|
|
self.assertEqual(all_curses_discounts, 10) |
|
|
|
|
self.assertEqual(len(discounts_for_courses), 1) |
|
|
|
|
self.assertEqual(discounts_for_courses[0], {'course': course_1.pk, 'max_discount': 30}) |
|
|
|
|
self.assertEqual(discounts_for_courses, {course_1.pk: 30}) |
|
|
|
|
|
|
|
|
|
all_curses_discounts, discounts_for_courses = Discount.objects.get_courses_discounts(user=self.user, |
|
|
|
|
course=course_1) |
|
|
|
|
self.assertEqual(all_curses_discounts, {'max_discount': 50}) |
|
|
|
|
self.assertEqual(all_curses_discounts, 50) |
|
|
|
|
self.assertEqual(len(discounts_for_courses), 1) |
|
|
|
|
self.assertEqual(discounts_for_courses[0], {'course': course_1.pk, 'max_discount': 30}) |
|
|
|
|
self.assertEqual(discounts_for_courses, {course_1.pk: 30}) |
|
|
|
|
|
|
|
|
|
def test_not_active_discount(self): |
|
|
|
|
DiscountFactory.create(end=now() + timedelta(days=5), value=60, product=Discount.PRODUCT_ALL_COURSES, |
|
|
|
|
@ -147,7 +147,7 @@ class DiscountForCoursesModelTestCase(TestCase): |
|
|
|
|
|
|
|
|
|
all_curses_discounts, discounts_for_courses = Discount.objects.get_courses_discounts() |
|
|
|
|
|
|
|
|
|
self.assertEqual(all_curses_discounts, {'max_discount': 40}) |
|
|
|
|
self.assertEqual(all_curses_discounts, 40) |
|
|
|
|
self.assertEqual(len(discounts_for_courses), 0) |
|
|
|
|
|
|
|
|
|
def test_old_discount(self): |
|
|
|
|
@ -157,7 +157,7 @@ class DiscountForCoursesModelTestCase(TestCase): |
|
|
|
|
|
|
|
|
|
all_curses_discounts, discounts_for_courses = Discount.objects.get_courses_discounts() |
|
|
|
|
|
|
|
|
|
self.assertEqual(all_curses_discounts, {'max_discount': 40}) |
|
|
|
|
self.assertEqual(all_curses_discounts, 40) |
|
|
|
|
self.assertEqual(len(discounts_for_courses), 0) |
|
|
|
|
|
|
|
|
|
def test_discount_from_the_future(self): |
|
|
|
|
@ -167,7 +167,7 @@ class DiscountForCoursesModelTestCase(TestCase): |
|
|
|
|
|
|
|
|
|
all_curses_discounts, discounts_for_courses = Discount.objects.get_courses_discounts() |
|
|
|
|
|
|
|
|
|
self.assertEqual(all_curses_discounts, {'max_discount': 40}) |
|
|
|
|
self.assertEqual(all_curses_discounts, 40) |
|
|
|
|
self.assertEqual(len(discounts_for_courses), 0) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -187,9 +187,8 @@ class DiscountForPackagesModelTestCase(TestCase): |
|
|
|
|
product=Discount.PRODUCT_ONE_PACKAGE) |
|
|
|
|
|
|
|
|
|
all_packages_discounts, discounts_for_packages = Discount.objects.get_packages_discounts() |
|
|
|
|
self.assertEqual(all_packages_discounts, {'max_discount': None}) |
|
|
|
|
self.assertEqual(discounts_for_packages[0], {'package': package_1.pk, 'max_discount': 30}) |
|
|
|
|
self.assertEqual(discounts_for_packages[1], {'package': package_2.pk, 'max_discount': 50}) |
|
|
|
|
self.assertEqual(all_packages_discounts, None) |
|
|
|
|
self.assertEqual(discounts_for_packages, {package_1.pk: 30, package_2.pk: 50}) |
|
|
|
|
|
|
|
|
|
def test_greater_value_discount_without_user(self): |
|
|
|
|
package = PackageFactory.create() |
|
|
|
|
@ -199,8 +198,8 @@ class DiscountForPackagesModelTestCase(TestCase): |
|
|
|
|
product=Discount.PRODUCT_ONE_PACKAGE) |
|
|
|
|
|
|
|
|
|
all_packages_discounts, discounts_for_packages = Discount.objects.get_packages_discounts() |
|
|
|
|
self.assertEqual(all_packages_discounts, {'max_discount': None}) |
|
|
|
|
self.assertEqual(discounts_for_packages[0], {'package': package.pk, 'max_discount': 50}) |
|
|
|
|
self.assertEqual(all_packages_discounts, None) |
|
|
|
|
self.assertEqual(discounts_for_packages, {package.pk: 50}) |
|
|
|
|
|
|
|
|
|
def test_exclude_personal_discounts_without_user(self): |
|
|
|
|
user_1 = UserFactory.create() |
|
|
|
|
@ -210,8 +209,8 @@ class DiscountForPackagesModelTestCase(TestCase): |
|
|
|
|
DiscountFactory.create(end=now() + timedelta(days=5), value=50, package=package, |
|
|
|
|
product=Discount.PRODUCT_ONE_PACKAGE, client=user_1) |
|
|
|
|
all_packages_discounts, discounts_for_packages = Discount.objects.get_packages_discounts() |
|
|
|
|
self.assertEqual(all_packages_discounts, {'max_discount': None}) |
|
|
|
|
self.assertEqual(discounts_for_packages[0], {'package': package.pk, 'max_discount': 30}) |
|
|
|
|
self.assertEqual(all_packages_discounts, None) |
|
|
|
|
self.assertEqual(discounts_for_packages, {package.pk: 30}) |
|
|
|
|
|
|
|
|
|
def test_discount_for_one_package_and_all_packages(self): |
|
|
|
|
package = PackageFactory.create() |
|
|
|
|
@ -222,8 +221,8 @@ class DiscountForPackagesModelTestCase(TestCase): |
|
|
|
|
DiscountFactory.create(end=now() + timedelta(days=5), value=10, product=Discount.PRODUCT_ALL_PACKAGES) |
|
|
|
|
|
|
|
|
|
all_packages_discounts, discounts_for_packages = Discount.objects.get_packages_discounts() |
|
|
|
|
self.assertEqual(all_packages_discounts, {'max_discount': 10}) |
|
|
|
|
self.assertEqual(discounts_for_packages[0], {'package': package.pk, 'max_discount': 50}) |
|
|
|
|
self.assertEqual(all_packages_discounts, 10) |
|
|
|
|
self.assertEqual(discounts_for_packages, {package.pk: 50}) |
|
|
|
|
|
|
|
|
|
def test_personal_discounts(self): |
|
|
|
|
package = PackageFactory.create() |
|
|
|
|
@ -234,8 +233,8 @@ class DiscountForPackagesModelTestCase(TestCase): |
|
|
|
|
DiscountFactory.create(end=now() + timedelta(days=5), value=10, product=Discount.PRODUCT_ALL_PACKAGES) |
|
|
|
|
|
|
|
|
|
all_packages_discounts, discounts_for_packages = Discount.objects.get_packages_discounts(user=self.user) |
|
|
|
|
self.assertEqual(all_packages_discounts, {'max_discount': 10}) |
|
|
|
|
self.assertEqual(discounts_for_packages[0], {'package': package.pk, 'max_discount': 50}) |
|
|
|
|
self.assertEqual(all_packages_discounts, 10) |
|
|
|
|
self.assertEqual(discounts_for_packages, {package.pk: 50}) |
|
|
|
|
|
|
|
|
|
def test_personal_discounts_multiple_users(self): |
|
|
|
|
user_1 = UserFactory() |
|
|
|
|
@ -249,12 +248,12 @@ class DiscountForPackagesModelTestCase(TestCase): |
|
|
|
|
client=self.user) |
|
|
|
|
|
|
|
|
|
all_packages_discounts, discounts_for_packages = Discount.objects.get_packages_discounts(user=self.user) |
|
|
|
|
self.assertEqual(all_packages_discounts, {'max_discount': 10}) |
|
|
|
|
self.assertEqual(discounts_for_packages[0], {'package': package.pk, 'max_discount': 50}) |
|
|
|
|
self.assertEqual(all_packages_discounts, 10) |
|
|
|
|
self.assertEqual(discounts_for_packages, {package.pk: 50}) |
|
|
|
|
|
|
|
|
|
all_packages_discounts, discounts_for_packages = Discount.objects.get_packages_discounts(user=user_1) |
|
|
|
|
self.assertEqual(all_packages_discounts, {'max_discount': None}) |
|
|
|
|
self.assertEqual(discounts_for_packages[0], {'package': package.pk, 'max_discount': 30}) |
|
|
|
|
self.assertEqual(all_packages_discounts, None) |
|
|
|
|
self.assertEqual(discounts_for_packages, {package.pk: 30}) |
|
|
|
|
|
|
|
|
|
def test_discount_for_one_package_without_user(self): |
|
|
|
|
package_1 = PackageFactory.create() |
|
|
|
|
@ -270,9 +269,9 @@ class DiscountForPackagesModelTestCase(TestCase): |
|
|
|
|
|
|
|
|
|
all_packages_discounts, discounts_for_packages = Discount.objects.get_packages_discounts(user=None, |
|
|
|
|
package=package_1) |
|
|
|
|
self.assertEqual(all_packages_discounts, {'max_discount': None}) |
|
|
|
|
self.assertEqual(all_packages_discounts, None) |
|
|
|
|
self.assertEqual(len(discounts_for_packages), 1) |
|
|
|
|
self.assertEqual(discounts_for_packages[0], {'package': package_1.pk, 'max_discount': 30}) |
|
|
|
|
self.assertEqual(discounts_for_packages, {package_1.pk: 30}) |
|
|
|
|
|
|
|
|
|
def test_discount_for_one_package_with_multiple_users(self): |
|
|
|
|
user_1 = UserFactory.create() |
|
|
|
|
@ -295,15 +294,15 @@ class DiscountForPackagesModelTestCase(TestCase): |
|
|
|
|
|
|
|
|
|
all_packages_discounts, discounts_for_packages = Discount.objects.get_packages_discounts(user=user_1, |
|
|
|
|
package=package_1) |
|
|
|
|
self.assertEqual(all_packages_discounts, {'max_discount': 10}) |
|
|
|
|
self.assertEqual(all_packages_discounts, 10) |
|
|
|
|
self.assertEqual(len(discounts_for_packages), 1) |
|
|
|
|
self.assertEqual(discounts_for_packages[0], {'package': package_1.pk, 'max_discount': 30}) |
|
|
|
|
self.assertEqual(discounts_for_packages, {package_1.pk: 30}) |
|
|
|
|
|
|
|
|
|
all_packages_discounts, discounts_for_packages = Discount.objects.get_packages_discounts(user=self.user, |
|
|
|
|
package=package_1) |
|
|
|
|
self.assertEqual(all_packages_discounts, {'max_discount': 50}) |
|
|
|
|
self.assertEqual(all_packages_discounts, 50) |
|
|
|
|
self.assertEqual(len(discounts_for_packages), 1) |
|
|
|
|
self.assertEqual(discounts_for_packages[0], {'package': package_1.pk, 'max_discount': 30}) |
|
|
|
|
self.assertEqual(discounts_for_packages, {package_1.pk: 30}) |
|
|
|
|
|
|
|
|
|
def test_not_active_discount(self): |
|
|
|
|
DiscountFactory.create(end=now() + timedelta(days=5), value=60, product=Discount.PRODUCT_ALL_PACKAGES, |
|
|
|
|
@ -312,7 +311,7 @@ class DiscountForPackagesModelTestCase(TestCase): |
|
|
|
|
|
|
|
|
|
all_packages_discounts, discounts_for_packages = Discount.objects.get_packages_discounts() |
|
|
|
|
|
|
|
|
|
self.assertEqual(all_packages_discounts, {'max_discount': 40}) |
|
|
|
|
self.assertEqual(all_packages_discounts, 40) |
|
|
|
|
self.assertEqual(len(discounts_for_packages), 0) |
|
|
|
|
|
|
|
|
|
def test_old_discount(self): |
|
|
|
|
@ -322,7 +321,7 @@ class DiscountForPackagesModelTestCase(TestCase): |
|
|
|
|
|
|
|
|
|
all_packages_discounts, discounts_for_packages = Discount.objects.get_packages_discounts() |
|
|
|
|
|
|
|
|
|
self.assertEqual(all_packages_discounts, {'max_discount': 40}) |
|
|
|
|
self.assertEqual(all_packages_discounts, 40) |
|
|
|
|
self.assertEqual(len(discounts_for_packages), 0) |
|
|
|
|
|
|
|
|
|
def test_discount_from_the_future(self): |
|
|
|
|
@ -332,5 +331,95 @@ class DiscountForPackagesModelTestCase(TestCase): |
|
|
|
|
|
|
|
|
|
all_packages_discounts, discounts_for_packages = Discount.objects.get_packages_discounts() |
|
|
|
|
|
|
|
|
|
self.assertEqual(all_packages_discounts, {'max_discount': 40}) |
|
|
|
|
self.assertEqual(all_packages_discounts, 40) |
|
|
|
|
self.assertEqual(len(discounts_for_packages), 0) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class DiscountCalculateTestCase(TestCase): |
|
|
|
|
|
|
|
|
|
def test_discount_with_package(self): |
|
|
|
|
package = PackageFactory.create(price=Decimal('5000.5')) |
|
|
|
|
DiscountFactory.create(end=now() + timedelta(days=5), value=40, product=Discount.PRODUCT_ONE_PACKAGE, |
|
|
|
|
package=package) |
|
|
|
|
all_packages_discounts, discounts_for_packages = Discount.objects.get_packages_discounts() |
|
|
|
|
value = Discount.get_price_with_discount(package.pk, package.price, discounts_for_packages, |
|
|
|
|
all_packages_discounts) |
|
|
|
|
self.assertEqual(value, Decimal('3000.3')) |
|
|
|
|
|
|
|
|
|
def test_discount_with_package_discount_for_all(self): |
|
|
|
|
package = PackageFactory.create(price=Decimal('5000')) |
|
|
|
|
DiscountFactory.create(end=now() + timedelta(days=5), value=40, product=Discount.PRODUCT_ALL_PACKAGES) |
|
|
|
|
all_packages_discounts, discounts_for_packages = Discount.objects.get_packages_discounts() |
|
|
|
|
value = Discount.get_price_with_discount(package.pk, package.price, discounts_for_packages, |
|
|
|
|
all_packages_discounts) |
|
|
|
|
self.assertEqual(value, Decimal('3000')) |
|
|
|
|
|
|
|
|
|
def test_discount_with_package_if_all_discount_gt_discount_package(self): |
|
|
|
|
package = PackageFactory.create(price=Decimal('5000')) |
|
|
|
|
DiscountFactory.create(end=now() + timedelta(days=5), value=50, product=Discount.PRODUCT_ALL_PACKAGES) |
|
|
|
|
DiscountFactory.create(end=now() + timedelta(days=5), value=30, product=Discount.PRODUCT_ONE_PACKAGE, |
|
|
|
|
package=package) |
|
|
|
|
all_packages_discounts, discounts_for_packages = Discount.objects.get_packages_discounts() |
|
|
|
|
value = Discount.get_price_with_discount(package.pk, package.price, discounts_for_packages, |
|
|
|
|
all_packages_discounts) |
|
|
|
|
self.assertEqual(value, Decimal('2500')) |
|
|
|
|
|
|
|
|
|
def test_discount_with_package_if_all_discount_lt_discount_package(self): |
|
|
|
|
package = PackageFactory.create(price=Decimal('5000')) |
|
|
|
|
DiscountFactory.create(end=now() + timedelta(days=5), value=50, product=Discount.PRODUCT_ALL_PACKAGES) |
|
|
|
|
DiscountFactory.create(end=now() + timedelta(days=5), value=60, product=Discount.PRODUCT_ONE_PACKAGE, |
|
|
|
|
package=package) |
|
|
|
|
all_packages_discounts, discounts_for_packages = Discount.objects.get_packages_discounts() |
|
|
|
|
value = Discount.get_price_with_discount(package.pk, package.price, discounts_for_packages, |
|
|
|
|
all_packages_discounts) |
|
|
|
|
self.assertEqual(value, Decimal('2000')) |
|
|
|
|
|
|
|
|
|
def test_discount_with_package_without_discount(self): |
|
|
|
|
package = PackageFactory.create(price=Decimal('5000')) |
|
|
|
|
all_packages_discounts, discounts_for_packages = Discount.objects.get_packages_discounts() |
|
|
|
|
value = Discount.get_price_with_discount(package.pk, package.price, discounts_for_packages, |
|
|
|
|
all_packages_discounts) |
|
|
|
|
self.assertEqual(value, Decimal('5000')) |
|
|
|
|
|
|
|
|
|
def test_discount_with_course(self): |
|
|
|
|
course = CourseFactory.create(price=Decimal('5000.5')) |
|
|
|
|
DiscountFactory.create(end=now() + timedelta(days=5), value=40, product=Discount.PRODUCT_ONE_COURSE, |
|
|
|
|
course=course) |
|
|
|
|
all_courses_discounts, discounts_for_courses = Discount.objects.get_courses_discounts() |
|
|
|
|
value = Discount.get_price_with_discount(course.pk, course.price, discounts_for_courses, |
|
|
|
|
all_courses_discounts) |
|
|
|
|
self.assertEqual(value, Decimal('3000.3')) |
|
|
|
|
|
|
|
|
|
def test_discount_with_course_discount_for_all(self): |
|
|
|
|
course = CourseFactory.create(price=Decimal('5000')) |
|
|
|
|
DiscountFactory.create(end=now() + timedelta(days=5), value=40, product=Discount.PRODUCT_ALL_COURSES) |
|
|
|
|
all_courses_discounts, discounts_for_courses = Discount.objects.get_courses_discounts() |
|
|
|
|
value = Discount.get_price_with_discount(course.pk, course.price, discounts_for_courses, all_courses_discounts) |
|
|
|
|
self.assertEqual(value, Decimal('3000')) |
|
|
|
|
|
|
|
|
|
def test_discount_with_course_if_all_discount_gt_discount_course(self): |
|
|
|
|
course = CourseFactory.create(price=Decimal('5000')) |
|
|
|
|
DiscountFactory.create(end=now() + timedelta(days=5), value=50, product=Discount.PRODUCT_ALL_COURSES) |
|
|
|
|
DiscountFactory.create(end=now() + timedelta(days=5), value=30, product=Discount.PRODUCT_ONE_COURSE, |
|
|
|
|
course=course) |
|
|
|
|
all_courses_discounts, discounts_for_courses = Discount.objects.get_courses_discounts() |
|
|
|
|
value = Discount.get_price_with_discount(course.pk, course.price, discounts_for_courses, |
|
|
|
|
all_courses_discounts) |
|
|
|
|
self.assertEqual(value, Decimal('2500')) |
|
|
|
|
|
|
|
|
|
def test_discount_with_course_if_all_discount_lt_discount_course(self): |
|
|
|
|
course = CourseFactory.create(price=Decimal('5000')) |
|
|
|
|
DiscountFactory.create(end=now() + timedelta(days=5), value=50, product=Discount.PRODUCT_ALL_COURSES) |
|
|
|
|
DiscountFactory.create(end=now() + timedelta(days=5), value=60, product=Discount.PRODUCT_ONE_COURSE, |
|
|
|
|
course=course) |
|
|
|
|
all_courses_discounts, discounts_for_courses = Discount.objects.get_courses_discounts() |
|
|
|
|
value = Discount.get_price_with_discount(course.pk, course.price, discounts_for_courses, |
|
|
|
|
all_courses_discounts) |
|
|
|
|
self.assertEqual(value, Decimal('2000')) |
|
|
|
|
|
|
|
|
|
def test_discount_with_course_without_discount(self): |
|
|
|
|
course = CourseFactory.create(price=Decimal('5000')) |
|
|
|
|
all_courses_discounts, discounts_for_courses = Discount.objects.get_courses_discounts() |
|
|
|
|
value = Discount.get_price_with_discount(course.pk, course.price, discounts_for_courses, |
|
|
|
|
all_courses_discounts) |
|
|
|
|
self.assertEqual(value, Decimal('5000')) |
|
|
|
|
|