Files
edx-platform/lms/djangoapps/badges/tests/factories.py
2021-02-25 18:15:27 +05:00

89 lines
2.2 KiB
Python

"""
Factories for Badge tests
"""
from random import random
import factory
from django.core.files.base import ContentFile
from factory import DjangoModelFactory
from factory.django import ImageField
from common.djangoapps.student.tests.factories import UserFactory
from lms.djangoapps.badges.models import ( # lint-amnesty, pylint: disable=line-too-long
BadgeAssertion,
BadgeClass,
CourseCompleteImageConfiguration,
CourseEventBadgesConfiguration
)
def generate_dummy_image(_unused):
"""
Used for image fields to create a sane default.
"""
return ContentFile(
ImageField()._make_data( # pylint: disable=protected-access
{'color': 'blue', 'width': 50, 'height': 50, 'format': 'PNG'}
), 'test.png'
)
class CourseCompleteImageConfigurationFactory(DjangoModelFactory):
"""
Factory for BadgeImageConfigurations
"""
class Meta:
model = CourseCompleteImageConfiguration
mode = 'honor'
icon = factory.LazyAttribute(generate_dummy_image)
class BadgeClassFactory(DjangoModelFactory):
"""
Factory for BadgeClass
"""
class Meta:
model = BadgeClass
slug = 'test_slug'
issuing_component = 'test_component'
display_name = 'Test Badge'
description = "Yay! It's a test badge."
criteria = 'https://example.com/syllabus'
mode = 'honor'
image = factory.LazyAttribute(generate_dummy_image)
class RandomBadgeClassFactory(BadgeClassFactory):
"""
Same as BadgeClassFactory, but randomize the slug.
"""
slug = factory.lazy_attribute(lambda _: 'test_slug_' + str(random()).replace('.', '_'))
class BadgeAssertionFactory(DjangoModelFactory):
"""
Factory for BadgeAssertions
"""
class Meta:
model = BadgeAssertion
user = factory.SubFactory(UserFactory)
badge_class = factory.SubFactory(RandomBadgeClassFactory)
data = {}
assertion_url = 'http://example.com/example.json'
image_url = 'http://example.com/image.png'
class CourseEventBadgesConfigurationFactory(DjangoModelFactory):
"""
Factory for CourseEventsBadgesConfiguration
"""
class Meta:
model = CourseEventBadgesConfiguration
enabled = True