def test_single_earn_movement(self): self.assertEqual(0, Movement.objects.count()) data = parse_csv( cStringIO.StringIO(LLOYDS_SIMPLE_EXAMPLE_EARN_ROW), parser=LloydsParser, ) import_movements(data, self.bank_account) self.assertEqual(1, Movement.objects.count()) movement = Movement.objects.all()[0] self.assertEqual(data[0]["description"], movement.description) self.assertEqual(data[0]["amount"], movement.amount) self.assertEqual(data[0]["date"], movement.date) self.assertEqual(self.bank_account, movement.bank_account)
def save(self, *args, **kwargs): if self.is_valid(): parser = ENTITY_TO_PARSER[BankAccount.objects.get( pk=self.cleaned_data['bank_account']).entity] data = parse_csv( self.cleaned_data["estatement"], parser=parser, header_lines=1, reverse_order=True, ) bank_account = BankAccount.objects.get( pk=self.cleaned_data["bank_account"]) import_movements(data, bank_account)
def test_avoid_duplicates(self): self.assertEqual(0, Movement.objects.count()) data = parse_csv( cStringIO.StringIO(LLOYDS_SIMPLE_EXAMPLE_PAY_ROW), parser=LloydsParser, ) imported, rejected = import_movements(data, self.bank_account) self.assertEqual(1, Movement.objects.count()) self.assertEqual(1, imported) self.assertEqual(0, len(rejected)) imported, rejected = import_movements(data, self.bank_account) self.assertEqual(1, Movement.objects.count()) self.assertEqual(0, imported) self.assertEqual(1, len(rejected)) self.assertEqual(data[0]["description"], rejected[0]["description"]) self.assertEqual(data[0]["amount"], rejected[0]["amount"]) self.assertEqual(data[0]["date"], rejected[0]["date"])
def test_multi_movement(self): self.assertEqual(0, Movement.objects.count()) data = parse_csv( cStringIO.StringIO( LLOYDS_SIMPLE_EXAMPLE_PAY_ROW + LLOYDS_SIMPLE_EXAMPLE_EARN_ROW), parser=LloydsParser, ) import_movements(data, self.bank_account) self.assertEqual(2, Movement.objects.count()) movements = Movement.objects.all() self.assertEqual(data[0]["description"], movements[0].description) self.assertEqual(data[0]["amount"], movements[0].amount) self.assertEqual(data[0]["date"], movements[0].date) self.assertEqual(self.bank_account, movements[0].bank_account) self.assertEqual(data[1]["description"], movements[1].description) self.assertEqual(data[1]["amount"], movements[1].amount) self.assertEqual(data[1]["date"], movements[1].date) self.assertEqual(self.bank_account, movements[1].bank_account)