You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

96 lines
4.7 KiB

# -*- coding: utf-8 -*-
import json
from datetime import timedelta
from django.test import TestCase
from django.utils.timezone import now
from django.shortcuts import reverse
from factory.faker import Faker
from project.tests.factories import UserFactory, CourseFactory
from apps.payment.models import CoursePayment, SchoolPayment, UserBonus, Payment
from apps.user.models import User
class AutoAddingUserBonusTestCase(TestCase):
def test_adding_user_bonuses_after_paid_more_one(self):
user = UserFactory.create(role=User.USER_ROLE, first_name='', last_name='', phone='')
course = CourseFactory.create(price=1000)
course2 = CourseFactory.create(price=1000)
self.assertEqual(user.bonus, 0, 'При создании есть бонусы')
cp = CoursePayment.objects.create(user=user, course=course, access_expire=now() + timedelta(100))
cp.status = Payment.PW_PAID_STATUSES[0]
cp.save()
del user.__dict__['bonus']
self.assertEqual(user.bonus, 0, 'Есть бонусы после покупки 1 курса')
cp2 = CoursePayment.objects.create(user=user, course=course2, access_expire=now() + timedelta(100))
cp2.status = Payment.PW_PAID_STATUSES[0]
cp2.save()
del user.__dict__['bonus']
self.assertEqual(user.bonus, UserBonus.AMOUNT_PAID_ONE_MORE, 'Неверное кол-во бонусов после покупки 2 курсов')
cp.delete()
del user.__dict__['bonus']
self.assertEqual(user.bonus, UserBonus.AMOUNT_PAID_ONE_MORE, 'Изменились бонусы после удаления оплаты 1 курса')
user.bonuses.all().delete()
sp = SchoolPayment.objects.create(user=user, weekdays=[1, 2, 3], add_days=False, date_start=now().date(),
date_end=(now() + timedelta(30)).date(), amount=1000, status=Payment.PW_PAID_STATUSES[0])
del user.__dict__['bonus']
self.assertEqual(user.bonus, UserBonus.AMOUNT_PAID_ONE_MORE, 'Неверное кол-во бонусов после покупки курса и школы')
user.bonuses.all().delete()
cp2.delete()
sp2 = SchoolPayment.objects.create(user=user, weekdays=[1, 2, 3], add_days=False, date_start=(now() + timedelta(31)).date(),
date_end=(now() + timedelta(60)).date(), amount=1000, status=Payment.PW_PAID_STATUSES[0])
del user.__dict__['bonus']
self.assertEqual(user.bonus, UserBonus.AMOUNT_PAID_ONE_MORE, 'Неверное кол-во бонусов после покупки 2 месяцев школы')
User.objects.all().delete()
CoursePayment.objects.all().delete()
SchoolPayment.objects.all().delete()
UserBonus.objects.all().delete()
def test_adding_user_bonuses_after_fill_profile(self):
user = UserFactory.create(role=User.USER_ROLE, first_name='', last_name='', phone='')
self.assertEqual(user.bonus, 0, 'При создании есть бонусы')
self.client.force_login(user)
data = {k: user.__dict__[k] for k in ['email', 'slug', 'city',
'country', 'birthday', 'gender', 'about', 'instagram', 'facebook',
'twitter', 'pinterest', 'youtube', 'vkontakte', 'site']}
data.update({
'first_name': Faker('first_name').generate({}),
'last_name': Faker('last_name').generate({}),
'phone': '+79123456789',
'old_password': '',
'new_password1': '',
'new_password2': '',
})
for k, v in data.items():
if v is None:
data[k] = ''
self.client.post(reverse('user-edit-profile'), data)
del user.__dict__['bonus']
self.assertEqual(user.bonus, UserBonus.AMOUNT_FILL_PROFILE, 'Неверное кол-во бонусов после заполнения профиля')
User.objects.all().delete()
UserBonus.objects.all().delete()
def test_adding_user_bonuses_after_fill_review_url(self):
user = UserFactory.create(role=User.USER_ROLE, first_name='', last_name='', phone='')
self.assertEqual(user.bonus, 0, 'При создании есть бонусы')
self.client.force_login(user)
self.client.patch('/api/v1/users/%d/' % user.id, json.dumps({
'review_url': 'http://youtube.com/review_url',
}), 'application/json')
del user.__dict__['bonus']
self.assertEqual(user.bonus, UserBonus.AMOUNT_HAVE_REVIEW, 'Неверное кол-во бонусов после заполнения ссылки на отзыв')
User.objects.all().delete()
UserBonus.objects.all().delete()