ya tojiki medone #7
@@ -3,6 +3,7 @@ from django_core.models.base import AbstractBaseModel
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.contrib.auth import get_user_model
|
||||
from core.apps.api.choices.ad_type import AdType, AdCategoryType
|
||||
from model_bakery import baker
|
||||
|
||||
|
||||
class AdModel(AbstractBaseModel):
|
||||
@@ -18,6 +19,10 @@ class AdModel(AbstractBaseModel):
|
||||
tags = models.ManyToManyField("api.Tags", verbose_name=_("Tags"))
|
||||
image = models.ImageField(verbose_name=_("Image"))
|
||||
|
||||
@classmethod
|
||||
def _baker(cls):
|
||||
return baker.make(cls)
|
||||
|
||||
def __str__(self):
|
||||
return str(self.pk)
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ from django.db import models
|
||||
from django_core.models.base import AbstractBaseModel
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from core.apps.api.choices import AdCategoryType
|
||||
from model_bakery import baker
|
||||
|
||||
|
||||
class Category(AbstractBaseModel):
|
||||
@@ -13,6 +14,10 @@ class Category(AbstractBaseModel):
|
||||
category_type = models.CharField(max_length=255, verbose_name=_('Category Type'), choices=AdCategoryType,
|
||||
default=AdCategoryType.PRODUCT)
|
||||
|
||||
@classmethod
|
||||
def _baker(cls):
|
||||
return baker.make(cls)
|
||||
|
||||
def __str__(self):
|
||||
return str(self.pk)
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
from .category import * # noqa
|
||||
from .ad import * # noqa
|
||||
|
||||
1
core/apps/api/tests/ad/__init__.py
Normal file
1
core/apps/api/tests/ad/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from .test_home_api import * # noqa
|
||||
58
core/apps/api/tests/ad/test_home_api.py
Normal file
58
core/apps/api/tests/ad/test_home_api.py
Normal file
@@ -0,0 +1,58 @@
|
||||
import pytest
|
||||
from django.urls import reverse
|
||||
from rest_framework.test import APIClient
|
||||
|
||||
from core.apps.api.models import AdModel
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def instance(db):
|
||||
return AdModel._baker()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def api_client(instance):
|
||||
client = APIClient()
|
||||
##client.force_authenticate(user=instance.user)
|
||||
return client, instance
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def data(api_client):
|
||||
client, instance = api_client
|
||||
return (
|
||||
{
|
||||
"list": reverse("home-ad-list"),
|
||||
"retrieve": reverse("home-ad-detail", kwargs={"pk": instance.pk}),
|
||||
"retrieve-not-found": reverse("home-ad-detail", kwargs={"pk": 1000}),
|
||||
},
|
||||
client,
|
||||
instance,
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_list(data):
|
||||
urls, client, _ = data
|
||||
response = client.get(urls["list"])
|
||||
data_resp = response.json()
|
||||
assert response.status_code == 200
|
||||
assert data_resp["status"] is True
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_retrieve(data):
|
||||
urls, client, _ = data
|
||||
response = client.get(urls["retrieve"])
|
||||
data_resp = response.json()
|
||||
assert response.status_code == 200
|
||||
assert data_resp["status"] is True
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_retrieve_not_found(data):
|
||||
urls, client, _ = data
|
||||
response = client.get(urls["retrieve-not-found"])
|
||||
data_resp = response.json()
|
||||
assert response.status_code == 404
|
||||
assert data_resp["status"] is False
|
||||
1
core/apps/api/tests/category/__init__.py
Normal file
1
core/apps/api/tests/category/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from .test_category import * # noqa
|
||||
88
core/apps/api/tests/category/test_category.py
Normal file
88
core/apps/api/tests/category/test_category.py
Normal file
@@ -0,0 +1,88 @@
|
||||
import pytest
|
||||
from django.urls import reverse
|
||||
from rest_framework.test import APIClient
|
||||
|
||||
from core.apps.api.models import Category
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def instance(db):
|
||||
return Category._baker()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def api_client(instance):
|
||||
client = APIClient()
|
||||
##client.force_authenticate(user=instance.user)
|
||||
return client, instance
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def data(api_client):
|
||||
client, instance = api_client
|
||||
return (
|
||||
{
|
||||
"list": reverse("category-list"),
|
||||
"retrieve": reverse("category-detail", kwargs={"pk": instance.pk}),
|
||||
"retrieve-not-found": reverse("category-detail", kwargs={"pk": 1000}),
|
||||
"list-home-ad": reverse("category-home-list"),
|
||||
"retrieve-home-ad": reverse("category-home-detail", kwargs={"pk": instance.pk}),
|
||||
"retrieve-home-ad-not-found": reverse("category-home-detail", kwargs={"pk": 1000}),
|
||||
},
|
||||
client,
|
||||
instance,
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_list(data):
|
||||
urls, client, _ = data
|
||||
response = client.get(urls["list"])
|
||||
data_resp = response.json()
|
||||
assert response.status_code == 200
|
||||
assert data_resp["status"] is True
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_retrieve(data):
|
||||
urls, client, _ = data
|
||||
response = client.get(urls["retrieve"])
|
||||
data_resp = response.json()
|
||||
assert response.status_code == 200
|
||||
assert data_resp["status"] is True
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_retrieve_not_found(data):
|
||||
urls, client, _ = data
|
||||
response = client.get(urls["retrieve-not-found"])
|
||||
data_resp = response.json()
|
||||
assert response.status_code == 404
|
||||
assert data_resp["status"] is False
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_category_home_list(data):
|
||||
urls, client, _ = data
|
||||
response = client.get(urls["list-home-ad"])
|
||||
data_resp = response.json()
|
||||
assert response.status_code == 200
|
||||
assert data_resp["status"] is True
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_category_home_retrieve(data):
|
||||
urls, client, _ = data
|
||||
response = client.get(urls["retrieve-home-ad"])
|
||||
data_resp = response.json()
|
||||
assert response.status_code == 200
|
||||
assert data_resp["status"] is True
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_category_home_retrieve_not_found(data):
|
||||
urls, client, _ = data
|
||||
response = client.get(urls["retrieve-home-ad-not-found"])
|
||||
data_resp = response.json()
|
||||
assert response.status_code == 404
|
||||
assert data_resp["status"] is False
|
||||
@@ -1,11 +1,11 @@
|
||||
from django.urls import include, path
|
||||
from rest_framework.routers import DefaultRouter
|
||||
|
||||
from core.apps.api.views import CategoryViewSet, SearchHistoryViewSet, HomeAdApiView, CategoryHomeApiViewSet
|
||||
from core.apps.api.views import CategoryHomeApiViewSet, CategoryViewSet, HomeAdApiView, SearchHistoryViewSet
|
||||
|
||||
router = DefaultRouter()
|
||||
router.register("category", CategoryViewSet, basename="category")
|
||||
router.register("category-home-api", CategoryHomeApiViewSet, basename="category-home-api")
|
||||
router.register("category-home", CategoryHomeApiViewSet, basename="category-home")
|
||||
router.register("search-history", SearchHistoryViewSet, basename="search-history")
|
||||
router.register("home-ad", HomeAdApiView, basename="home-ad")
|
||||
urlpatterns = [path("", include(router.urls))]
|
||||
|
||||
Reference in New Issue
Block a user