def test_after_promotion_period(db, django_user_model, mocker):
    dts = (datetime(2019, 6, day, tzinfo=pytz.utc) for day in range(10, 13))
    tag_as_mock = mocker.patch(
        'pythonpro.domain.user_facade._mailchimp_facade.tag_as')
    for d in dts:
        mommy.make(django_user_model, date_joined=d)
    with freeze_time('2019-07-22'):
        assert 0 == user_facade.run_pytools_promotion_campaign()
    assert tag_as_mock.call_count == 0
def test_members_not_marked_in_promotion_period(db, django_user_model, mocker):
    dts = (datetime(2019, 6, day, tzinfo=pytz.utc) for day in range(3, 10))
    tag_as_mock = mocker.patch(
        'pythonpro.domain.user_facade._mailchimp_facade.tag_as')
    users_created_seven_weeks_ago = [
        mommy.make(django_user_model, date_joined=d) for d in dts
    ]
    for user in users_created_seven_weeks_ago:
        assign_role(user, 'client')
    with freeze_time('2019-07-22'):
        assert 0 == user_facade.run_pytools_promotion_campaign()
    assert tag_as_mock.call_count == 0
def test_leads_in_promotion_period(db, django_user_model, mocker):
    dts = (datetime(2019, 6, day, tzinfo=pytz.utc) for day in range(3, 10))
    tag_as_mock = mocker.patch(
        'pythonpro.domain.user_facade._mailchimp_facade.tag_as')
    users_created_seven_weeks_ago = [
        mommy.make(django_user_model, date_joined=d) for d in dts
    ]
    for user in users_created_seven_weeks_ago:
        assign_role(user, 'lead')
    with freeze_time('2019-07-22'):
        assert len(users_created_seven_weeks_ago
                   ) == user_facade.run_pytools_promotion_campaign()
    for user in users_created_seven_weeks_ago:
        tag_as_mock.assert_any_call(user.email, 'pytools-promotion')
예제 #4
0
 def handle(self, *args, **options):
     promotion_users = user_facade.run_pytools_promotion_campaign()
     self.stdout.write(self.style.SUCCESS(f'Successfully marked {promotion_users} users for promotions'))