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'])
    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_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'])