Exemplo n.º 1
0
class TestPurchaseService(unittest.TestCase):
    def setUp(self):
        self.service = PurchaseService(None, None, None, None, None)

    def test_group_purchase_by_month_without_data(self):
        grouped_purchase = self.service.group_purchases_by_month(list())
        self.assertIsNone(grouped_purchase)

    def test_group_purchase_by_month(self):
        grouped_purchase = self.service.group_purchases_by_month(
            purchases_to_test_group_by_month)

        self.assertEqual(3, len(grouped_purchase))

        key1 = list(grouped_purchase.keys())[0]
        key2 = list(grouped_purchase.keys())[1]
        key3 = list(grouped_purchase.keys())[2]

        self.assertEqual(datetime(2020, 10, 1), datetime.fromtimestamp(key1))
        self.assertEqual(datetime(2020, 11, 5), datetime.fromtimestamp(key2))
        self.assertEqual(datetime(2020, 12, 15), datetime.fromtimestamp(key3))

        self.assertEqual(2, len(grouped_purchase[key1]))
        self.assertEqual(2, len(grouped_purchase[key2]))
        self.assertEqual(1, len(grouped_purchase[key3]))
Exemplo n.º 2
0
def get_monthly_spent(purchase_service: PurchaseService):
    start_date_field = "start-date"
    end_date_field = "end-date"

    start_date = request.args.get(start_date_field, type=from_str_to_date)
    end_date = request.args.get(end_date_field, type=from_str_to_date)

    if not start_date:
        start_date = datetime.now() - timedelta(days=1)

    if not end_date:
        end_date = datetime.now()

    return jsonify(
        purchase_service.get_monthly_spent_by_period(start_date, end_date))
Exemplo n.º 3
0
    def configure(self, binder: Binder):
        if not self.db:
            self.db = SQLAlchemy(self.app,
                                 session_options={"autoflush": False})

        dependencies = list()

        brand_dao = BrandDAO(self.db)
        dependencies.append(brand_dao)

        product_dao = ProductDAO(self.db)
        dependencies.append(product_dao)
        product_type_dao = ProductTypeDAO(self.db)
        dependencies.append(product_type_dao)
        purchase_dao = PurchaseDAO(self.db)
        dependencies.append(purchase_dao)
        purchase_list_dao = PurchaseListDAO(self.db)
        dependencies.append(purchase_list_dao)
        user_dao = UserDAO(self.db)
        dependencies.append(user_dao)
        user_group_dao = UserGroupDAO(self.db)
        dependencies.append(user_group_dao)

        user_group_mapper = UserGroupMapper(user_group_dao)
        dependencies.append(user_group_mapper)
        user_mapper = UserMapper(user_dao, user_group_mapper)
        dependencies.append(user_mapper)
        brand_mapper = BrandMapper(brand_dao, user_mapper)
        dependencies.append(brand_mapper)
        product_type_mapper = ProductTypeMapper(product_type_dao, user_mapper)
        dependencies.append(product_type_mapper)
        product_mapper = ProductMapper(product_dao, product_type_mapper,
                                       brand_mapper, user_mapper)
        dependencies.append(product_mapper)
        purchase_list_mapper = PurchaseListMapper(purchase_list_dao,
                                                  user_mapper, product_mapper)
        dependencies.append(purchase_list_mapper)
        purchase_mapper = PurchaseMapper(purchase_dao, user_mapper,
                                         product_mapper, purchase_list_mapper)
        dependencies.append(purchase_mapper)

        brand_service = BrandService(brand_dao, brand_mapper)
        dependencies.append(brand_service)
        product_type_service = ProductTypeService(product_type_dao,
                                                  product_type_mapper)
        dependencies.append(product_type_service)
        product_service = ProductService(product_dao, brand_service,
                                         product_type_service, product_mapper)
        dependencies.append(product_service)
        purchase_list_service = PurchaseListService(purchase_list_dao,
                                                    product_service,
                                                    purchase_list_mapper)
        dependencies.append(purchase_list_service)
        user_group_service = UserGroupService(user_group_dao)
        dependencies.append(user_group_service)
        user_service = UserService(user_dao, user_group_service, user_mapper)
        dependencies.append(user_service)
        purchase_service = PurchaseService(purchase_dao, purchase_list_service,
                                           product_service, purchase_mapper,
                                           product_type_mapper)
        dependencies.append(purchase_service)

        for instance in dependencies:
            binder.bind(type(instance), to=instance, scope=singleton)
Exemplo n.º 4
0
def delete_purchase(purchase_id: str, purchase_service: PurchaseService):
    purchase_service.delete_by_id(int(purchase_id))
    return {}, 200
Exemplo n.º 5
0
def update_purchase(purchase_service: PurchaseService,
                    purchase_mapper: PurchaseMapper):
    purchase_dto = request.json
    purchase = purchase_service.update_from_dto(purchase_dto)
    return jsonify(purchase_mapper.to_dto(purchase))
Exemplo n.º 6
0
def get_purchase(purchase_id: str, purchase_service: PurchaseService,
                 purchase_mapper: PurchaseMapper):
    purchase = purchase_service.find_by_id(int(purchase_id))
    return jsonify(purchase_mapper.to_dto(purchase))
Exemplo n.º 7
0
def get_all_purchases(purchase_service: PurchaseService,
                      purchase_mapper: PurchaseMapper):
    return jsonify(
        purchase_mapper.from_list_to_dto(purchase_service.find_all()))
Exemplo n.º 8
0
 def setUp(self):
     self.service = PurchaseService(None, None, None, None, None)