def test_create_new_contract(self): # test that no additional properties works contract_data = dict( contract_type='test', description='test' ) contract = create_new_contract(contract_data) self.assertEquals(ContractBase.query.count(), 1) self.assertEquals( ContractBase.query.first().description, contract.description ) # test that additional properties also works contract_data_props = dict( contract_type='test', description='test2', properties=[ dict(foo='bar'), dict(baz='qux') ] ) contract_with_props = create_new_contract(contract_data_props) self.assertEquals(ContractBase.query.count(), 2) self.assertEquals(ContractProperty.query.count(), 2) self.assertEquals( ContractBase.query.all()[-1].description, contract_with_props.description ) # this should fail with non-existing stage contract_data_fails = dict( contract_type='test', description='test2', current_stage_id=1 ) try: create_new_contract(contract_data_fails) # this should never work, so break the tests if we get here self.assertTrue(False) except: self.assertTrue(True)
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)