Commit 0a05ea5e by Clinton Blackburn

Removed duplicated code in marketing site data loader tests

ECOM-5094
parent a6eb3740
...@@ -17,8 +17,7 @@ from course_discovery.apps.course_metadata.data_loaders.tests.mixins import ApiC ...@@ -17,8 +17,7 @@ from course_discovery.apps.course_metadata.data_loaders.tests.mixins import ApiC
from course_discovery.apps.course_metadata.models import ( from course_discovery.apps.course_metadata.models import (
Course, CourseOrganization, CourseRun, Organization, Subject, Program, Video, Person, Course, CourseOrganization, CourseRun, Organization, Subject, Program, Video, Person,
) )
from course_discovery.apps.course_metadata.tests import mock_data from course_discovery.apps.course_metadata.tests import factories, mock_data
from course_discovery.apps.course_metadata.tests.factories import ProgramFactory, OrganizationFactory
from course_discovery.apps.ietf_language_tags.models import LanguageTag from course_discovery.apps.ietf_language_tags.models import LanguageTag
ENGLISH_LANGUAGE_TAG = LanguageTag(code='en-us', name='English - United States') ENGLISH_LANGUAGE_TAG = LanguageTag(code='en-us', name='English - United States')
...@@ -212,6 +211,8 @@ class DrupalApiDataLoaderTests(ApiClientTestMixin, DataLoaderTestMixin, TestCase ...@@ -212,6 +211,8 @@ class DrupalApiDataLoaderTests(ApiClientTestMixin, DataLoaderTestMixin, TestCase
class AbstractMarketingSiteDataLoaderTestMixin(DataLoaderTestMixin): class AbstractMarketingSiteDataLoaderTestMixin(DataLoaderTestMixin):
mocked_data = []
@property @property
def api_url(self): def api_url(self):
return self.partner.marketing_site_url_root return self.partner.marketing_site_url_root
...@@ -241,6 +242,19 @@ class AbstractMarketingSiteDataLoaderTestMixin(DataLoaderTestMixin): ...@@ -241,6 +242,19 @@ class AbstractMarketingSiteDataLoaderTestMixin(DataLoaderTestMixin):
return request_callback return request_callback
def mock_api(self):
bodies = self.mocked_data
url = self.api_url + 'node.json'
responses.add_callback(
responses.GET,
url,
callback=self.mock_api_callback(url, bodies),
content_type=JSON
)
return bodies
def mock_login_response(self, failure=False): def mock_login_response(self, failure=False):
url = self.api_url + 'user' url = self.api_url + 'user'
landing_url = '{base}users/{username}'.format(base=self.api_url, landing_url = '{base}users/{username}'.format(base=self.api_url,
...@@ -293,24 +307,16 @@ class AbstractMarketingSiteDataLoaderTestMixin(DataLoaderTestMixin): ...@@ -293,24 +307,16 @@ class AbstractMarketingSiteDataLoaderTestMixin(DataLoaderTestMixin):
class XSeriesMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixin, TestCase): class XSeriesMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixin, TestCase):
loader_class = XSeriesMarketingSiteDataLoader loader_class = XSeriesMarketingSiteDataLoader
mocked_data = mock_data.MARKETING_SITE_API_XSERIES_BODIES
def create_mock_programs(self, programs): def create_mock_programs(self, programs):
for program in programs: for program in programs:
marketing_slug = program['url'].split('/')[-1] marketing_slug = program['url'].split('/')[-1]
ProgramFactory(marketing_slug=marketing_slug, partner=self.partner) factories.ProgramFactory(marketing_slug=marketing_slug, partner=self.partner)
def mock_api(self): def mock_api(self):
bodies = mock_data.MARKETING_SITE_API_XSERIES_BODIES bodies = super().mock_api()
self.create_mock_programs(bodies) self.create_mock_programs(bodies)
url = self.api_url + 'node.json'
responses.add_callback(
responses.GET,
url,
callback=self.mock_api_callback(url, bodies),
content_type=JSON
)
return bodies return bodies
def assert_program_loaded(self, data): def assert_program_loaded(self, data):
...@@ -362,19 +368,7 @@ class XSeriesMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMix ...@@ -362,19 +368,7 @@ class XSeriesMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMix
class SubjectMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixin, TestCase): class SubjectMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixin, TestCase):
loader_class = SubjectMarketingSiteDataLoader loader_class = SubjectMarketingSiteDataLoader
mocked_data = mock_data.MARKETING_SITE_API_SUBJECT_BODIES
def mock_api(self):
bodies = mock_data.MARKETING_SITE_API_SUBJECT_BODIES
url = self.api_url + 'node.json'
responses.add_callback(
responses.GET,
url,
callback=self.mock_api_callback(url, bodies),
content_type=JSON
)
return bodies
def assert_subject_loaded(self, data): def assert_subject_loaded(self, data):
slug = data['field_subject_url_slug'] slug = data['field_subject_url_slug']
...@@ -404,19 +398,7 @@ class SubjectMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMix ...@@ -404,19 +398,7 @@ class SubjectMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMix
class SchoolMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixin, TestCase): class SchoolMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixin, TestCase):
loader_class = SchoolMarketingSiteDataLoader loader_class = SchoolMarketingSiteDataLoader
mocked_data = mock_data.MARKETING_SITE_API_SCHOOL_BODIES
def mock_api(self):
bodies = mock_data.MARKETING_SITE_API_SCHOOL_BODIES
url = self.api_url + 'node.json'
responses.add_callback(
responses.GET,
url,
callback=self.mock_api_callback(url, bodies),
content_type=JSON
)
return bodies
def assert_school_loaded(self, data): def assert_school_loaded(self, data):
key = data['title'] key = data['title']
...@@ -448,19 +430,7 @@ class SchoolMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixi ...@@ -448,19 +430,7 @@ class SchoolMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixi
class SponsorMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixin, TestCase): class SponsorMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixin, TestCase):
loader_class = SponsorMarketingSiteDataLoader loader_class = SponsorMarketingSiteDataLoader
mocked_data = mock_data.MARKETING_SITE_API_SPONSOR_BODIES
def mock_api(self):
bodies = mock_data.MARKETING_SITE_API_SPONSOR_BODIES
url = self.api_url + 'node.json'
responses.add_callback(
responses.GET,
url,
callback=self.mock_api_callback(url, bodies),
content_type=JSON
)
return bodies
def assert_sponsor_loaded(self, data): def assert_sponsor_loaded(self, data):
uuid = data['uuid'] uuid = data['uuid']
...@@ -494,19 +464,7 @@ class SponsorMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMix ...@@ -494,19 +464,7 @@ class SponsorMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMix
class PersonMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixin, TestCase): class PersonMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixin, TestCase):
loader_class = PersonMarketingSiteDataLoader loader_class = PersonMarketingSiteDataLoader
mocked_data = mock_data.MARKETING_SITE_API_PERSON_BODIES
def mock_api(self):
bodies = mock_data.MARKETING_SITE_API_PERSON_BODIES
url = self.api_url + 'node.json'
responses.add_callback(
responses.GET,
url,
callback=self.mock_api_callback(url, bodies),
content_type=JSON
)
return bodies
def assert_person_loaded(self, data): def assert_person_loaded(self, data):
uuid = data['uuid'] uuid = data['uuid']
...@@ -537,7 +495,7 @@ class PersonMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixi ...@@ -537,7 +495,7 @@ class PersonMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixi
def test_ingest(self): def test_ingest(self):
self.mock_login_response() self.mock_login_response()
people = self.mock_api() people = self.mock_api()
OrganizationFactory(name='MIT') factories.OrganizationFactory(name='MIT')
self.loader.ingest() self.loader.ingest()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment