def test_adopt_parent_subscription_default(self): payload = { 'id': self.node._id, 'event': 'comments', 'notification_type': 'adopt_parent' } url = api_url_for('configure_subscription') self.app.post_json(url, payload, auth=self.node.creator.auth) event_id = self.node._id + '_' + 'comments' # confirm subscription was not created with assert_raises(NoResultsFound): NotificationSubscription.find_one(Q('_id', 'eq', event_id))
def test_change_subscription_to_adopt_parent_subscription_removes_user(self): payload = { 'id': self.node._id, 'event': 'comments', 'notification_type': 'email_transactional' } url = api_url_for('configure_subscription') self.app.post_json(url, payload, auth=self.node.creator.auth) # check that subscription was created event_id = self.node._id + '_' + 'comments' s = NotificationSubscription.find_one(Q('_id', 'eq', event_id)) # change subscription to adopt_parent new_payload = { 'id': self.node._id, 'event': 'comments', 'notification_type': 'adopt_parent' } url = api_url_for('configure_subscription') self.app.post_json(url, new_payload, auth=self.node.creator.auth) s.reload() # assert that user is removed from the subscription entirely for n in constants.NOTIFICATION_TYPES: assert_false(self.node.creator in getattr(s, n))
def test_create_new_subscription(self): payload = { 'id': self.node._id, 'event': 'comments', 'notification_type': 'email_transactional' } url = api_url_for('configure_subscription') self.app.post_json(url, payload, auth=self.node.creator.auth) # check that subscription was created event_id = self.node._id + '_' + 'comments' s = NotificationSubscription.find_one(Q('_id', 'eq', event_id)) # check that user was added to notification_type field assert_equal(payload['id'], s.owner._id) assert_equal(payload['event'], s.event_name) assert_in(self.node.creator, getattr(s, payload['notification_type'])) # change subscription new_payload = { 'id': self.node._id, 'event': 'comments', 'notification_type': 'email_digest' } url = api_url_for('configure_subscription') self.app.post_json(url, new_payload, auth=self.node.creator.auth) s.reload() assert_false(self.node.creator in getattr(s, payload['notification_type'])) assert_in(self.node.creator, getattr(s, new_payload['notification_type']))
def test_node_subscriptions_and_backrefs_removed_when_node_is_deleted(self): project = factories.ProjectFactory() subscription = factories.NotificationSubscriptionFactory( _id=project._id + '_comments', owner=project ) subscription.save() subscription.email_transactional.append(project.creator) subscription.save() s = getattr(project.creator, 'email_transactional', []) assert_equal(len(s), 1) with capture_signals() as mock_signals: project.remove_node(auth=Auth(project.creator)) assert_true(project.is_deleted) assert_equal(mock_signals.signals_sent(), set([node_deleted])) s = getattr(project.creator, 'email_transactional', []) assert_equal(len(s), 0) with assert_raises(NoResultsFound): NotificationSubscription.find_one(Q('owner', 'eq', project))