Esempio n. 1
0
    def post(self, request):
        validation = PedidoValidation(self._postData)
        if (validation.is_valid() == True):
            id = self._postData.get('id')
            if (id == None):
                if self.resultBO.insert(self._postData):
                    result = self._apiresult.success(None)
                else:
                    result = self._apiresult.error(None)
            else:
                if self.resultBO.edit(self._postData.get('id'), self._postData):
                    result = self._apiresult.success(None)
                else:
                    result = self._apiresult.error(None)
        else:
            result = self._apiresult.error(
                validation.errors
            )

        return HttpResponse(
            json.dumps(result), mimetype='application/json'
        )
 def setUp(self):
     self.validation = PedidoValidation(None)
     self.validation.post = self.pegar_dados_padroes()
     self.validation.data = self.pegar_dados_padroes()
class TesteValidacaoPedido(unittest.TestCase):

    validation = None

    def setUp(self):
        self.validation = PedidoValidation(None)
        self.validation.post = self.pegar_dados_padroes()
        self.validation.data = self.pegar_dados_padroes()

    def pegar_dados_padroes(self):
        dados = {
            'cliente_id': 1,
            'itens': {
                0: {
                    'quantidade': 2,
                    'desconto': 10,
                    'produto': {
                        'id': 1,
                        'nome': 'Produto Teste',
                        'valor': 120,
                    },
                },
            }
        }
        return dados

    def teste_form_valido_com_cliente_e_um_produto(self):
        result = self.validation.is_valid()
        self.assertEqual(result, True)

    def teste_form_valido_com_cliente_e_cinco_produtos(self):
        dados = self.pegar_dados_padroes()
        for i in range(2, 6):
            dados['itens'][i] = {
                'quantidade': 2,
                'desconto': i*3,
                'produto': {
                    'id': i,
                    'nome': 'Produto Teste #' + str(i),
                    'valor': 220 * i,
                },
            }

        self.validation.data = dados
        self.validation.post = dados

        result = self.validation.is_valid()
        self.assertEqual(result, True)

    def teste_form_invalido_com_cliente_e_sem_produto(self):
        dados = self.pegar_dados_padroes()
        dados['itens'] = {}

        self.validation.data = dados
        self.validation.post = dados

        result = self.validation.is_valid()
        self.assertEqual(result, False)

    def teste_form_invalido_sem_cliente_e_com_produto(self):
        dados = self.pegar_dados_padroes()
        dados['cliente_id'] = None

        self.validation.data = dados
        self.validation.post = dados

        result = self.validation.is_valid()
        self.assertEqual(result, False)

    def teste_form_invalido_com_cliente_e_item_invalido_desconto_nao_informado(self):
        dados = self.pegar_dados_padroes()
        dados['itens'][0] = {
            'quantidade': 2,
            'produto': {
                'id': 1,
                'nome': 'Produto Teste',
                'valor': 220,
            },
        }

        self.validation.data = dados
        self.validation.post = dados

        result = self.validation.is_valid()
        self.assertEqual(result, False)

    def teste_form_invalido_com_cliente_e_item_invalido_quantidade_nao_informada(self):
        dados = self.pegar_dados_padroes()
        dados['itens'][0] = {
            'desconto': 2,
            'produto': {
                'id': 1,
                'nome': 'Produto Teste',
                'valor': 220,
            },
        }

        self.validation.data = dados
        self.validation.post = dados

        result = self.validation.is_valid()
        self.assertEqual(result, False)

    def teste_form_invalido_com_cliente_e_item_invalido_produto_nao_informado(self):
        dados = self.pegar_dados_padroes()
        dados['itens'][0] = {
            'desconto': 2,
            'quantidade': 2,
        }

        self.validation.data = dados
        self.validation.post = dados

        result = self.validation.is_valid()
        self.assertEqual(result, False)

    def teste_form_invalido_com_cliente_e_um_item_valido_e_um_item_invalido(self):
        dados = self.pegar_dados_padroes()
        dados['itens'][1] = {
            'desconto': 2,
            'produto': {
                'id': 1,
                'nome': 'Produto Teste',
                'valor': 220,
            },
        }

        self.validation.data = dados
        self.validation.post = dados

        result = self.validation.is_valid()
        self.assertEqual(result, False)