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

import uuid
import factory
import factory.fuzzy
from functools import partial
from django.utils import timezone
from yandex_money.models import Payment
from factories.courses import CourseFactory, TopicFactory, LessonFactory
from factories.users 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()