def test_basic(self, mail_recipient):
        dataset, activity = factories.DatasetActivity(
            timestamp=datetime.datetime.now() - datetime.timedelta(minutes=10),
            return_activity=True)
        # {subscription: [activity, ...], ...}
        subscription_activities = {
            factories.Subscription(dataset_id=dataset['id'],
                                   return_object=True): [activity]
        }
        notifications = dictize_notifications(subscription_activities)

        send_notification_email(code='the-code',
                                email='*****@*****.**',
                                notifications=notifications)

        mail_recipient.assert_called_once()
        body = mail_recipient.call_args[1]['body']
        print(body)
        assert_in(dataset['title'], body)
        assert_in('http://test.ckan.net/dataset/{}'.format(dataset['id']),
                  body)
        assert_in('new dataset', body)
        body = mail_recipient.call_args[1]['body_html']
        print(body)
        assert_in(dataset['title'], body)
        assert_in('http://test.ckan.net/dataset/{}'.format(dataset['id']),
                  body)
        assert_in('new dataset', body)
    def test_org(self):
        org, activity = factories.OrganizationActivity(
            timestamp=datetime.datetime.now() - datetime.timedelta(minutes=10),
            return_activity=True)
        # {subscription: [activity, ...], ...}
        subscription_activities = {
            factories.Subscription(organization_id=org['id'],
                                   return_object=True): [activity]
        }
        notifications = dictize_notifications(subscription_activities)

        email_vars = get_notification_email_vars(email='*****@*****.**',
                                                 notifications=notifications)

        eq(email_vars['notifications'], [{
            'activities': [{
                'activity_type': u'new organization',
                'dataset_href': u'',
                'dataset_link': u'',
                'timestamp': activity.timestamp
            }],
            'object_link':
            'http://test.ckan.net/organization/{}'.format(org['id']),
            'object_name':
            org['name'],
            'object_title':
            org['title'],
            'object_type':
            u'organization'
        }])
    def test_basic(self):
        dataset, activity = factories.DatasetActivity(
            timestamp=datetime.datetime.now() - datetime.timedelta(minutes=10),
            return_activity=True)
        # {subscription: [activity, ...], ...}
        subscription_activities = {
            factories.Subscription(dataset_id=dataset['id'],
                                   return_object=True): [activity]
        }
        notifications = dictize_notifications(subscription_activities)

        get_notification_email_contents(code='the-code',
                                        email='*****@*****.**',
                                        notifications=notifications)
    def test_basic(self, mail_recipient):
        dataset, activity = factories.DatasetActivity(
            timestamp=datetime.datetime.now() - datetime.timedelta(minutes=10),
            return_activity=True)
        # {subscription: [activity, ...], ...}
        subscription_activities = {
            factories.Subscription(dataset_id=dataset['id'],
                                   return_object=True): [activity]
        }
        notifications_by_email = {
            '*****@*****.**': dictize_notifications(subscription_activities)
        }

        send_emails(notifications_by_email)

        mail_recipient.assert_called_once()
        body = mail_recipient.call_args[1]['body']
        print(body)
        assert_in('new dataset', body)
    def test_org(self):
        from ckan import model
        org = ckan_factories.Organization()
        subscribe_model.Subscribe.set_emails_last_sent(
            subscribe_model.Frequency.IMMEDIATE.value, datetime.datetime.now())
        dataset = ckan_factories.Dataset(owner_org=org['id'])
        activity = model.Session.query(model.Activity) \
            .filter_by(object_id=dataset['id']).first()
        subscription_activities = {
            factories.Subscription(organization_id=org['id'],
                                   return_object=True): [activity]
        }
        notifications = dictize_notifications(subscription_activities)

        email = get_notification_email_contents(code='the-code',
                                                email='*****@*****.**',
                                                notifications=notifications)
        # Check we link to the dataset, not just the org
        assert_in('http://test.ckan.net/dataset/{}'.format(dataset['name']),
                  email[1])
        assert_in(
            '<a href="http://test.ckan.net/dataset/{}">Test Dataset</a>'.
            format(dataset['name']), email[2])
    def test_basic(self):
        dataset, activity = factories.DatasetActivity(
            timestamp=datetime.datetime.now() - datetime.timedelta(minutes=10),
            return_activity=True)
        # {subscription: [activity, ...], ...}
        subscription_activities = {
            factories.Subscription(dataset_id=dataset['id'],
                                   return_object=True): [activity]
        }
        notifications = dictize_notifications(subscription_activities)

        email_vars = get_notification_email_vars(email='*****@*****.**',
                                                 notifications=notifications)

        eq(email_vars['notifications'], [{
            'activities': [{
                'activity_type':
                u'new dataset',
                'dataset_href':
                'http://test.ckan.net/dataset/{}'.format(dataset['name']),
                'dataset_link':
                literal(
                    u'<a href="http://test.ckan.net/dataset/{}">{}</a>'.format(
                        dataset['name'], dataset['title'])),
                'timestamp':
                activity.timestamp
            }],
            'object_link':
            'http://test.ckan.net/dataset/{}'.format(dataset['id']),
            'object_name':
            dataset['name'],
            'object_title':
            dataset['title'],
            'object_type':
            u'dataset'
        }])