Retrofit programs data mixin with factories

This should make it easier to test programs-related features. Preface to ECOM-3200.
This commit is contained in:
Renzo Lucioni
2016-04-20 15:59:35 -04:00
parent f8f5e70346
commit 1ffa81f746
4 changed files with 127 additions and 254 deletions

View File

@@ -4,67 +4,16 @@ Tools to create programs-related data for use in bok choy tests.
from collections import namedtuple
import json
import factory
import requests
from . import PROGRAMS_STUB_URL
from .config import ConfigModelFixture
from openedx.core.djangoapps.programs.tests import factories
FakeProgram = namedtuple('FakeProgram', ['name', 'status', 'org_key', 'course_id'])
class Program(factory.Factory):
"""
Factory for stubbing program resources from the Programs API (v1).
"""
class Meta(object):
model = dict
id = factory.Sequence(lambda n: n) # pylint: disable=invalid-name
name = 'dummy-program-name'
subtitle = 'dummy-program-subtitle'
category = 'xseries'
status = 'unpublished'
marketing_slug = factory.Sequence(lambda n: 'slug-{}'.format(n)) # pylint: disable=unnecessary-lambda
organizations = []
course_codes = []
banner_image_urls = {}
class Organization(factory.Factory):
"""
Factory for stubbing nested organization resources from the Programs API (v1).
"""
class Meta(object):
model = dict
key = 'dummyX'
display_name = 'dummy-org-display-name'
class CourseCode(factory.Factory):
"""
Factory for stubbing nested course code resources from the Programs API (v1).
"""
class Meta(object):
model = dict
display_name = 'dummy-org-display-name'
run_modes = []
class RunMode(factory.Factory):
"""
Factory for stubbing nested run mode resources from the Programs API (v1).
"""
class Meta(object):
model = dict
course_key = 'org/course/run'
mode_slug = 'verified'
class ProgramsFixture(object):
"""
Interface to set up mock responses from the Programs stub server.
@@ -78,11 +27,11 @@ class ProgramsFixture(object):
"""
programs = []
for program in fake_programs:
run_mode = RunMode(course_key=program.course_id)
course_code = CourseCode(run_modes=[run_mode])
org = Organization(key=program.org_key)
run_mode = factories.RunMode(course_key=program.course_id)
course_code = factories.CourseCode(run_modes=[run_mode])
org = factories.Organization(key=program.org_key)
program = Program(
program = factories.Program(
name=program.name,
status=program.status,
organizations=[org],