Skip to content

Instantly share code, notes, and snippets.

@huogerac
Last active July 17, 2024 00:01
Show Gist options
  • Save huogerac/6da72feff78a87a87f9483a11f167471 to your computer and use it in GitHub Desktop.
Save huogerac/6da72feff78a87a87f9483a11f167471 to your computer and use it in GitHub Desktop.
testando listar pedido de estoque
import pytest
from embalae.accounts.models import User, Fornecedor, Marca, Unidade
@pytest.fixture
def marca1(db):
marca_um = Marca.objects.create(nome="Marca 1", slug="Marca1")
Unidade.objects.create(nome="Marca 1-U1", marca=marca_um)
return marca_um
@pytest.fixture
def marca2(db):
marca_dois = Marca.objects.create(nome="Marca 2", slug="Marca2")
Unidade.objects.create(nome="Marca 2-U1", marca=marca_dois)
Unidade.objects.create(nome="Marca 2-U2", marca=marca_dois)
return marca_dois
@pytest.fixture
def user_admin_marca1(db, marca1):
admin1 = User.objects.create_user(
username="admin1",
first_name="Admin Marca 1",
last_name="Adm1",
email="[email protected]",
is_representante=True,
is_superuser=True,
)
for u in Unidade.objects.filter(marca=marca1):
u.representantes.add(admin1)
admin1.unidade_padrao = u
admin1.save()
return admin1
@pytest.fixture
def user_admin_marca2(db, marca2):
admin2 = User.objects.create_user(
username="admin2",
first_name="Admin Marca 2",
last_name="Adm2",
email="[email protected]",
is_representante=True,
)
for u in Unidade.objects.filter(marca=marca2):
u.representantes.add(admin2)
admin2.unidade_padrao = u
admin2.save()
return admin2
@pytest.fixture
def grafica(db):
nova_grafica = Fornecedor.objects.create(nome="Grafica")
return nova_grafica
@pytest.fixture
def user_grafica(db, grafica):
ze = User.objects.create_user(
username="ze_papel",
first_name="Ze",
last_name="Papel",
email="[email protected]",
is_fornecedor=True,
fornecedor_padrao=grafica,
)
grafica.responsavel.add(ze)
return ze
@pytest.fixture
def user_delivery(db):
jon = User.objects.create_user(
username="jon",
first_name="Jon",
last_name="Snow",
email="[email protected]",
password="snow",
is_delivery=True,
)
return jon
import pytest
from embalae.estoque.models import (
Categoria,
Produto,
PedidoEstoque,
PedidoEstoqueItem,
)
from embalae.estoque.service import entregas_service
@pytest.mark.django_db
def test_deve_listar_um_produto_da_marca(marca1, user_admin_marca1, grafica):
# Dado um produto e seu estoque disponível
sacolas = Categoria.objects.create(categoria="Sacolas")
sacola = Produto.objects.create(
nome="Sacola Delivery", categoria=sacolas, marca=marca1, fornecedor=grafica
)
estoque_grafica1 = PedidoEstoque.objects.create(
fornecedor=grafica,
marca=marca1,
criado_por=user_admin_marca1,
)
estoque_sacola = PedidoEstoqueItem.objects.create(
pedido_estoque=estoque_grafica1,
produto=sacola,
valor_unitario=1.22,
status=PedidoEstoqueItem.STATUS_NOVO,
quantidade_pedido=5000,
quantidade_disponivel=0,
lote="Lote1",
)
# Quando fazemos um pedido de entrega
lista_estoque = entregas_service.obter_novo_estoque(user=user_admin_marca1)
assert len(lista_estoque) == 1
assert lista_estoque.first() == estoque_sacola
@pytest.mark.django_db
def test_deve_listar_um_produto_do_fornecedor(marca1, grafica, user_grafica):
# Dado um produto e seu estoque disponível
sacolas = Categoria.objects.create(categoria="Sacolas")
sacola = Produto.objects.create(
nome="Sacola Delivery", categoria=sacolas, marca=marca1, fornecedor=grafica
)
estoque_grafica1 = PedidoEstoque.objects.create(
fornecedor=grafica,
marca=marca1,
criado_por=user_grafica,
)
estoque_sacola = PedidoEstoqueItem.objects.create(
pedido_estoque=estoque_grafica1,
produto=sacola,
valor_unitario=1.22,
status=PedidoEstoqueItem.STATUS_NOVO,
quantidade_pedido=5000,
quantidade_disponivel=0,
lote="Lote1",
)
# Quando fazemos um pedido de entrega
lista_estoque = entregas_service.obter_novo_estoque(user=user_grafica)
assert len(lista_estoque) == 1
assert lista_estoque.first() == estoque_sacola
@pytest.mark.django_db
def test_deve_listar_estoque_do_delivery_correto(marca1, marca2, grafica, user_admin_marca1, user_delivery_marca1):
# Dado um produto e seu estoque disponível
sacolas = Categoria.objects.create(categoria="Sacolas")
sacola1 = Produto.objects.create(
nome="Sacola Delivery M1", categoria=sacolas, marca=marca1, fornecedor=grafica
)
sacola2 = Produto.objects.create(
nome="Sacola Delivery M2", categoria=sacolas, marca=marca2, fornecedor=grafica
)
estoque_grafica1 = PedidoEstoque.objects.create(fornecedor=grafica, marca=marca1, criado_por=user_admin_marca1)
estoque_sacola1 = PedidoEstoqueItem.objects.create(
pedido_estoque=estoque_grafica1,
produto=sacola1,
valor_unitario=1.22,
status=PedidoEstoqueItem.STATUS_NOVO,
quantidade_pedido=5000,
quantidade_disponivel=0,
lote="Lote1",
)
estoque_grafica2 = PedidoEstoque.objects.create(fornecedor=grafica, marca=marca2, criado_por=user_admin_marca1)
estoque_sacola2 = PedidoEstoqueItem.objects.create(
pedido_estoque=estoque_grafica1,
produto=sacola2,
valor_unitario=1.22,
status=PedidoEstoqueItem.STATUS_NOVO,
quantidade_pedido=15000,
quantidade_disponivel=0,
lote="Lote2",
)
# Quando fazemos um pedido de entrega
lista_estoque = entregas_service.obter_novo_estoque(user=user_delivery_marca1)
assert len(lista_estoque) == 1
assert lista_estoque.first() == estoque_sacola1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment