Commit 25474f38 by Simon Chen

ECOM-5392 only publish to drupal for MicroMasters Program

parent 431fcfa9
......@@ -98,6 +98,10 @@ class MarketingSitePublisher(object):
partner=program.partner.short_code)
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 \
all(self.data_before[key] == getattr(program, key) for key in ['title', 'status', 'type']):
# We don't need to publish to marketing site because
......
......@@ -17,7 +17,7 @@ from course_discovery.apps.core.utils import SearchQuerySetWrapper
from course_discovery.apps.course_metadata.models import (
AbstractMediaModel, AbstractNamedModel, AbstractValueModel,
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.factories import CourseRunFactory, ImageFactory
......@@ -407,7 +407,7 @@ class ProgramTests(MarketingSitePublisherTestMixin):
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.save()
self.program.type = ProgramType.objects.get(name='MicroMasters')
self.mock_api_client(200)
self.mock_node_retrieval(self.program.uuid)
self.mock_node_edit(200)
......@@ -417,9 +417,22 @@ class ProgramTests(MarketingSitePublisherTestMixin):
self.assert_responses_call_count(6)
@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):
self.program.partner.marketing_site_url_root = None
self.program.save()
toggle_switch('publish_program_to_marketing_site', True)
self.program.title = FuzzyText().fuzz()
self.program.save()
......@@ -430,7 +443,7 @@ class ProgramTests(MarketingSitePublisherTestMixin):
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.save()
self.program.type = ProgramType.objects.get(name='MicroMasters')
self.mock_api_client(200)
self.mock_node_retrieval(self.program.uuid)
self.mock_node_delete(204)
......@@ -441,7 +454,6 @@ class ProgramTests(MarketingSitePublisherTestMixin):
@responses.activate
def test_delete_and_no_marketing_site(self):
self.program.partner.marketing_site_url_root = None
self.program.save()
toggle_switch('publish_program_to_marketing_site', True)
self.program.delete()
self.assert_responses_call_count(0)
......
......@@ -10,7 +10,7 @@ from course_discovery.apps.course_metadata.tests.mixins import (
MarketingSiteAPIClientTestMixin,
MarketingSitePublisherTestMixin,
)
from course_discovery.apps.course_metadata.models import Program
from course_discovery.apps.course_metadata.models import Program, ProgramType
class MarketingSiteAPIClientTests(MarketingSiteAPIClientTestMixin):
......@@ -96,6 +96,7 @@ class MarketingSitePublisherTests(MarketingSitePublisherTestMixin):
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='MicroMasters')
self.program.save() # pylint: disable=no-member
self.api_client = MarketingSiteAPIClient(
self.username,
......@@ -217,10 +218,16 @@ class MarketingSitePublisherTests(MarketingSitePublisherTestMixin):
self.assert_responses_call_count(0)
@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):
self.program.partner.marketing_site_api_password = None
self.program.partner.marketing_site_api_username = None
self.program.save() # pylint: disable=no-member
publisher = MarketingSitePublisher()
with self.assertRaises(ProgramPublisherException):
publisher.publish_program(self.program)
......
......@@ -3,6 +3,7 @@ from unittest.mock import patch
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
......@@ -13,7 +14,7 @@ MARKETING_SITE_PUBLISHERS_MODULE = 'course_discovery.apps.course_metadata.publis
class SignalsTest(TestCase):
def setUp(self):
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):
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