Commit 25474f38 by Simon Chen

ECOM-5392 only publish to drupal for MicroMasters Program

parent 431fcfa9
...@@ -98,6 +98,10 @@ class MarketingSitePublisher(object): ...@@ -98,6 +98,10 @@ class MarketingSitePublisher(object):
partner=program.partner.short_code) partner=program.partner.short_code)
raise ProgramPublisherException(msg) raise ProgramPublisherException(msg)
if program.type.name != 'MicroMasters':
# Currently, we should not publish any programs that are not MicroMasters types to Marketing Site
return
if self.data_before and \ if self.data_before and \
all(self.data_before[key] == getattr(program, key) for key in ['title', 'status', 'type']): all(self.data_before[key] == getattr(program, key) for key in ['title', 'status', 'type']):
# We don't need to publish to marketing site because # We don't need to publish to marketing site because
......
...@@ -17,7 +17,7 @@ from course_discovery.apps.core.utils import SearchQuerySetWrapper ...@@ -17,7 +17,7 @@ from course_discovery.apps.core.utils import SearchQuerySetWrapper
from course_discovery.apps.course_metadata.models import ( from course_discovery.apps.course_metadata.models import (
AbstractMediaModel, AbstractNamedModel, AbstractValueModel, AbstractMediaModel, AbstractNamedModel, AbstractValueModel,
CorporateEndorsement, Program, Course, CourseRun, Endorsement, CorporateEndorsement, Program, Course, CourseRun, Endorsement,
FAQ, SeatType FAQ, SeatType, ProgramType,
) )
from course_discovery.apps.course_metadata.tests import factories, toggle_switch from course_discovery.apps.course_metadata.tests import factories, toggle_switch
from course_discovery.apps.course_metadata.tests.factories import CourseRunFactory, ImageFactory from course_discovery.apps.course_metadata.tests.factories import CourseRunFactory, ImageFactory
...@@ -407,7 +407,7 @@ class ProgramTests(MarketingSitePublisherTestMixin): ...@@ -407,7 +407,7 @@ class ProgramTests(MarketingSitePublisherTestMixin):
self.program.partner.marketing_site_url_root = self.api_root self.program.partner.marketing_site_url_root = self.api_root
self.program.partner.marketing_site_api_username = self.username self.program.partner.marketing_site_api_username = self.username
self.program.partner.marketing_site_api_password = self.password self.program.partner.marketing_site_api_password = self.password
self.program.save() self.program.type = ProgramType.objects.get(name='MicroMasters')
self.mock_api_client(200) self.mock_api_client(200)
self.mock_node_retrieval(self.program.uuid) self.mock_node_retrieval(self.program.uuid)
self.mock_node_edit(200) self.mock_node_edit(200)
...@@ -417,9 +417,22 @@ class ProgramTests(MarketingSitePublisherTestMixin): ...@@ -417,9 +417,22 @@ class ProgramTests(MarketingSitePublisherTestMixin):
self.assert_responses_call_count(6) self.assert_responses_call_count(6)
@responses.activate @responses.activate
def test_xseries_program_save(self):
"""
Make sure if the Program instance is of type XSeries, we do not publish to Marketing Site
"""
self.program.partner.marketing_site_url_root = self.api_root
self.program.partner.marketing_site_api_username = self.username
self.program.partner.marketing_site_api_password = self.password
self.program.type = ProgramType.objects.get(name='XSeries')
toggle_switch('publish_program_to_marketing_site', True)
self.program.title = FuzzyText().fuzz()
self.program.save()
self.assert_responses_call_count(0)
@responses.activate
def test_save_and_no_marketing_site(self): def test_save_and_no_marketing_site(self):
self.program.partner.marketing_site_url_root = None self.program.partner.marketing_site_url_root = None
self.program.save()
toggle_switch('publish_program_to_marketing_site', True) toggle_switch('publish_program_to_marketing_site', True)
self.program.title = FuzzyText().fuzz() self.program.title = FuzzyText().fuzz()
self.program.save() self.program.save()
...@@ -430,7 +443,7 @@ class ProgramTests(MarketingSitePublisherTestMixin): ...@@ -430,7 +443,7 @@ class ProgramTests(MarketingSitePublisherTestMixin):
self.program.partner.marketing_site_url_root = self.api_root self.program.partner.marketing_site_url_root = self.api_root
self.program.partner.marketing_site_api_username = self.username self.program.partner.marketing_site_api_username = self.username
self.program.partner.marketing_site_api_password = self.password self.program.partner.marketing_site_api_password = self.password
self.program.save() self.program.type = ProgramType.objects.get(name='MicroMasters')
self.mock_api_client(200) self.mock_api_client(200)
self.mock_node_retrieval(self.program.uuid) self.mock_node_retrieval(self.program.uuid)
self.mock_node_delete(204) self.mock_node_delete(204)
...@@ -441,7 +454,6 @@ class ProgramTests(MarketingSitePublisherTestMixin): ...@@ -441,7 +454,6 @@ class ProgramTests(MarketingSitePublisherTestMixin):
@responses.activate @responses.activate
def test_delete_and_no_marketing_site(self): def test_delete_and_no_marketing_site(self):
self.program.partner.marketing_site_url_root = None self.program.partner.marketing_site_url_root = None
self.program.save()
toggle_switch('publish_program_to_marketing_site', True) toggle_switch('publish_program_to_marketing_site', True)
self.program.delete() self.program.delete()
self.assert_responses_call_count(0) self.assert_responses_call_count(0)
......
...@@ -10,7 +10,7 @@ from course_discovery.apps.course_metadata.tests.mixins import ( ...@@ -10,7 +10,7 @@ from course_discovery.apps.course_metadata.tests.mixins import (
MarketingSiteAPIClientTestMixin, MarketingSiteAPIClientTestMixin,
MarketingSitePublisherTestMixin, MarketingSitePublisherTestMixin,
) )
from course_discovery.apps.course_metadata.models import Program from course_discovery.apps.course_metadata.models import Program, ProgramType
class MarketingSiteAPIClientTests(MarketingSiteAPIClientTestMixin): class MarketingSiteAPIClientTests(MarketingSiteAPIClientTestMixin):
...@@ -96,6 +96,7 @@ class MarketingSitePublisherTests(MarketingSitePublisherTestMixin): ...@@ -96,6 +96,7 @@ class MarketingSitePublisherTests(MarketingSitePublisherTestMixin):
self.program.partner.marketing_site_url_root = self.api_root self.program.partner.marketing_site_url_root = self.api_root
self.program.partner.marketing_site_api_username = self.username self.program.partner.marketing_site_api_username = self.username
self.program.partner.marketing_site_api_password = self.password self.program.partner.marketing_site_api_password = self.password
self.program.type = ProgramType.objects.get(name='MicroMasters')
self.program.save() # pylint: disable=no-member self.program.save() # pylint: disable=no-member
self.api_client = MarketingSiteAPIClient( self.api_client = MarketingSiteAPIClient(
self.username, self.username,
...@@ -217,10 +218,16 @@ class MarketingSitePublisherTests(MarketingSitePublisherTestMixin): ...@@ -217,10 +218,16 @@ class MarketingSitePublisherTests(MarketingSitePublisherTestMixin):
self.assert_responses_call_count(0) self.assert_responses_call_count(0)
@responses.activate @responses.activate
def test_publish_xseries_program(self):
self.program.type = ProgramType.objects.get(name='XSeries')
publisher = MarketingSitePublisher()
publisher.publish_program(self.program)
self.assert_responses_call_count(0)
@responses.activate
def test_publish_program_no_credential(self): def test_publish_program_no_credential(self):
self.program.partner.marketing_site_api_password = None self.program.partner.marketing_site_api_password = None
self.program.partner.marketing_site_api_username = None self.program.partner.marketing_site_api_username = None
self.program.save() # pylint: disable=no-member
publisher = MarketingSitePublisher() publisher = MarketingSitePublisher()
with self.assertRaises(ProgramPublisherException): with self.assertRaises(ProgramPublisherException):
publisher.publish_program(self.program) publisher.publish_program(self.program)
......
...@@ -3,6 +3,7 @@ from unittest.mock import patch ...@@ -3,6 +3,7 @@ from unittest.mock import patch
from django.test import TestCase from django.test import TestCase
from course_discovery.apps.course_metadata.models import ProgramType
from course_discovery.apps.course_metadata.tests import factories, toggle_switch from course_discovery.apps.course_metadata.tests import factories, toggle_switch
...@@ -13,7 +14,7 @@ MARKETING_SITE_PUBLISHERS_MODULE = 'course_discovery.apps.course_metadata.publis ...@@ -13,7 +14,7 @@ MARKETING_SITE_PUBLISHERS_MODULE = 'course_discovery.apps.course_metadata.publis
class SignalsTest(TestCase): class SignalsTest(TestCase):
def setUp(self): def setUp(self):
super(SignalsTest, self).setUp() super(SignalsTest, self).setUp()
self.program = factories.ProgramFactory() self.program = factories.ProgramFactory(type=ProgramType.objects.get(name='MicroMasters'))
def test_delete_program_signal_no_publish(self, delete_program_mock): def test_delete_program_signal_no_publish(self, delete_program_mock):
toggle_switch('publish_program_to_marketing_site', False) toggle_switch('publish_program_to_marketing_site', False)
......
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