def test_commit_aborted(self, mock_fedmsg_publish): """Assert that when commits are aborted, messages aren't sent.""" session = Session() session.add(models.Package(name=u'ejabberd')) session.commit() session.add(models.Package(name=u'ejabberd')) notifications.publish('demo.topic', {'new': 'package'}) self.assertRaises(exc.IntegrityError, session.commit) self.assertEqual(0, mock_fedmsg_publish.call_count)
def test_no_fedmsgs(self, mock_fedmsg_publish): """Assert nothing happens if messages are not explicitly published.""" session = Session() session.add(models.Package(name=u'ejabberd')) session.commit() self.assertEqual(0, mock_fedmsg_publish.call_count)
def test_single_topic_one_message(self, mock_fedmsg_publish): """Assert a single message for a single topic is published.""" session = Session() session.add(models.Package(name=u'ejabberd')) notifications.publish('demo.topic', {'new': 'package'}) session.commit() mock_fedmsg_publish.assert_called_once_with(topic='demo.topic', msg={'new': 'package'})
def test_module_build(self): """ModuleBuilds don't have get_latest(), so lets verify that this is OK.""" release = self.create_release('27M') build = models.ModuleBuild( nvr='testmodule:master:1', release=release, package=models.Package(name='testmodule', type=models.ContentType.module)) update = models.Update(builds=[build], release=release) # This should not raise an Exception. t = mail.get_template(update) # Assemble the template for easier asserting. t = '\n'.join([l for l in t[0]]) # No changelog should appear. We can just verify that there's a blank line where the # changelog would be. self.assertTrue('----\n\nThis update can be installed' in t)
def test_publish_sqlalchemy_object(self): """Assert publish places the message inside the session info dict.""" Session.remove() expected_msg = { u'some_package': { u'name': u'so good', u'type': 'base', u'requirements': None } } package = models.Package(name='so good') notifications.publish('demo.topic', {'some_package': package}) session = Session() self.assertIn('messages', session.info) self.assertEqual(len(session.info['messages']), 1) msg = session.info['messages'][0] self.assertEqual(msg.body, expected_msg)
def test_publish_sqlalchemy_object(self, mock_init): """Assert publish places the message inside the session info dict.""" Session.remove() expected_msg = { u'some_package': { u'name': u'so good', u'type': 'base', u'requirements': None, u'stack': None, u'stack_id': None, } } package = models.Package(name='so good') notifications.publish('demo.topic', {'some_package': package}) session = Session() self.assertIn('fedmsg', session.info) self.assertEqual(session.info['fedmsg']['demo.topic'], [expected_msg]) mock_init.assert_called_once_with()