Exemple #1
0
    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)
Exemple #2
0
    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)
Exemple #3
0
    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)
Exemple #4
0
    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)
Exemple #5
0
    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)
Exemple #6
0
    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)
Exemple #7
0
    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)
Exemple #8
0
    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)
Exemple #9
0
    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))
Exemple #10
0
    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)
Exemple #11
0
    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)
Exemple #12
0
    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)
Exemple #13
0
    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)
Exemple #14
0
    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)
Exemple #15
0
    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)
Exemple #16
0
    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)