def test_MergeProposalNeedsReviewEmailJob(self): """MergeProposalNeedsReviewEmailJob runs under Celery.""" self.useFixture(FeatureFixture( {'jobs.celery.enabled_classes': 'MergeProposalNeedsReviewEmailJob'})) bmp = self.factory.makeBranchMergeProposal() with block_on_job(): MergeProposalNeedsReviewEmailJob.create(bmp) transaction.commit() self.assertEqual(2, len(pop_remote_notifications()))
def test_run_sends_email(self): """MergeProposalCreationJob.run sends an email.""" self.useBzrBranches(direct_database=True) bmp = self.createProposalWithEmptyBranches() job = MergeProposalNeedsReviewEmailJob.create(bmp) self.assertEqual([], pop_notifications()) job.run() self.assertEqual(2, len(pop_notifications()))
def test_run_sends_email(self): """MergeProposalCreationJob.run sends an email.""" bmp = self.createProposalWithEmptyBranches() job = MergeProposalNeedsReviewEmailJob.create(bmp) self.assertEqual([], pop_notifications()) with dbuser("merge-proposal-jobs"): JobRunner([job]).runAll() self.assertEqual(2, len(pop_notifications()))
def test_get(self): """Ensure get returns or raises appropriately. It's an error to call get on BranchMergeProposalJobDerived-- it must be called on a subclass. An object is returned only if the job id and job type match the request. If no suitable object can be found, SQLObjectNotFound is raised. """ bmp = self.factory.makeBranchMergeProposal() job = MergeProposalNeedsReviewEmailJob.create(bmp) transaction.commit() self.assertRaises(AttributeError, BranchMergeProposalJobDerived.get, job.id) self.assertRaises(SQLObjectNotFound, UpdatePreviewDiffJob.get, job.id) self.assertRaises(SQLObjectNotFound, MergeProposalNeedsReviewEmailJob.get, job.id + 1) self.assertEqual(job, MergeProposalNeedsReviewEmailJob.get(job.id))
def test_get(self): """Ensure get returns or raises appropriately. It's an error to call get on BranchMergeProposalJobDerived-- it must be called on a subclass. An object is returned only if the job id and job type match the request. If no suitable object can be found, SQLObjectNotFound is raised. """ bmp = self.factory.makeBranchMergeProposal() job = MergeProposalNeedsReviewEmailJob.create(bmp) transaction.commit() self.assertRaises( AttributeError, BranchMergeProposalJobDerived.get, job.id) self.assertRaises(SQLObjectNotFound, UpdatePreviewDiffJob.get, job.id) self.assertRaises( SQLObjectNotFound, MergeProposalNeedsReviewEmailJob.get, job.id + 1) self.assertEqual(job, MergeProposalNeedsReviewEmailJob.get(job.id))
def test_getOopsMailController(self): """The registrant is notified about merge proposal creation issues.""" bmp = self.makeBranchMergeProposal() job = MergeProposalNeedsReviewEmailJob.create(bmp) ctrl = job.getOopsMailController('1234') self.assertEqual([bmp.registrant.preferredemail.email], ctrl.to_addrs) message = ('notifying people about the proposal to merge %s into %s' % (bmp.merge_source.identity, bmp.merge_target.identity)) self.assertIn(message, ctrl.body)
def test_getOopsMailController(self): """The registrant is notified about merge proposal creation issues.""" bmp = self.factory.makeBranchMergeProposal() job = MergeProposalNeedsReviewEmailJob.create(bmp) ctrl = job.getOopsMailController('1234') self.assertEqual([bmp.registrant.preferredemail.email], ctrl.to_addrs) message = ( 'notifying people about the proposal to merge %s into %s' % (bmp.source_branch.bzr_identity, bmp.target_branch.bzr_identity)) self.assertIn(message, ctrl.body)
def test_MergeProposalCreateJob_with_sourcepackage_branch(self): """Jobs for merge proposals with sourcepackage branches work.""" self.useBzrBranches(direct_database=True) bmp = self.factory.makeBranchMergeProposal( target_branch=self.factory.makePackageBranch()) tree = self.create_branch_and_tree(db_branch=bmp.target_branch)[1] # XXX: AaronBentley 2010-08-06 bug=614404: a bzr username is # required to generate the revision-id. with override_environ(BZR_EMAIL='*****@*****.**'): tree.commit('Initial commit') self.createBzrBranch(bmp.source_branch, tree.branch) self.factory.makeRevisionsForBranch(bmp.source_branch, count=1) job = MergeProposalNeedsReviewEmailJob.create(bmp) with dbuser("merge-proposal-jobs"): job.run()
def test_getOperationDescription(self): bmp = self.factory.makeBranchMergeProposal() job = MergeProposalNeedsReviewEmailJob.create(bmp) self.assertTrue( job.getOperationDescription().startswith( 'notifying people about the proposal to merge'))
def test_providesInterface(self): """MergeProposalNeedsReviewEmailJob provides expected interfaces.""" bmp = self.factory.makeBranchMergeProposal() job = MergeProposalNeedsReviewEmailJob.create(bmp) verifyObject(IMergeProposalNeedsReviewEmailJob, job) verifyObject(IBranchMergeProposalJob, job)