Skip to content

Commit

Permalink
test: integration tests for offer & payment views (#11)
Browse files Browse the repository at this point in the history
  • Loading branch information
DEENUU1 committed Feb 26, 2024
1 parent 47a1f4d commit 22b3728
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 123 deletions.
8 changes: 5 additions & 3 deletions offer/services/salary.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,11 @@ def return_min_max_salary(self):
- Dictionary containing "min" and "max" keys with corresponding salary values.
"""
salaries = self._repository.get_all()

min_salary = min(salary.salary_from for salary in salaries)
max_salary = max(salary.salary_to for salary in salaries)
try:
min_salary = min(salary.salary_from for salary in salaries)
max_salary = max(salary.salary_to for salary in salaries)
except ValueError:
return None

return {
"min": min_salary,
Expand Down
11 changes: 9 additions & 2 deletions repository/crud.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from typing import Any, Optional, List, Dict

from django.core.exceptions import FieldError
from rest_framework.exceptions import NotFound


Expand Down Expand Up @@ -40,9 +41,15 @@ def get_all(self, user=None) -> List[Optional[Any]]:
- List[Optional[Any]]: A list of objects.
"""
if user:
return self._model.objects.filter(user=user).order_by('-created_at')
try:
return self._model.objects.filter(user=user).order_by('-created_at')
except FieldError:
return self._model.objects.filter(user=user)
else:
return self._model.objects.all().order_by('-created_at')
try:
return self._model.objects.all().order_by('-created_at')
except FieldError:
return self._model.objects.all()

def get_by_id(self, _id: int, user=None) -> Optional[Any]:
"""
Expand Down
183 changes: 84 additions & 99 deletions tests/test_offer/test_views.py
Original file line number Diff line number Diff line change
@@ -1,99 +1,84 @@
# import pytest
# from rest_framework.test import APIRequestFactory
#
# from offer.models import WorkType, EmploymentType, Experience, Salary
# from offer.views import OfferListView, SalaryView, ExperienceListAPIView, EmploymentTypeListAPIView, \
# WorkTypeListAPIView, JobOfferRetrieveAPIView
# from tests.fixtures import user, job_offer, job_offer_with_company, company, job_offer_draft
#
# factory = APIRequestFactory()
#
#
# @pytest.mark.django_db
# def test_success_return_list_of_work_type():
# WorkType.objects.create(name='test_work_type_1')
# WorkType.objects.create(name='test_work_type_2')
#
# request = factory.get('/offer/work_type/')
# view = WorkTypeListAPIView.as_view()
# response = view(request)
# assert response.status_code == 200
# assert len(response.data) == 2
#
#
# @pytest.mark.django_db
# def test_success_return_list_of_employment_type():
# EmploymentType.objects.create(name='test_employment_type_1')
# EmploymentType.objects.create(name='test_employment_type_2')
#
# request = factory.get('/offer/employment_type/')
# view = EmploymentTypeListAPIView.as_view()
# response = view(request)
# assert response.status_code == 200
# assert len(response.data) == 2
#
#
# @pytest.mark.django_db
# def test_success_return_list_of_experience():
# Experience.objects.create(name='test_experience_1')
# Experience.objects.create(name='test_experience_2')
#
# request = factory.get('/offer/experience/')
# view = ExperienceListAPIView.as_view()
# response = view(request)
# assert response.status_code == 200
# assert len(response.data) == 2
#
#
# @pytest.mark.django_db
# def test_success_return_min_max_salary():
# Salary.objects.create(salary_from=1000, salary_to=2000)
# Salary.objects.create(salary_from=3000, salary_to=4000)
#
# request = factory.get('/offer/salary/')
# view = SalaryView.as_view()
# response = view(request)
#
# assert response.status_code == 200
# assert response.data['min'] == 1000
# assert response.data['max'] == 4000
#
#
# @pytest.mark.django_db
# def test_success_return_min_max_salary_empty():
# request = factory.get('/offer/salary/')
# view = SalaryView.as_view()
# response = view(request)
#
# assert response.status_code == 204
# assert response.data is None
#
#
# @pytest.mark.django_db
# def test_success_return_list_of_job_offers(user, job_offer, job_offer_with_company, company):
# request = factory.get('/offer/')
# view = OfferListView.as_view()
# response = view(request)
#
# assert response.status_code == 200
# assert len(response.data) == 4
#
#
# # @pytest.mark.django_db
# # def test_success_return_job_offer_by_slug(job_offer, user):
# # request = factory.get(f'/offer/offer/{job_offer.slug}/')
# # view = JobOfferRetrieveAPIView.as_view()
# # response = view(request, job_offer.slug)
# #
# # assert response.status_code == 200
# # assert response.data["id"] == job_offer.id
#
#
# # @pytest.mark.django_db
# # def test_error_return_job_offer_draft_status_by_slug(job_offer_draft, user):
# # request = factory.get(f'/offer/{job_offer_draft.slug}/')
# # view = JobOfferRetrieveAPIView.as_view()
# # response = view(request, job_offer_draft.slug)
# # # Should return 404 because JobOffer has status "DRAFT" which means
# # # that it's not allow to the public access
# # assert response.status_code == 404
import pytest
from rest_framework.test import APIRequestFactory

from offer.models import WorkType, EmploymentType, Experience, Salary
from offer.views import (
OfferListView,
SalaryView,
ExperienceListAPIView,
EmploymentTypeListAPIView,
WorkTypeListAPIView
)
from tests.fixtures import user, job_offer, job_offer_with_company, company

factory = APIRequestFactory()


@pytest.mark.django_db
def test_success_return_list_of_work_type():
WorkType.objects.create(name='test_work_type_1')
WorkType.objects.create(name='test_work_type_2')

request = factory.get('/offer/work_type/')
view = WorkTypeListAPIView.as_view()
response = view(request)
assert response.status_code == 200
assert len(response.data) == 2


@pytest.mark.django_db
def test_success_return_list_of_employment_type():
EmploymentType.objects.create(name='test_employment_type_1')
EmploymentType.objects.create(name='test_employment_type_2')

request = factory.get('/offer/employment_type/')
view = EmploymentTypeListAPIView.as_view()
response = view(request)
assert response.status_code == 200
assert len(response.data) == 2


@pytest.mark.django_db
def test_success_return_list_of_experience():
Experience.objects.create(name='test_experience_1')
Experience.objects.create(name='test_experience_2')

request = factory.get('/offer/experience/')
view = ExperienceListAPIView.as_view()
response = view(request)
assert response.status_code == 200
assert len(response.data) == 2


@pytest.mark.django_db
def test_success_return_min_max_salary():
Salary.objects.create(salary_from=1000, salary_to=2000, currency="PLN", schedule="MONTHLY")
Salary.objects.create(salary_from=3000, salary_to=4000, currency="PLN", schedule="MONTHLY")

request = factory.get('/offer/salary/')
view = SalaryView.as_view()
response = view(request)

assert response.status_code == 200
assert response.data['min'] == 1000.0
assert response.data['max'] == 4000.0


@pytest.mark.django_db
def test_success_return_min_max_salary_empty():
request = factory.get('/offer/salary/')
view = SalaryView.as_view()
response = view(request)

assert response.status_code == 200
assert response.data is None


@pytest.mark.django_db
def test_success_return_list_of_job_offers(user, job_offer, job_offer_with_company, company):
request = factory.get('/offer/')
view = OfferListView.as_view()
response = view(request)

assert response.status_code == 200
assert len(response.data) == 4
38 changes: 19 additions & 19 deletions tests/test_payment/test_views.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
# import pytest
# from rest_framework.test import APIRequestFactory
# from payment.views import SuccessView, CancelView
#
# factory = APIRequestFactory()
#
#
# @pytest.mark.django_db
# def test_success_return_success_view():
# request = factory.get("/payment/success")
# response = SuccessView.as_view()(request)
# assert response.status_code == 200
#
#
# @pytest.mark.django_db
# def test_success_return_cancel_view():
# request = factory.get("/payment/cancel")
# response = CancelView.as_view()(request)
# assert response.status_code == 200
import pytest
from rest_framework.test import APIRequestFactory
from payment.views import SuccessView, CancelView

factory = APIRequestFactory()


@pytest.mark.django_db
def test_success_return_success_view():
request = factory.get("/payment/success")
response = SuccessView.as_view()(request)
assert response.status_code == 200


@pytest.mark.django_db
def test_success_return_cancel_view():
request = factory.get("/payment/cancel")
response = CancelView.as_view()(request)
assert response.status_code == 200

0 comments on commit 22b3728

Please sign in to comment.