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.
72 lines
2.0 KiB
72 lines
2.0 KiB
import uuid
|
|
|
|
import factory
|
|
import factory.fuzzy
|
|
|
|
from functools import partial
|
|
|
|
from django.utils import timezone
|
|
from yandex_money.models import Payment
|
|
|
|
from courses.factories import CourseFactory, TopicFactory, LessonFactory
|
|
from access.factories import UserFactory
|
|
from finance.models import Invoice
|
|
|
|
Faker = partial(factory.Faker, locale='ru_RU')
|
|
|
|
|
|
class BillFactory(factory.django.DjangoModelFactory):
|
|
class Meta:
|
|
model = 'finance.Bill'
|
|
|
|
user = factory.SubFactory(UserFactory)
|
|
opener = factory.SubFactory(UserFactory)
|
|
description = Faker('text')
|
|
|
|
@factory.lazy_attribute
|
|
def course_token(self):
|
|
course = CourseFactory()
|
|
topic = TopicFactory(
|
|
course=course
|
|
)
|
|
LessonFactory(
|
|
topic=topic
|
|
)
|
|
return course.token
|
|
|
|
|
|
class InvoiceFactory(factory.django.DjangoModelFactory):
|
|
class Meta:
|
|
model = 'finance.Invoice'
|
|
|
|
status = factory.fuzzy.FuzzyChoice(
|
|
(choice[0] for choice in Invoice.BILL_STATUSES)
|
|
)
|
|
price = factory.fuzzy.FuzzyDecimal(1000)
|
|
real_price = factory.fuzzy.FuzzyDecimal(1000)
|
|
method = factory.fuzzy.FuzzyChoice(
|
|
(choice[0] for choice in Invoice.BILL_METHOD)
|
|
)
|
|
key = factory.Faker('pyint')
|
|
yandex_pay = factory.SubFactory('factories.finance.PaymentFactory')
|
|
comment = Faker('word')
|
|
bill = factory.SubFactory(BillFactory)
|
|
|
|
|
|
class PaymentFactory(factory.django.DjangoModelFactory):
|
|
class Meta:
|
|
model = 'yandex_money.Payment'
|
|
|
|
user = factory.SubFactory(UserFactory)
|
|
pub_date = timezone.now()
|
|
order_amount = factory.fuzzy.FuzzyDecimal(1000)
|
|
payment_type = factory.fuzzy.FuzzyChoice(
|
|
(choice[0] for choice in Payment.PAYMENT_TYPE.CHOICES)
|
|
)
|
|
order_number = factory.LazyFunction(uuid.uuid4)
|
|
status = factory.fuzzy.FuzzyChoice(
|
|
(choice[0] for choice in Payment.STATUS.CHOICES)
|
|
)
|
|
invoice_id = factory.Faker('pyint')
|
|
shop_amount = factory.fuzzy.FuzzyDecimal(1000)
|
|
performed_datetime = timezone.now()
|
|
|