def test_create_pcpp(self): """Use fake data to generate a new pcpp""" account = Account(name='New Project Effort', code='098-765', category=Account.PROJECT) row = { 'PROJ_NO': '098-765', 'LOCATION': 'CHINA', 'PROJ_NAME1': 'New Project Effort', 'PCV_NAME': 'IN Jones, B.', 'STATE': 'IN', 'OVERS_PART': '1234.56', 'PROJ_REQ': '3,434', 'UNIDENT_BAL': '1,111', 'SECTOR': 'IT', 'SUMMARY': 'sum sum sum'} issue_cache = Mock() issue_cache.find.return_value = Campaign.objects.get(name='Technology') sync.create_pcpp(account, row, issue_cache) project = Project.objects.get(title='New Project Effort') description = json.loads(project.description) description = description['data'][0]['data']['text'] self.assertEqual(project.account.code, '098-765') self.assertEqual(project.country.name, 'China') self.assertEqual(project.volunteername, 'Jones, B.') self.assertEqual(project.volunteerhomestate, 'IN') self.assertEqual(project.account.community_contribution, 123456) self.assertEqual(project.account.goal, 343400) self.assertEqual(project.account.current, (343400 - 111100)) self.assertEqual(project.overflow.name, 'Information Technology') self.assertEqual(project.campaigns.all()[0].name, 'Technology') self.assertEqual(description, 'sum sum sum') self.assertEqual(project.slug, 'new-project-effort') self.assertFalse(project.published) project.delete() account.delete()
def test_create_pcpp(self): """Use fake data to generate a new pcpp""" account = Account(name='New Project Effort', code='098-765', category=Account.PROJECT) row = { 'PROJ_NO': '098-765', 'LOCATION': 'CHINA', 'PROJ_NAME1': 'New Project Effort', 'PCV_NAME': 'IN Jones, B.', 'STATE': 'IN', 'OVERS_PART': '1234.56', 'PROJ_REQ': '3,434', 'UNIDENT_BAL': '1,111', 'SECTOR': 'IT', 'SUMMARY': 'sum sum sum'} issue_cache = Mock() issue_cache.find.return_value = Campaign.objects.get(name='Technology') sync.create_pcpp(account, row, issue_cache) project = Project.objects.get(title='New Project Effort') description = json.loads(project.description) description = description['data'][0]['data']['text'] self.assertEqual(project.account.code, '098-765') self.assertEqual(project.country.name, 'China') self.assertEqual(project.volunteername, 'Jones, B.') self.assertEqual(project.volunteerhomestate, 'IN') self.assertEqual(project.account.community_contribution, 123456) self.assertEqual(project.account.goal, 343400) self.assertEqual(project.account.current, (343400 - 111100)) self.assertEqual(project.overflow.name, 'Information Technology') self.assertEqual(project.campaigns.all()[0].name, 'Technology') self.assertEqual(description, 'sum sum sum') self.assertEqual(project.slug, 'new-project-effort') self.assertFalse(project.published) project.delete() account.delete()
def test_create_pcpp_empty(self): """Community contribution might be empty""" account = Account(name='New Project Effort', code='098-765', category=Account.PROJECT) row = { 'PROJ_NO': '098-765', 'LOCATION': 'CHINA', 'PROJ_NAME1': 'New Project Effort', 'PCV_NAME': 'IN Jones, B.', 'STATE': 'IN', 'OVERS_PART': '', 'PROJ_REQ': '3,434', 'UNIDENT_BAL': '1,111', 'SECTOR': 'IT', 'SUMMARY': 'sum sum sum' } issue_cache = Mock() issue_cache.find.return_value = Campaign.objects.get(name='Technology') sync.create_pcpp(account, row, issue_cache) project = Project.objects.get(title='New Project Effort') self.assertEqual(project.account.community_contribution, 0) self.assertEqual(project.account.goal, 343400) self.assertEqual(project.account.current, (343400 - 111100)) account.delete() # cascades
def test_create_pcpp_no_sector(self): """The ominous "None" sector has special significance""" account = Account(name='New Project Effort', code='098-765', category=Account.PROJECT) row = { 'PROJ_NO': '098-765', 'LOCATION': 'CHINA', 'PROJ_NAME1': 'New Project Effort', 'PCV_NAME': 'IN Jones, B.', 'STATE': 'IN', 'OVERS_PART': '', 'PROJ_REQ': '3,434', 'UNIDENT_BAL': '1,111', 'SECTOR': 'None', 'SUMMARY': 'sum sum sum'} issue_cache = Mock() issue_cache.find.return_value = None sync.create_pcpp(account, row, issue_cache) project = Project.objects.get(title='New Project Effort') self.assertEqual(project.overflow, None) self.assertEqual(project.campaigns.all().count(), 0) account.delete() # cascades
def test_create_pcpp_empty(self): """Community contribution might be empty""" account = Account(name='New Project Effort', code='098-765', category=Account.PROJECT) row = { 'PROJ_NO': '098-765', 'LOCATION': 'CHINA', 'PROJ_NAME1': 'New Project Effort', 'PCV_NAME': 'IN Jones, B.', 'STATE': 'IN', 'OVERS_PART': '', 'PROJ_REQ': '3,434', 'UNIDENT_BAL': '1,111', 'SECTOR': 'IT', 'SUMMARY': 'sum sum sum'} issue_cache = Mock() issue_cache.find.return_value = Campaign.objects.get(name='Technology') sync.create_pcpp(account, row, issue_cache) project = Project.objects.get(title='New Project Effort') self.assertEqual(project.account.community_contribution, 0) self.assertEqual(project.account.goal, 343400) self.assertEqual(project.account.current, (343400 - 111100)) account.delete() # cascades
def test_create_pcpp_failure(self): """Country and sector must be valid, lest nothing gets saved. An error should be logged in this situation""" count = Project.objects.count() issue_cache = Mock() issue_cache.find.return_value = Campaign.objects.get(name='Technology') row = {'LOCATION': 'NONEXISTENT', 'SECTOR': 'MOCKED'} with self.assertLogs('peacecorps.sync_accounting', level=logging.WARN) as logger: sync.create_pcpp(None, row, issue_cache) self.assertEqual(count, Project.objects.count()) # nothing created self.assertEqual(1, len(logger.output)) self.assertTrue('NONEXISTENT' in logger.output[0]) self.assertTrue('MOCKED' in logger.output[0]) issue_cache.find.return_value = None row = {'LOCATION': 'IRELAND', 'SECTOR': 'MOCKED'} with self.assertLogs('peacecorps.sync_accounting', level=logging.WARN) as logger: sync.create_pcpp(None, row, issue_cache) self.assertEqual(count, Project.objects.count()) # nothing created self.assertEqual(1, len(logger.output)) self.assertTrue('IRELAND' in logger.output[0]) self.assertTrue('MOCKED' in logger.output[0])
def test_create_pcpp_failure(self): """Country and sector must be valid, lest nothing gets saved. An error should be logged in this situation""" count = Project.objects.count() issue_cache = Mock() issue_cache.find.return_value = Campaign.objects.get(name='Technology') row = {'LOCATION': 'NONEXISTENT', 'SECTOR': 'MOCKED', 'PROJ_NO': '111'} with self.assertLogs('peacecorps.sync_accounting', level=logging.WARN) as logger: sync.create_pcpp(None, row, issue_cache) self.assertEqual(count, Project.objects.count()) # nothing created self.assertEqual(1, len(logger.output)) self.assertTrue('NONEXISTENT' in logger.output[0]) self.assertFalse('MOCKED' in logger.output[0]) issue_cache.find.return_value = None row = {'LOCATION': 'IRELAND', 'SECTOR': 'MOCKED', 'PROJ_NO': '111'} with self.assertLogs('peacecorps.sync_accounting', level=logging.WARN) as logger: sync.create_pcpp(None, row, issue_cache) self.assertEqual(count, Project.objects.count()) # nothing created self.assertEqual(2, len(logger.output)) self.assertTrue('IRELAND' in logger.output[0]) self.assertTrue('MOCKED' in logger.output[1])