def handle(self, *args, **options): now = timezone.now() try: last_import_run = ImportRun.objects.latest('timestamp') since = last_import_run.timestamp except ImportRun.DoesNotExist: since = now - timedelta(days=3) ImportRun.objects.create(timestamp=now) changed_sprinters = set() trac_importer = TracImporter() changed_sprinters.update(trac_importer.sync(since)) github_importer = GithubImporter() changed_sprinters.update(github_importer.sync(since)) process_achievements(changed_sprinters)
def setUp(self): self.since = make_aware(datetime(2013, 1, 1, 13, 46), utc) self.proxy = FakeProxy(self.since) self.importer = Importer(self.proxy)
class ImporterTest(TestCase): def setUp(self): self.since = make_aware(datetime(2013, 1, 1, 13, 46), utc) self.proxy = FakeProxy(self.since) self.importer = Importer(self.proxy) def test_changed_tickets_get_created(self): self.importer.sync(self.since) expect(Ticket.objects.count()) == 2 def test_created_tickets_get_attributes(self): self.importer.sync(self.since) ticket = Ticket.objects.all()[0] expect(ticket.component) == u"Forms" expect(ticket.severity) == u"Normal" expect(ticket.status) == u"new" expect(ticket.kind) == u"New feature" expect(ticket.resolution) == u"" def test_tickets_get_changes(self): self.importer.sync(self.since) ticket = Ticket.objects.all()[0] expect(len(ticket.changes.all())) == 2 def test_ticket_change_get_attributes(self): self.importer.sync(self.since) ticket = Ticket.objects.all()[0] change = ticket.changes.latest("timestamp") expect(change.author) == u"bob" expect(change.field) == u"status" expect(change.old_value) == u"new" expect(change.new_value) == u"assigned" def test_sync_is_idempotent(self): self.importer.sync(self.since) self.importer.sync(self.since) expect(Ticket.objects.count()) == 2 ticket = Ticket.objects.all()[0] expect(ticket.changes.count()) == 2 def test_no_sprinter_no_change(self): self.importer.sync(self.since) expect(SprinterChange.objects.count()) == 0 def test_adds_sprinter_changes(self): user = User.objects.create(username="******") sprinter = Sprinter.objects.create(user=user, trac_login="******") self.importer.sync(self.since - timedelta(hours=1)) expect(SprinterChange.objects.count()) == 2 sprinter_change = sprinter.changes.latest("pk") expect(sprinter_change.field) == u"comment" expect(sprinter_change.kind) == u"New feature" expect(sprinter_change.status) == u"new" expect(sprinter_change.severity) == u"Normal" expect(sprinter_change.resolution) == u"" expect(sprinter_change.ticket_id) == 12345