Repository URL to install this package:
|
Version:
0.32.0 ▾
|
import uuid
import datetime
from django.test import TestCase
from django.utils import timezone
from dockerhub.marketo.adapter import (LeadManagerImpl, MarketoMailingListImpl,
CampaignManagerImpl)
from dockerhub.marketo.constants import DTR_BINARY_DOWNLOAD
from dockerhub.marketo.exceptions import InvalidActivityDateException
from dockerhub.marketo.adapter import VALID_LEAD_FIELDS
class TestMarketoFixture(TestCase):
list_id = '1002'
email_template = "fake+{0}@email.com"
cookie = 'id:287-GTJ-838&token:_mch-marketo.com-1396310362214-46169'
def setUp(self):
self.lead_adapter = LeadManagerImpl()
self.campaign_adapter = CampaignManagerImpl()
self.mailinglist_adapter = MarketoMailingListImpl()
class TestLeadCreationAdapter(TestMarketoFixture):
def setUp(self):
super(TestLeadCreationAdapter, self).setUp()
self.random_email = self.email_template.format(uuid.uuid4())
self.lead_ids = self.lead_adapter.create_lead(email=self.random_email)
def tearDown(self):
self.lead_adapter.delete_lead(self.random_email)
def test(self):
super(TestLeadCreationAdapter, self).tearDown()
self.assertTrue(self.lead_ids)
self.assertTrue(isinstance(self.lead_ids, list))
self.assertEqual(len(self.lead_ids), 1)
class TestLeadCreationAdapterWithAllValidFields(TestMarketoFixture):
"""
We need to make sure all the valid fields are created on the marketo side
"""
def setUp(self):
super(TestLeadCreationAdapterWithAllValidFields, self).setUp()
self.random_email = self.email_template.format(uuid.uuid4())
date_now = timezone.now()
self.lead_fields = {
'hubUsername': 'rogaha',
'plan_type': 'Starter',
'email': self.random_email,
'firstName': 'test1',
'lastName': 'test2',
'company': 'company1',
'country': 'USA',
'postalCode': '13213',
'address': 'address1',
'address2': 'address2',
'city': 'city',
'partnerValue': 'partner1',
'accept_eusa_terms': True,
'accept_eusa_terms_date': date_now,
'accept_eval_terms': True,
'accept_eval_terms_date': date_now,
'docker_index_add_organization': date_now,
'docker_index_plan_downgrade': date_now,
'docker_index_plan_subscription': date_now,
'docker_index_plan_termination': date_now,
'docker_index_plan_upgrade': date_now,
'Docker_Hub_User_Name__c': 'test',
'unsubscribed': False,
'phone': '415-3333-7777',
'state': 'California',
'jobFunction': 'SysAdmin',
'dockerUUID': str(uuid.uuid4())
}
self.lead_ids = self.lead_adapter.create_lead(email=self.random_email,
extra_values=self.lead_fields)
def tearDown(self):
self.lead_adapter.delete_lead(self.random_email)
def test(self):
super(TestLeadCreationAdapterWithAllValidFields, self).tearDown()
self.assertTrue(self.lead_ids)
self.assertTrue(isinstance(self.lead_ids, list))
self.assertEqual(len(self.lead_ids), 1)
# Make sure we update the tests once we fields are added
self.assertEqual(len(self.lead_fields), len(VALID_LEAD_FIELDS))
class TestSubscriptionLifecycle(TestLeadCreationAdapter):
def test(self):
self.assertFalse(
self.mailinglist_adapter.is_subscribed(
self.list_id,
self.random_email
)
)
self.assertTrue(
self.mailinglist_adapter.subscribe(
self.list_id,
self.random_email
)
)
self.assertTrue(
self.mailinglist_adapter.is_subscribed(
self.list_id,
self.random_email
)
)
self.assertTrue(
self.mailinglist_adapter.unsubscribe(
self.list_id,
self.random_email
)
)
self.assertFalse(
self.mailinglist_adapter.is_subscribed(
self.list_id,
self.random_email
)
)
class TestCreateActivity(TestLeadCreationAdapter):
def test(self):
self.assertTrue(
self.lead_adapter.create_activity(
self.random_email,
DTR_BINARY_DOWNLOAD,
timezone.now(), # timezone aware date
attributes={
'SubType': "Ubuntu",
'UserName': "toli",
'UUID': "123-abc-xyz-456"
}
)
)
class TestCreateActivityNonTimezoneAware(TestLeadCreationAdapter):
def test(self):
self.assertTrue(
self.lead_adapter.create_activity(
self.random_email,
DTR_BINARY_DOWNLOAD,
datetime.datetime.now(), # non-timezone aware
attributes={
'SubType': "Ubuntu",
'UserName': "toli",
'UUID': "123-abc-xyz-456"
}
)
)
class TestCreateActivityBadDate(TestLeadCreationAdapter):
def test(self):
with self.assertRaises(InvalidActivityDateException):
self.lead_adapter.create_activity(
self.random_email,
DTR_BINARY_DOWNLOAD,
'banana', # bad date
attributes={
'SubType': "Ubuntu",
'UserName': "toli",
'UUID': "123-abc-xyz-456"
}
)
class TestSendSignupRequestCampaign(TestMarketoFixture):
"""
Test triggering the Sign up Smart Campaign event
"""
def setUp(self):
super(TestSendSignupRequestCampaign, self).setUp()
self.random_email = self.email_template.format(uuid.uuid4())
self.campaign_id = '1051'
self.lead_ids = self.lead_adapter.create_lead(email=self.random_email)
def tearDown(self):
self.lead_adapter.delete_lead(self.random_email)
def test(self):
super(TestSendSignupRequestCampaign, self).tearDown()
self.assertTrue(self.lead_ids)
self.assertTrue(isinstance(self.lead_ids, list))
self.assertEqual(len(self.lead_ids), 1)
self.leads = [{"id": self.lead_ids[0]}]
result = self.campaign_adapter.request_campaign(
self.campaign_id, self.leads)
# Make sure the Smart Campaign was successfuly triggered
self.assertTrue(result)