From b730d24855db5872d981a162e0401844cbeccac7 Mon Sep 17 00:00:00 2001 From: Mono Mono Date: Sat, 13 Dec 2025 12:24:35 -0500 Subject: [PATCH 1/6] #29 feat(Auth): add login. --- .../don_confiao/templates/registration/login.html | 5 +++++ tienda_ilusion/don_confiao/urls.py | 2 ++ tienda_ilusion/tienda_ilusion/settings.py | 9 +++++++++ 3 files changed, 16 insertions(+) create mode 100644 tienda_ilusion/don_confiao/templates/registration/login.html diff --git a/tienda_ilusion/don_confiao/templates/registration/login.html b/tienda_ilusion/don_confiao/templates/registration/login.html new file mode 100644 index 0000000..0ec0e16 --- /dev/null +++ b/tienda_ilusion/don_confiao/templates/registration/login.html @@ -0,0 +1,5 @@ +
+ {% csrf_token %} + {{ form.as_p }} + +
diff --git a/tienda_ilusion/don_confiao/urls.py b/tienda_ilusion/don_confiao/urls.py index b2ebf87..647e2d0 100644 --- a/tienda_ilusion/don_confiao/urls.py +++ b/tienda_ilusion/don_confiao/urls.py @@ -1,4 +1,5 @@ from django.urls import path, include +from django.contrib.auth.views import LoginView from rest_framework.routers import DefaultRouter from . import views @@ -15,6 +16,7 @@ router.register(r'reconciliate_jar', api_views.ReconciliateJarModelView, urlpatterns = [ path("", views.index, name="wellcome"), + path("accounts/", include("django.contrib.auth.urls")), path("comprar", views.buy, name="buy"), path("compras", views.purchases, name="purchases"), path("productos", views.products, name="products"), diff --git a/tienda_ilusion/tienda_ilusion/settings.py b/tienda_ilusion/tienda_ilusion/settings.py index a48f9c4..e1bab0a 100644 --- a/tienda_ilusion/tienda_ilusion/settings.py +++ b/tienda_ilusion/tienda_ilusion/settings.py @@ -134,3 +134,12 @@ STATIC_URL = 'static/' DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' FIXTURE_DIRS = ['don_confiao/tests/Fixtures'] + +REST_FRAMEWORK = { + 'DEFAULT_AUTHENTICATION_CLASSES': [ + 'rest_framework.authentication.SessionAuthentication', + ], + 'DEFAULT_PERMISSION_CLASSES': [ + 'rest_framework.permissions.IsAuthenticated', + ], +} From f323873d80bec592a63d4e3de530d9d52197cb28 Mon Sep 17 00:00:00 2001 From: Mono Mono Date: Sat, 13 Dec 2025 16:30:53 -0500 Subject: [PATCH 2/6] #29 feat(Auth): add logout and profile. --- tienda_ilusion/don_confiao/urls.py | 2 -- tienda_ilusion/tienda_ilusion/settings.py | 4 ++- .../templates/registration/login.html | 0 .../templates/registration/profile.html | 27 +++++++++++++++++++ .../tienda_ilusion/templates/start.html | 22 +++++++++++++++ tienda_ilusion/tienda_ilusion/urls.py | 4 +++ 6 files changed, 56 insertions(+), 3 deletions(-) rename tienda_ilusion/{don_confiao => tienda_ilusion}/templates/registration/login.html (100%) create mode 100644 tienda_ilusion/tienda_ilusion/templates/registration/profile.html create mode 100644 tienda_ilusion/tienda_ilusion/templates/start.html diff --git a/tienda_ilusion/don_confiao/urls.py b/tienda_ilusion/don_confiao/urls.py index 647e2d0..b2ebf87 100644 --- a/tienda_ilusion/don_confiao/urls.py +++ b/tienda_ilusion/don_confiao/urls.py @@ -1,5 +1,4 @@ from django.urls import path, include -from django.contrib.auth.views import LoginView from rest_framework.routers import DefaultRouter from . import views @@ -16,7 +15,6 @@ router.register(r'reconciliate_jar', api_views.ReconciliateJarModelView, urlpatterns = [ path("", views.index, name="wellcome"), - path("accounts/", include("django.contrib.auth.urls")), path("comprar", views.buy, name="buy"), path("compras", views.purchases, name="purchases"), path("productos", views.products, name="products"), diff --git a/tienda_ilusion/tienda_ilusion/settings.py b/tienda_ilusion/tienda_ilusion/settings.py index e1bab0a..df1a981 100644 --- a/tienda_ilusion/tienda_ilusion/settings.py +++ b/tienda_ilusion/tienda_ilusion/settings.py @@ -65,7 +65,7 @@ ROOT_URLCONF = 'tienda_ilusion.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [], + 'DIRS': [os.path.join(BASE_DIR, 'tienda_ilusion/templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ @@ -143,3 +143,5 @@ REST_FRAMEWORK = { 'rest_framework.permissions.IsAuthenticated', ], } + +LOGOUT_REDIRECT_URL = '/start/' diff --git a/tienda_ilusion/don_confiao/templates/registration/login.html b/tienda_ilusion/tienda_ilusion/templates/registration/login.html similarity index 100% rename from tienda_ilusion/don_confiao/templates/registration/login.html rename to tienda_ilusion/tienda_ilusion/templates/registration/login.html diff --git a/tienda_ilusion/tienda_ilusion/templates/registration/profile.html b/tienda_ilusion/tienda_ilusion/templates/registration/profile.html new file mode 100644 index 0000000..e70c7fe --- /dev/null +++ b/tienda_ilusion/tienda_ilusion/templates/registration/profile.html @@ -0,0 +1,27 @@ + + + + Perfil de usuario + + + + +
+
+
+

Perfil de usuario

+

Nombre de usuario: {{ user.username }}

+

Email: {{ user.email }}

+
+ {% csrf_token %} + +
+
+
+
+ + diff --git a/tienda_ilusion/tienda_ilusion/templates/start.html b/tienda_ilusion/tienda_ilusion/templates/start.html new file mode 100644 index 0000000..4ebf3bd --- /dev/null +++ b/tienda_ilusion/tienda_ilusion/templates/start.html @@ -0,0 +1,22 @@ + + + + Bienvenido a la tienda la ilusión + + + +
+
+
+

Bienvenido a la tienda la ilusion

+ + Login +
+
+
+ + diff --git a/tienda_ilusion/tienda_ilusion/urls.py b/tienda_ilusion/tienda_ilusion/urls.py index 79562c1..213403f 100644 --- a/tienda_ilusion/tienda_ilusion/urls.py +++ b/tienda_ilusion/tienda_ilusion/urls.py @@ -16,11 +16,15 @@ Including another URLconf """ from django.contrib import admin from django.urls import include, path +from . import views app_name = "don_confiao" urlpatterns = [ path("don_confiao/", include("don_confiao.urls")), + path("accounts/", include("django.contrib.auth.urls")), + path('accounts/profile/', views.ProfileView.as_view(), name='profile'), + path('start/', views.StartView.as_view(), name='start'), path('admin/', admin.site.urls), ] From e6d2160d2e85197bc27ec273d2a9e64625e7c4e9 Mon Sep 17 00:00:00 2001 From: Mono Mono Date: Sat, 13 Dec 2025 16:31:20 -0500 Subject: [PATCH 3/6] #29 feat(Auth): add logout and profile. --- tienda_ilusion/tienda_ilusion/views.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 tienda_ilusion/tienda_ilusion/views.py diff --git a/tienda_ilusion/tienda_ilusion/views.py b/tienda_ilusion/tienda_ilusion/views.py new file mode 100644 index 0000000..ade2409 --- /dev/null +++ b/tienda_ilusion/tienda_ilusion/views.py @@ -0,0 +1,15 @@ +from django.views.generic import TemplateView +from django.contrib.auth.mixins import LoginRequiredMixin + + +class ProfileView(LoginRequiredMixin, TemplateView): + template_name = 'registration/profile.html' + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['user'] = self.request.user + return context + + +class StartView(TemplateView): + template_name = 'start.html' From f3d3681bc4f6e36ab508aa621ecca2f3be44d9ef Mon Sep 17 00:00:00 2001 From: Mono Mono Date: Sat, 13 Dec 2025 17:10:00 -0500 Subject: [PATCH 4/6] #29 fix(Tests): add auth to tests. --- .../don_confiao/tests/test_admin_code.py | 11 ++++++++--- tienda_ilusion/don_confiao/tests/test_api.py | 8 +++++++- .../tests/test_customers_from_tryton.py | 9 ++++++++- .../tests/test_exportar_ventas_para_tryton.py | 17 +++++++++++------ .../tests/test_jar_reconciliation.py | 11 ++++++++--- .../don_confiao/tests/test_payment_methods.py | 10 +++++++--- .../tests/test_products_from_tryton.py | 10 ++++++++-- .../tests/test_summary_view_purchase.py | 10 ++++++++-- 8 files changed, 65 insertions(+), 21 deletions(-) diff --git a/tienda_ilusion/don_confiao/tests/test_admin_code.py b/tienda_ilusion/don_confiao/tests/test_admin_code.py index 87194f0..debab0a 100644 --- a/tienda_ilusion/don_confiao/tests/test_admin_code.py +++ b/tienda_ilusion/don_confiao/tests/test_admin_code.py @@ -1,4 +1,5 @@ -from django.test import TestCase, Client +from django.contrib.auth.models import User +from django.test import TestCase from ..models import AdminCode @@ -7,14 +8,18 @@ import json class TestAdminCode(TestCase): def setUp(self): + username = 'nombre_usuario' + password = 'contraseña' + email = 'correo@example.com' + self.user = User.objects.create_user(username, email, password) + self.client.login(username=username, password=password) + self.valid_code = 'some valid code' admin_code = AdminCode() admin_code.value = self.valid_code admin_code.clean() admin_code.save() - self.client = Client() - def test_validate_code(self): url = '/don_confiao/api/admin_code/validate/' + self.valid_code response = self.client.get(url) diff --git a/tienda_ilusion/don_confiao/tests/test_api.py b/tienda_ilusion/don_confiao/tests/test_api.py index e9c59dc..06072ba 100644 --- a/tienda_ilusion/don_confiao/tests/test_api.py +++ b/tienda_ilusion/don_confiao/tests/test_api.py @@ -2,7 +2,7 @@ import json import csv import io -from django.urls import reverse +from django.contrib.auth.models import User from rest_framework import status from rest_framework.test import APITestCase from ..models import Sale, Product, Customer @@ -10,6 +10,12 @@ from ..models import Sale, Product, Customer class TestAPI(APITestCase): def setUp(self): + username = 'nombre_usuario' + password = 'contraseña' + email = 'correo@example.com' + self.user = User.objects.create_user(username, email, password) + self.client.login(username=username, password=password) + self.product = Product.objects.create( name='Panela', price=5000, diff --git a/tienda_ilusion/don_confiao/tests/test_customers_from_tryton.py b/tienda_ilusion/don_confiao/tests/test_customers_from_tryton.py index 3924f4d..5657467 100644 --- a/tienda_ilusion/don_confiao/tests/test_customers_from_tryton.py +++ b/tienda_ilusion/don_confiao/tests/test_customers_from_tryton.py @@ -1,12 +1,19 @@ import json from unittest.mock import patch -from django.test import Client, TestCase +from django.contrib.auth.models import User +from django.test import TestCase from ..models import Customer class TestCustomersFromTryton(TestCase): def setUp(self): + username = 'nombre_usuario' + password = 'contraseña' + email = 'correo@example.com' + self.user = User.objects.create_user(username, email, password) + self.client.login(username=username, password=password) + self.customer = Customer.objects.create( name='Calos', external_id=5 diff --git a/tienda_ilusion/don_confiao/tests/test_exportar_ventas_para_tryton.py b/tienda_ilusion/don_confiao/tests/test_exportar_ventas_para_tryton.py index 09765da..eabb4ad 100644 --- a/tienda_ilusion/don_confiao/tests/test_exportar_ventas_para_tryton.py +++ b/tienda_ilusion/don_confiao/tests/test_exportar_ventas_para_tryton.py @@ -2,13 +2,20 @@ import csv import json from unittest.mock import patch -from django.test import TestCase, Client -from django.urls import reverse +from django.contrib.auth.models import User +from django.test import TestCase from ..models import Sale, SaleLine, Product, Customer + class TestExportarVentasParaTryton(TestCase): def setUp(self): + username = 'nombre_usuario' + password = 'contraseña' + email = 'correo@example.com' + self.user = User.objects.create_user(username, email, password) + self.client.login(username=username, password=password) + self.product = Product.objects.create( name='Panela', price=5000, @@ -41,9 +48,8 @@ class TestExportarVentasParaTryton(TestCase): ) def test_exportar_ventas_para_tryton(self): - client = Client() url = '/don_confiao/exportar_ventas_para_tryton' - response = client.get(url) + response = self.client.get(url) self.assertEqual(response.status_code, 200) self.assertEqual(response['Content-Type'], 'text/csv') csv_content = response.content.decode('utf-8') @@ -82,12 +88,11 @@ class TestExportarVentasParaTryton(TestCase): @patch('sabatron_tryton_rpc_client.client.Client.call') @patch('sabatron_tryton_rpc_client.client.Client.connect') def test_send_sales_to_tryton(self, mock_connect, mock_call): - client = Client() external_id = '23423' url = '/don_confiao/api/enviar_ventas_a_tryton' mock_connect.return_value = None mock_call.return_value = [external_id] - response = client.post(url) + response = self.client.post(url) self.assertEqual(response.status_code, 200) content = json.loads(response.content.decode('utf-8')) diff --git a/tienda_ilusion/don_confiao/tests/test_jar_reconciliation.py b/tienda_ilusion/don_confiao/tests/test_jar_reconciliation.py index c7a97f2..e592f0b 100644 --- a/tienda_ilusion/don_confiao/tests/test_jar_reconciliation.py +++ b/tienda_ilusion/don_confiao/tests/test_jar_reconciliation.py @@ -1,4 +1,5 @@ -from django.test import TestCase, Client +from django.contrib.auth.models import User +from django.test import TestCase from django.core.exceptions import ValidationError from ..models import Sale, Product, SaleLine, Customer, ReconciliationJar @@ -7,12 +8,16 @@ import json class TestJarReconcliation(TestCase): def setUp(self): + username = 'nombre_usuario' + password = 'contraseña' + email = 'correo@example.com' + self.user = User.objects.create_user(username, email, password) + self.client.login(username=username, password=password) + customer = Customer() customer.name = 'Alejo Mono' customer.save() - self.client = Client() - purchase = Sale() purchase.customer = customer purchase.date = "2024-07-30" diff --git a/tienda_ilusion/don_confiao/tests/test_payment_methods.py b/tienda_ilusion/don_confiao/tests/test_payment_methods.py index 4fa504d..58f49cc 100644 --- a/tienda_ilusion/don_confiao/tests/test_payment_methods.py +++ b/tienda_ilusion/don_confiao/tests/test_payment_methods.py @@ -1,10 +1,14 @@ -from django.test import Client, TestCase +from django.contrib.auth.models import User +from django.test import TestCase -# from ..models import PaymentMethods class TestPaymentMethods(TestCase): def setUp(self): - self.client = Client() + username = 'nombre_usuario' + password = 'contraseña' + email = 'correo@example.com' + self.user = User.objects.create_user(username, email, password) + self.client.login(username=username, password=password) def test_keys_in_payment_methods_to_select(self): response = self.client.get( diff --git a/tienda_ilusion/don_confiao/tests/test_products_from_tryton.py b/tienda_ilusion/don_confiao/tests/test_products_from_tryton.py index 9b96193..3b80472 100644 --- a/tienda_ilusion/don_confiao/tests/test_products_from_tryton.py +++ b/tienda_ilusion/don_confiao/tests/test_products_from_tryton.py @@ -2,12 +2,18 @@ import json from decimal import Decimal from unittest.mock import patch -from django.test import Client, TestCase -from ..models import ProductCategory, Product +from django.contrib.auth.models import User +from django.test import TestCase +from ..models import Product class TestProductsFromTryton(TestCase): def setUp(self): + username = 'nombre_usuario' + password = 'contraseña' + email = 'correo@example.com' + self.user = User.objects.create_user(username, email, password) + self.client.login(username=username, password=password) self.product = Product.objects.create( name='Panela', price=5000, diff --git a/tienda_ilusion/don_confiao/tests/test_summary_view_purchase.py b/tienda_ilusion/don_confiao/tests/test_summary_view_purchase.py index 8def1b4..47156b2 100644 --- a/tienda_ilusion/don_confiao/tests/test_summary_view_purchase.py +++ b/tienda_ilusion/don_confiao/tests/test_summary_view_purchase.py @@ -1,14 +1,20 @@ -from django.test import TestCase, Client +from django.contrib.auth.models import User +from django.test import TestCase from ..models import Sale, Product, SaleLine, Customer class TestSummaryViewPurchase(TestCase): def setUp(self): + username = 'nombre_usuario' + password = 'contraseña' + email = 'correo@example.com' + self.user = User.objects.create_user(username, email, password) + self.client.login(username=username, password=password) + customer = Customer() customer.name = 'Alejo Mono' customer.save() - self.client = Client() purchase = Sale() purchase.customer = customer purchase.date = "2024-07-30" From fb3124246c16f87db7726a162079866a56997a13 Mon Sep 17 00:00:00 2001 From: Mono Mono Date: Sat, 13 Dec 2025 17:34:40 -0500 Subject: [PATCH 5/6] #29 refactor(Tests): extract to mixin class. --- tienda_ilusion/don_confiao/tests/test_admin_code.py | 10 +++------- tienda_ilusion/don_confiao/tests/test_api.py | 10 +++------- .../don_confiao/tests/test_customers_from_tryton.py | 10 +++------- .../tests/test_exportar_ventas_para_tryton.py | 10 +++------- .../don_confiao/tests/test_jar_reconciliation.py | 10 +++------- .../don_confiao/tests/test_payment_methods.py | 10 +++------- .../don_confiao/tests/test_products_from_tryton.py | 11 ++++------- .../don_confiao/tests/test_summary_view_purchase.py | 10 +++------- 8 files changed, 25 insertions(+), 56 deletions(-) diff --git a/tienda_ilusion/don_confiao/tests/test_admin_code.py b/tienda_ilusion/don_confiao/tests/test_admin_code.py index debab0a..10d1533 100644 --- a/tienda_ilusion/don_confiao/tests/test_admin_code.py +++ b/tienda_ilusion/don_confiao/tests/test_admin_code.py @@ -1,18 +1,14 @@ -from django.contrib.auth.models import User from django.test import TestCase from ..models import AdminCode +from .Mixins import LoginMixin import json -class TestAdminCode(TestCase): +class TestAdminCode(TestCase, LoginMixin): def setUp(self): - username = 'nombre_usuario' - password = 'contraseña' - email = 'correo@example.com' - self.user = User.objects.create_user(username, email, password) - self.client.login(username=username, password=password) + self.login() self.valid_code = 'some valid code' admin_code = AdminCode() diff --git a/tienda_ilusion/don_confiao/tests/test_api.py b/tienda_ilusion/don_confiao/tests/test_api.py index 06072ba..dcc6441 100644 --- a/tienda_ilusion/don_confiao/tests/test_api.py +++ b/tienda_ilusion/don_confiao/tests/test_api.py @@ -2,19 +2,15 @@ import json import csv import io -from django.contrib.auth.models import User from rest_framework import status from rest_framework.test import APITestCase from ..models import Sale, Product, Customer +from .Mixins import LoginMixin -class TestAPI(APITestCase): +class TestAPI(APITestCase, LoginMixin): def setUp(self): - username = 'nombre_usuario' - password = 'contraseña' - email = 'correo@example.com' - self.user = User.objects.create_user(username, email, password) - self.client.login(username=username, password=password) + self.login() self.product = Product.objects.create( name='Panela', diff --git a/tienda_ilusion/don_confiao/tests/test_customers_from_tryton.py b/tienda_ilusion/don_confiao/tests/test_customers_from_tryton.py index 5657467..6af2382 100644 --- a/tienda_ilusion/don_confiao/tests/test_customers_from_tryton.py +++ b/tienda_ilusion/don_confiao/tests/test_customers_from_tryton.py @@ -1,18 +1,14 @@ import json from unittest.mock import patch -from django.contrib.auth.models import User from django.test import TestCase from ..models import Customer +from .Mixins import LoginMixin -class TestCustomersFromTryton(TestCase): +class TestCustomersFromTryton(TestCase, LoginMixin): def setUp(self): - username = 'nombre_usuario' - password = 'contraseña' - email = 'correo@example.com' - self.user = User.objects.create_user(username, email, password) - self.client.login(username=username, password=password) + self.login() self.customer = Customer.objects.create( name='Calos', diff --git a/tienda_ilusion/don_confiao/tests/test_exportar_ventas_para_tryton.py b/tienda_ilusion/don_confiao/tests/test_exportar_ventas_para_tryton.py index eabb4ad..8ef8503 100644 --- a/tienda_ilusion/don_confiao/tests/test_exportar_ventas_para_tryton.py +++ b/tienda_ilusion/don_confiao/tests/test_exportar_ventas_para_tryton.py @@ -2,19 +2,15 @@ import csv import json from unittest.mock import patch -from django.contrib.auth.models import User from django.test import TestCase from ..models import Sale, SaleLine, Product, Customer +from .Mixins import LoginMixin -class TestExportarVentasParaTryton(TestCase): +class TestExportarVentasParaTryton(TestCase, LoginMixin): def setUp(self): - username = 'nombre_usuario' - password = 'contraseña' - email = 'correo@example.com' - self.user = User.objects.create_user(username, email, password) - self.client.login(username=username, password=password) + self.login() self.product = Product.objects.create( name='Panela', diff --git a/tienda_ilusion/don_confiao/tests/test_jar_reconciliation.py b/tienda_ilusion/don_confiao/tests/test_jar_reconciliation.py index e592f0b..7f1386c 100644 --- a/tienda_ilusion/don_confiao/tests/test_jar_reconciliation.py +++ b/tienda_ilusion/don_confiao/tests/test_jar_reconciliation.py @@ -1,18 +1,14 @@ -from django.contrib.auth.models import User from django.test import TestCase from django.core.exceptions import ValidationError from ..models import Sale, Product, SaleLine, Customer, ReconciliationJar +from .Mixins import LoginMixin import json -class TestJarReconcliation(TestCase): +class TestJarReconcliation(TestCase, LoginMixin): def setUp(self): - username = 'nombre_usuario' - password = 'contraseña' - email = 'correo@example.com' - self.user = User.objects.create_user(username, email, password) - self.client.login(username=username, password=password) + self.login() customer = Customer() customer.name = 'Alejo Mono' diff --git a/tienda_ilusion/don_confiao/tests/test_payment_methods.py b/tienda_ilusion/don_confiao/tests/test_payment_methods.py index 58f49cc..6d38a12 100644 --- a/tienda_ilusion/don_confiao/tests/test_payment_methods.py +++ b/tienda_ilusion/don_confiao/tests/test_payment_methods.py @@ -1,14 +1,10 @@ -from django.contrib.auth.models import User from django.test import TestCase +from .Mixins import LoginMixin -class TestPaymentMethods(TestCase): +class TestPaymentMethods(TestCase, LoginMixin): def setUp(self): - username = 'nombre_usuario' - password = 'contraseña' - email = 'correo@example.com' - self.user = User.objects.create_user(username, email, password) - self.client.login(username=username, password=password) + self.login() def test_keys_in_payment_methods_to_select(self): response = self.client.get( diff --git a/tienda_ilusion/don_confiao/tests/test_products_from_tryton.py b/tienda_ilusion/don_confiao/tests/test_products_from_tryton.py index 3b80472..52a80ab 100644 --- a/tienda_ilusion/don_confiao/tests/test_products_from_tryton.py +++ b/tienda_ilusion/don_confiao/tests/test_products_from_tryton.py @@ -2,18 +2,15 @@ import json from decimal import Decimal from unittest.mock import patch -from django.contrib.auth.models import User from django.test import TestCase from ..models import Product +from .Mixins import LoginMixin -class TestProductsFromTryton(TestCase): +class TestProductsFromTryton(TestCase, LoginMixin): def setUp(self): - username = 'nombre_usuario' - password = 'contraseña' - email = 'correo@example.com' - self.user = User.objects.create_user(username, email, password) - self.client.login(username=username, password=password) + self.login() + self.product = Product.objects.create( name='Panela', price=5000, diff --git a/tienda_ilusion/don_confiao/tests/test_summary_view_purchase.py b/tienda_ilusion/don_confiao/tests/test_summary_view_purchase.py index 47156b2..63e3cd6 100644 --- a/tienda_ilusion/don_confiao/tests/test_summary_view_purchase.py +++ b/tienda_ilusion/don_confiao/tests/test_summary_view_purchase.py @@ -1,15 +1,11 @@ -from django.contrib.auth.models import User from django.test import TestCase from ..models import Sale, Product, SaleLine, Customer +from .Mixins import LoginMixin -class TestSummaryViewPurchase(TestCase): +class TestSummaryViewPurchase(TestCase, LoginMixin): def setUp(self): - username = 'nombre_usuario' - password = 'contraseña' - email = 'correo@example.com' - self.user = User.objects.create_user(username, email, password) - self.client.login(username=username, password=password) + self.login() customer = Customer() customer.name = 'Alejo Mono' From fb4c82a94c93b4bcd2349b4ecf062ec2814cfdc3 Mon Sep 17 00:00:00 2001 From: Mono Mono Date: Sat, 13 Dec 2025 17:35:20 -0500 Subject: [PATCH 6/6] #29 refactor(Tests): extract to mixin class. --- tienda_ilusion/don_confiao/tests/Mixins.py | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 tienda_ilusion/don_confiao/tests/Mixins.py diff --git a/tienda_ilusion/don_confiao/tests/Mixins.py b/tienda_ilusion/don_confiao/tests/Mixins.py new file mode 100644 index 0000000..7957827 --- /dev/null +++ b/tienda_ilusion/don_confiao/tests/Mixins.py @@ -0,0 +1,10 @@ +from django.contrib.auth.models import User + + +class LoginMixin: + def login(self): + username = 'nombre_usuario' + password = 'contraseña' + email = 'correo@example.com' + self.user = User.objects.create_user(username, email, password) + self.client.login(username=username, password=password)