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]))
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))
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)
def delete_purchase(purchase_id: str, purchase_service: PurchaseService): purchase_service.delete_by_id(int(purchase_id)) return {}, 200
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))
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))
def get_all_purchases(purchase_service: PurchaseService, purchase_mapper: PurchaseMapper): return jsonify( purchase_mapper.from_list_to_dto(purchase_service.find_all()))
def setUp(self): self.service = PurchaseService(None, None, None, None, None)