def test_list_products_ok_response(
			self,
			mock_pagination_meta,
			mock_filter_by
	):
		'''Test list_products OK response.
        '''
		# Arrange
		with self.app.app_context():
			mock_pagination_meta.return_value = {
				'total_rows': 1,
				'total_pages': 1,
				'current_page': 1,
				'next_page': 1,
				'prev_page': 1
			}
			mock_filter_by.return_value.items = [
				self.mock_product,
			]
			product_controller = ProductController(self.request_context)

			# Act
			result = product_controller.list_products()

			# Assert
			assert result.status_code == 200
			assert result.get_json()['msg'] == 'OK'
	def test_update_product_ok_response(
			self,
			mock_product_repo_get,
			mock_request_params
	):
		'''Test update_product OK response.
        '''
		# Arrange
		with self.app.app_context():
			mock_request_params.return_value = (
				self.fake.name(), self.fake.text(),
				self.fake.pydecimal(left_digits=2, right_digits=2, positive=True),
				self.fake.pydecimal(left_digits=2, right_digits=2, positive=True),
				self.fake.name(), self.fake.name(), self.fake.name(),
				20, 3, 1
			)
			mock_product_repo_get.return_value = self.mock_product
			product_controller = ProductController(self.request_context)

			# Act
			result = product_controller.update_product(1)

			# Assert
			assert result.status_code == 200
			assert result.get_json()['msg'] == 'OK'
	def test_update_product_when_product_doesnot_exist(
			self,
			mock_product_repo_get,
			mock_request_params
	):
		'''Test update_product when product does not exist.
        '''
		# Arrange
		with self.app.app_context():
			mock_request_params.return_value = (
				self.fake.name(), self.fake.text(),
				self.fake.pydecimal(left_digits=2, right_digits=2, positive=True),
				self.fake.pydecimal(left_digits=2, right_digits=2, positive=True),
				self.fake.name(), self.fake.name(), self.fake.name(),
				20, 3, 1
			)
			mock_product_repo_get.return_value = None
			product_controller = ProductController(self.request_context)

			# Act
			result = product_controller.update_product(1)

			# Assert
			assert result.status_code == 400
			assert result.get_json()['msg'] == 'Invalid or incorrect ' \
											   'product_id provided'
	def test_get_product_ok_response(
			self,
			mock_product_repo_get
	):
		'''Test get_product OK response.
        '''
		# Arrange
		with self.app.app_context():
			mock_product_repo_get.return_value = self.mock_product
			product_controller = ProductController(self.request_context)

			# Act
			result = product_controller.get_product(1)

			# Assert
			assert result.status_code == 200
			assert result.get_json()['msg'] == 'OK'
	def test_delete_product_when_product_is_already_deleted(
			self,
			mock_product_repo_get
	):
		'''Test delete_product when product is already deleted.
        '''
		# Arrange
		with self.app.app_context():
			mock_product_repo_get.return_value = self.mock_deleted_product
			product_controller = ProductController(self.request_context)

			# Act
			result = product_controller.delete_product(1)

			# Assert
			assert result.status_code == 400
			assert result.get_json()['msg'] == 'product has already ' \
											   'been deleted'
	def test_delete_product_when_product_doesnot_exist(
			self,
			mock_product_repo_get
	):
		'''Test delete_product when product doesnot exist.
        '''
		# Arrange
		with self.app.app_context():
			mock_product_repo_get.return_value = None
			product_controller = ProductController(self.request_context)

			# Act
			result = product_controller.delete_product(1)

			# Assert
			assert result.status_code == 400
			assert result.get_json()['msg'] == 'Invalid or incorrect ' \
											   'product_id provided'
	def test_get_product_when_product_doesnot_exist(
			self,
			mock_product_repo_get
	):
		'''Test get_product when the product doesnot exist.
        '''
		# Arrange
		with self.app.app_context():
			mock_product_repo_get.return_value = None
			product_controller = ProductController(self.request_context)

			# Act
			result = product_controller.get_product(1)

			# Assert
			assert result.status_code == 400
			assert result.get_json()['msg'] == 'Bad Request - Invalid or ' \
											   'Missing product_id'
	def test_creat_product_ok_response(
			self,
			mock_new_product,
			mock_request_params
	):
		'''Test create_product OK response.
        '''
		mock_request_params.return_value = (
			self.fake.name(), self.fake.text(),
			self.fake.pydecimal(left_digits=2, right_digits=2, positive=True),
			self.fake.pydecimal(left_digits=2, right_digits=2, positive=True),
			self.fake.name(), self.fake.name(), self.fake.name(),
			20, 3, 1, [2,3]
		)
		mock_new_product.return_value = self.mock_product
		product_controller = ProductController(self.request_context)

		# Act
		result = product_controller.create_product()

		# Assert
		assert result.status_code == 201
		assert result.get_json()['msg'] == 'OK'
Пример #9
0
from flask import jsonify, request, Blueprint
from flask.views import MethodView
from datetime import datetime
from flask_jwt_extended import get_jwt_identity, jwt_required
from app.validation import Validation
from app.decorator import admin_permission_required
from app.controllers.product_controller import ProductController
from app.controllers.sale_controller import SaleController
from app.controllers.user_controller import UserController
from app.db.db_functions import DBFunctions

validate = Validation()
product_controller = ProductController()
user_controller = UserController()
sale_controller = SaleController()
db_func = DBFunctions()
views_blueprint = Blueprint("views_blueprint", __name__)

"""PRODUCT VIEWS"""
class AddProduct(MethodView):
    @admin_permission_required
    def post(self):
        try:
            data = request.get_json()
            search_keys = ("product", "quantity", "unit_price")
            if all(key in data.keys() for key in search_keys):
                product = data.get("product")
                quantity = data.get("quantity")
                unit_price = data.get("unit_price")

                invalid = validate.product_validation(