def test_should_confirm_receive_update_received_date(self): billing = Billing(title='Gas Station', description='Yesterday', value=Decimal(-10), work_date=yesterday) billing.confirm_receive() self.assertIsInstance(billing.receive_date, datetime)
def test_should_save_billing_update_billing_when_exists(self): yesterday = datetime.now() + timedelta(days=1) billing_table = BillingTable(uid=str(uuid.uuid4()), title='Gas Station', description='Yesterday', value=Decimal(10), work_date=yesterday) self._session.add(billing_table) billing = Billing(title='Gas Station', description='Yesterday', value=Decimal(10), work_date=yesterday, uid=billing_table.uid) naruto = User() self._user_repository.save_billing(naruto, billing) result = len(self._session.query(BillingTable).all()) expected = 1 self.assertEqual(expected, result)
def test_should_remove_billing(self): user_uid = str(uuid.uuid4()) billing_uid = str(uuid.uuid4()) self._session.add( BillingTable(uid=billing_uid, title='', description='', value=Decimal(10), work_date=datetime.now(), user_uid=user_uid)) self._session.add( BillingTable(uid=str(uuid.uuid4()), title='', description='', value=Decimal(10), work_date=datetime.now(), user_uid=user_uid)) billing = Billing(title='', description='', value=Decimal(10), work_date=datetime.now(), uid=billing_uid) self._user_repository.remove_billing(billing) result = len(self._session.query(BillingTable).all()) expected = 1 self.assertEqual(expected, result)
def test_should_is_valid_false_when_value_is_negative(self): billing = Billing(title='Gas Station', description='Yesterday', value=Decimal(-10), work_date=yesterday) self.assertFalse(billing.is_valid)
def test_should_is_valid_false_when_description_is_empty_or_none(self): billing = Billing(title='Gas Station', description='', value=Decimal(10), work_date=yesterday) self.assertFalse(billing.is_valid)
def test_should_received_is_false_when_receive_date_not_is_inform(self): billing = Billing(title='', description='Yesterday', value=Decimal(10), work_date=yesterday) self.assertFalse(billing.received)
def test_should_is_valid_false_when_receive_date_is_lower_than_work_date( self): before_yesterday = yesterday - timedelta(days=1) billing = Billing(title='Gas Station', description='Yesterday', value=Decimal(10), work_date=yesterday, receive_date=before_yesterday) self.assertFalse(billing.is_valid)
def test_should_confirm_receive_billing_confirm_receive(self): naruto = User(uid=str(uuid.uuid4())) billing = Billing(title='Gas Station', description='Yesterday', value=Decimal(10), work_date=yesterday) naruto.confirm_receive_billing(billing) self.assertIsInstance(billing.receive_date, datetime)
def test_should_add_billing(self): naruto = User(uid=str(uuid.uuid4())) billing = Billing(title='Gas Station', description='Yesterday', value=Decimal(10), work_date=yesterday) naruto.add_billing(billing) self.assertEqual(1, len(naruto.billing))
def test_should_is_valid_true_when_cancel_receive_billing(self): self._user_repository.get_by_uid.return_value = User() self._user_repository.get_billing_by_uid.return_value = Billing(title='Gas Station', description='Yesterday', value=Decimal(10), work_date=datetime.now()) command = CancelReceiveBillingCommand(user_uid=str(uuid.uuid4()), billing_uid=str(uuid.uuid4())) self._use_case.execute(command) self.assertTrue(self._use_case.is_valid)
def test_should_is_valid_false_when_user_not_exists(self): self._user_repository.get_billing_by_uid.return_value = Billing(title='', description='', value=Decimal(10), work_date=datetime.now(), uid=str(uuid.uuid4())) self._user_repository.get_by_uid.return_value = None command = RemoveBillingCommand(user_uid=str(uuid.uuid4()), billing_uid=str(uuid.uuid4())) self._use_case.execute(command) self.assertFalse(self._use_case.is_valid)
def get_billing_by_uid(self, user, uid): billing = (self._uow.session.query(BillingTable).filter( BillingTable.uid == uid, BillingTable.user_uid == user.uid).first()) if not billing: return return Billing(title=billing.title, description=billing.description, value=billing.value, work_date=billing.work_date, receive_date=billing.receive_date, uid=billing.uid)
def test_should_is_valid_false_when_user_not_exists(self): user_repository = Mock() user_repository.get_by_uid.return_value = None user_repository.get_billing_by_uid.return_value = Billing(title='Gas Station', description='Yesterday', value=Decimal(100), work_date=datetime.now()) command = ConfirmReceiveBillingCommand(user_uid=str(uuid.uuid4()), billing_uid=str(uuid.uuid4())) use_case = ConfirmReceiveBilling(user_repository) use_case.execute(command) self.assertFalse(use_case.is_valid)
def test_should_is_valid_true_when_update_billing(self): user_repository = Mock() user_repository.get_by_uid.return_value = User() user_repository.get_billing_by_uid.return_value = Billing(title='', description='', value=Decimal(10), work_date=datetime.now(), uid=str(uuid.uuid4())) command = UpdateBillingCommand(user_uid=str(uuid.uuid4()), billing_uid=str(uuid.uuid4()), title='Gas Station', description='Yesterday', value=Decimal(10), work_date=datetime.now()) use_case = UpdateBilling(user_repository) use_case.execute(command) self.assertTrue(use_case.is_valid)
def execute(self, command): user = self._user_repository.get_by_uid(command.user_uid) if not user: self.add_notifications(Notification('user', 'user not exists')) return billing = Billing(title=command.title, description=command.description, value=command.value, work_date=command.work_date) user.add_billing(billing) self.add_notifications(user, billing) if not self.is_valid: return for billing in user.billing: self._user_repository.save_billing(user, billing)
def execute(self, command): user = self._user_repository.get_by_uid(command.user_uid) if not user: self.add_notification(Notification('user', 'user not exists')) return billing = self._user_repository.get_billing_by_uid(user, command.billing_uid) if not billing: self.add_notification(Notification('Billing', 'billing not exists')) return billing = Billing(title=command.title, description=command.description, value=command.value, work_date=command.work_date, receive_date=billing.receive_date, uid=billing.uid) self._user_repository.save_billing(user, billing)