def test_create_new_company(self): # assert that creating a normal company should work company_data = dict( company_name='company one' ) company = create_new_company(company_data) self.assertEquals( Company.query.first().company_name, company.company_name ) # assert that creating a company with an # existing contract should work contract = insert_a_contract() company_with_contract_data = dict( company_name='company two', contracts=[contract] ) create_new_company(company_with_contract_data) self.assertEquals(Company.query.count(), 2) self.assertEquals( Company.query.all()[-1].contracts[0].id, contract.id ) # assert that creating a company with an existing # contract by id should work company_with_contract_id_data = dict( company_name='company three', contracts=[contract.id] ) create_new_company(company_with_contract_id_data) self.assertEquals(Company.query.count(), 3) # assert that nonexistant contracts can't be assigned # to a company company_with_bad_contract_data = dict( company_name='company four', contracts=[999] ) self.assertRaises( Exception, create_new_company, company_with_bad_contract_data ) self.assertEquals(Company.query.count(), 3) company_with_bad_contract_data_two = dict( company_name='company four', contracts=[None] ) self.assertRaises( Exception, create_new_company, company_with_bad_contract_data_two ) self.assertEquals(Company.query.count(), 3) # assert that you can't have duplicate names self.assertRaises( IntegrityError, create_new_company, company_data )
def test_import_line_items(self): ''' Test that award information is scraped properly. ''' muni = create_new_company( dict(company_name='U.S. Municipal Supply, Inc.')) chemung = create_new_company( dict(company_name='Chemung Supply Corporation')) pathmaster = create_new_company( dict(company_name='Path Master, Inc., Co.')) new_contract = create_new_contract( dict(properties=[dict(key='foo', value='6965')], description='foo')) with open( current_app.config.get('PROJECT_ROOT') + '/purchasing_test/mock/award.html', 'r') as f: line_item_page = BeautifulSoup(f.read(), from_encoding='windows-1252') _line_items = grab_line_items(line_item_page) self.assertEquals(len(_line_items), 14) contract = get_contract('Sign Post, Square Tubes, Brackets, Etc.', 'IFB-6965') self.assertTrue(contract is not None) self.assertEquals(contract.id, new_contract.id) save_line_item(_line_items, contract) self.assertEquals(LineItem.query.count(), len(_line_items)) # assert that our ids made it in property for item in LineItem.query.all(): self.assertTrue(item.manufacturer is not None) self.assertTrue(item.model_number is not None) self.assertEquals(item.contract_id, contract.id) if 'muni' in item.company_name.lower(): self.assertEquals(item.company_id, muni.id) elif 'chem' in item.company_name.lower(): self.assertEquals(item.company_id, chemung.id) else: self.assertEquals(item.company_id, pathmaster.id)
def test_import_line_items(self): ''' Test that award information is scraped properly. ''' muni = create_new_company(dict(company_name='U.S. Municipal Supply, Inc.')) chemung = create_new_company(dict(company_name='Chemung Supply Corporation')) pathmaster = create_new_company(dict(company_name='Path Master, Inc., Co.')) new_contract = create_new_contract( dict(properties=[dict(key='foo', value='6965')], description='foo') ) with open(current_app.config.get('PROJECT_ROOT') + '/purchasing_test/mock/award.html', 'r') as f: line_item_page = BeautifulSoup( f.read(), from_encoding='windows-1252' ) _line_items = grab_line_items(line_item_page) self.assertEquals(len(_line_items), 14) contract = get_contract( 'Sign Post, Square Tubes, Brackets, Etc.', 'IFB-6965' ) self.assertTrue(contract is not None) self.assertEquals(contract.id, new_contract.id) save_line_item(_line_items, contract) self.assertEquals(LineItem.query.count(), len(_line_items)) # assert that our ids made it in property for item in LineItem.query.all(): self.assertTrue(item.manufacturer is not None) self.assertTrue(item.model_number is not None) self.assertEquals(item.contract_id, contract.id) if 'muni' in item.company_name.lower(): self.assertEquals(item.company_id, muni.id) elif 'chem' in item.company_name.lower(): self.assertEquals(item.company_id, chemung.id) else: self.assertEquals(item.company_id, pathmaster.id)
def test_create_new_company(self): # assert that creating a normal company should work company_data = dict(company_name='company one') company = create_new_company(company_data) self.assertEquals(Company.query.first().company_name, company.company_name) # assert that creating a company with an # existing contract should work contract = insert_a_contract() company_with_contract_data = dict(company_name='company two', contracts=[contract]) create_new_company(company_with_contract_data) self.assertEquals(Company.query.count(), 2) self.assertEquals(Company.query.all()[-1].contracts[0].id, contract.id) # assert that creating a company with an existing # contract by id should work company_with_contract_id_data = dict(company_name='company three', contracts=[contract.id]) create_new_company(company_with_contract_id_data) self.assertEquals(Company.query.count(), 3) # assert that nonexistant contracts can't be assigned # to a company company_with_bad_contract_data = dict(company_name='company four', contracts=[999]) self.assertRaises(Exception, create_new_company, company_with_bad_contract_data) self.assertEquals(Company.query.count(), 3) company_with_bad_contract_data_two = dict(company_name='company four', contracts=[None]) self.assertRaises(Exception, create_new_company, company_with_bad_contract_data_two) self.assertEquals(Company.query.count(), 3) # assert that you can't have duplicate names self.assertRaises(IntegrityError, create_new_company, company_data)