Compare commits
3 Commits
bdc2fbe79b
...
f619856e41
| Author | SHA1 | Date | |
|---|---|---|---|
| f619856e41 | |||
| a08c6ad800 | |||
| f04130d769 |
@@ -2,12 +2,16 @@ from django.db import models
|
|||||||
from django_core.models.base import AbstractBaseModel
|
from django_core.models.base import AbstractBaseModel
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
|
from model_bakery import baker
|
||||||
|
|
||||||
class SearchHistory(AbstractBaseModel):
|
class SearchHistory(AbstractBaseModel):
|
||||||
value = models.CharField(verbose_name=_('Search History'), max_length=255)
|
value = models.CharField(verbose_name=_('Search History'), max_length=255)
|
||||||
user = models.ForeignKey(get_user_model(), verbose_name=_('User'), on_delete=models.CASCADE)
|
user = models.ForeignKey(get_user_model(), verbose_name=_('User'), on_delete=models.CASCADE)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _baker(cls):
|
||||||
|
return baker.make(cls)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return str(self.pk)
|
return str(self.pk)
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ from django_core.models.base import AbstractBaseModel
|
|||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from core.apps.api.choices.ad_type import AdType, AdCategoryType
|
from core.apps.api.choices.ad_type import AdType, AdCategoryType
|
||||||
|
from model_bakery import baker
|
||||||
|
|
||||||
|
|
||||||
class AdModel(AbstractBaseModel):
|
class AdModel(AbstractBaseModel):
|
||||||
@@ -18,6 +19,10 @@ class AdModel(AbstractBaseModel):
|
|||||||
tags = models.ManyToManyField("api.Tags", verbose_name=_("Tags"))
|
tags = models.ManyToManyField("api.Tags", verbose_name=_("Tags"))
|
||||||
image = models.ImageField(verbose_name=_("Image"))
|
image = models.ImageField(verbose_name=_("Image"))
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _baker(cls):
|
||||||
|
return baker.make(cls)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return str(self.pk)
|
return str(self.pk)
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ from django.db import models
|
|||||||
from django_core.models.base import AbstractBaseModel
|
from django_core.models.base import AbstractBaseModel
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from core.apps.api.choices import AdCategoryType
|
from core.apps.api.choices import AdCategoryType
|
||||||
|
from model_bakery import baker
|
||||||
|
|
||||||
|
|
||||||
class Category(AbstractBaseModel):
|
class Category(AbstractBaseModel):
|
||||||
@@ -13,6 +14,10 @@ class Category(AbstractBaseModel):
|
|||||||
category_type = models.CharField(max_length=255, verbose_name=_('Category Type'), choices=AdCategoryType,
|
category_type = models.CharField(max_length=255, verbose_name=_('Category Type'), choices=AdCategoryType,
|
||||||
default=AdCategoryType.PRODUCT)
|
default=AdCategoryType.PRODUCT)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _baker(cls):
|
||||||
|
return baker.make(cls)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return str(self.pk)
|
return str(self.pk)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
from .category import * # noqa
|
||||||
|
from .ad import * # noqa
|
||||||
|
from .search 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-category-home": reverse("category-home-list"),
|
||||||
|
"retrieve-category-home": reverse("category-home-detail", kwargs={"pk": instance.pk}),
|
||||||
|
"retrieve-category-home-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-category-home"])
|
||||||
|
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-category-home"])
|
||||||
|
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-category-home-not-found"])
|
||||||
|
data_resp = response.json()
|
||||||
|
assert response.status_code == 404
|
||||||
|
assert data_resp["status"] is False
|
||||||
1
core/apps/api/tests/search/__init__.py
Normal file
1
core/apps/api/tests/search/__init__.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
from .test_search_history import * # noqa
|
||||||
56
core/apps/api/tests/search/test_search_history.py
Normal file
56
core/apps/api/tests/search/test_search_history.py
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
import pytest
|
||||||
|
from django.urls import reverse
|
||||||
|
from rest_framework.test import APIClient
|
||||||
|
|
||||||
|
from core.apps.accounts.models import SearchHistory
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def instance(db):
|
||||||
|
return SearchHistory._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("search-history-list"),
|
||||||
|
"retrieve": reverse("search-history-detail", kwargs={"pk": instance.pk}),
|
||||||
|
"retrieve-not-found": reverse("search-history-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_create(data):
|
||||||
|
urls, client, _ = data
|
||||||
|
response = client.post(urls["list"], data={"value": "test-text"})
|
||||||
|
data_resp = response.json()
|
||||||
|
assert response.status_code == 201
|
||||||
|
assert data_resp["status"] is True
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_destroy(data):
|
||||||
|
urls, client, _ = data
|
||||||
|
response = client.delete(urls["retrieve"])
|
||||||
|
assert response.status_code == 204
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
from django.urls import include, path
|
from django.urls import include, path
|
||||||
from rest_framework.routers import DefaultRouter
|
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 = DefaultRouter()
|
||||||
router.register("category", CategoryViewSet, basename="category")
|
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("search-history", SearchHistoryViewSet, basename="search-history")
|
||||||
router.register("home-ad", HomeAdApiView, basename="home-ad")
|
router.register("home-ad", HomeAdApiView, basename="home-ad")
|
||||||
urlpatterns = [path("", include(router.urls))]
|
urlpatterns = [path("", include(router.urls))]
|
||||||
|
|||||||
Reference in New Issue
Block a user