def test_basic(self): models.Country.objects.create(name='Portugal') models.ProcedureType.objects.create(name='Ajuste directo', base_id=1) c = ContractsCrawler() contract, _ = c.update_instance(35356) self.assertEqual(35356, contract.base_id) self.assertEqual(None, contract.category)
def test_retrieve_twice(self): models.Country.objects.create(name='Portugal') models.ProcedureType.objects.create(name='Ajuste directo', base_id=1) c = ContractsCrawler() contract, created = c.update_instance(35356) self.assertTrue(created) contract1, created = c.update_instance(35356) self.assertFalse(created) self.assertEqual(contract, contract1)
def test_1892486_no_contractor(self): pt = models.Country.objects.create(name='Portugal') models.ProcedureType.objects.create(name='Concurso público', base_id=1) models.ContractType.objects.create(name='Aquisição de serviços', base_id=1) dt = models.District.objects.create(country=pt, name="Portalegre", base_id=1) models.Council.objects.create(district=dt, name="Nisa", base_id=1) c = ContractsCrawler() contract, _ = c.update_instance(1892486) self.assertEqual(1892486, contract.base_id)
def handle(self, **options): if options['static']: if options['bootstrap'] or not ProcedureType.objects.exists(): ContractsStaticDataCrawler().retrieve_and_save_all() if options['categories']: if options['bootstrap'] or not Category.objects.exists(): build_categories() if options['entities']: crawler = EntitiesCrawler() if options['bootstrap']: crawler.update(0) else: crawler.update(-2000) if options['contracts']: crawler = ContractsCrawler() if options['bootstrap']: crawler.update(0) else: crawler.update(-2000) if options['tenders']: crawler = TendersCrawler() if options['bootstrap']: crawler.update(0) else: crawler.update(-2000)
def test_update_limits(self): c = ContractsCrawler() # end<0 does nothing mod = c.update(2, -1) for x in mod: self.assertEqual(0, mod[x]) # start>end does nothing mod = c.update(2, 1) for x in mod: self.assertEqual(0, mod[x]) # end = None mod = c.update(9000000000, None) for x in mod: self.assertEqual(0, mod[x])
def test_update(self): pt = models.Country.objects.create(name='Portugal') vs = models.District.objects.create(name='Viseu', country=pt, base_id=1) models.Council.objects.create(name='Viseu', district=vs, base_id=1) d = models.District.objects.create(name='Faro', country=pt, base_id=2) models.Council.objects.create(name='Faro', district=d, base_id=2) models.ContractType.objects.create(name='Aquisição de serviços', base_id=1) models.ProcedureType.objects.create(name='Ajuste directo', base_id=1) c = ContractsCrawler() c.update(7, 10) # test missing contracts are added models.Contract.objects.get(base_id=27).delete() mods = c.update(7, 10) self.assertEqual(1, mods['added']) # test removed contracts are added; deleted contracts are deleted contract = models.Contract.objects.get(base_id=27) contract.base_id = 28 contract.save() mods = c.update(7, 10) self.assertEqual(1, mods['deleted']) self.assertEqual(1, mods['added']) # test modified contracts are updated contract = models.Contract.objects.get(base_id=27) contract.price = -10 contract.save() mods = c.update(7, 10) self.assertEqual(1, mods['updated'])