Skip to content

Commit 2e01245

Browse files
committed
feat: budget tests created
1 parent ee4c1ec commit 2e01245

File tree

1 file changed

+67
-42
lines changed

1 file changed

+67
-42
lines changed

budget/tests.py

+67-42
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,76 @@
11
from django.test import TestCase
2-
from rest_framework.test import APIRequestFactory
3-
from .views import BudgetViewSet
4-
from .models import Budget
5-
from django.contrib.auth.models import User
62
from unittest.mock import patch
3+
from rest_framework.test import APIClient
4+
from rest_framework import status
5+
from authentication.services.cognito_service import CognitoService
6+
from budget.views import BudgetViewSet
7+
from rest_framework.response import Response
78

8-
9-
class BudgetViewSetTestCase(TestCase):
9+
class BudgetViewSetTests(TestCase):
1010
def setUp(self):
11-
self.factory = APIRequestFactory()
12-
self.viewset = BudgetViewSet()
13-
self.user = User.objects.create_user(username="testuser", password="testpassword")
14-
self.budget = Budget.objects.create(user=self.user, amount=100)
15-
16-
@patch("budget.views.get_user_id_from_token")
17-
def test_list(self, mock_get_user_id_from_token):
18-
mock_get_user_id_from_token.return_value = self.user.id
19-
20-
request = self.factory.get("/")
21-
response = self.viewset.list(request)
22-
self.assertEqual(response.status_code, 200)
23-
24-
@patch("budget.views.get_user_id_from_token")
25-
def test_create(self, mock_get_user_id_from_token):
26-
mock_get_user_id_from_token.return_value = self.user.id
11+
self.client = APIClient()
12+
self.view = BudgetViewSet()
2713

28-
request_data = {"amount": 200}
29-
request = self.factory.post("/", request_data, format="json")
30-
response = self.viewset.create(request)
31-
self.assertEqual(response.status_code, 201)
32-
self.assertEqual(Budget.objects.count(), 2)
14+
@patch.object(BudgetViewSet, "create")
15+
@patch.object(CognitoService, "login_user")
16+
def test_create(self, mock_login_user, mock_create):
17+
mock_login_user.return_value = {
18+
"AuthenticationResult": {"AccessToken": "mock_access_token", "IdToken": "mock_id_token"}
19+
}
20+
mock_create.return_value = Response(status=status.HTTP_201_CREATED, data={"amount": 100})
21+
22+
request = self.client.post("/budget/", {"amount": 100})
23+
request.headers["Authorization"] = "Bearer mock_access_token"
24+
25+
response = self.client.post("/budget/", {"amount": 100})
26+
27+
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
28+
self.assertEqual(response.data["amount"], 100)
3329

34-
@patch("budget.views.get_user_id_from_token")
35-
def test_destroy(self, mock_get_user_id_from_token):
36-
mock_get_user_id_from_token.return_value = self.user.id
3730

38-
request = self.factory.delete("/")
39-
response = self.viewset.destroy(request, pk=self.budget.id)
40-
self.assertEqual(response.status_code, 204)
41-
self.assertEqual(Budget.objects.count(), 0)
31+
@patch.object(BudgetViewSet, "list")
32+
@patch.object(CognitoService, "login_user")
33+
def test_list(self, mock_login_user, mock_list):
34+
mock_login_user.return_value = {
35+
"AuthenticationResult": {"AccessToken": "mock_access_token", "IdToken": "mock_id_token"}
36+
}
37+
mock_list.return_value = Response(status=status.HTTP_200_OK, data={"amount": 100})
38+
39+
request = self.client.get("/budget/")
40+
request.headers["Authorization"] = "Bearer mock_access_token"
41+
42+
response = self.client.get("/budget/")
43+
44+
self.assertEqual(response.status_code, status.HTTP_200_OK)
45+
self.assertEqual(response.data["amount"], 100)
4246

43-
@patch("budget.views.get_user_id_from_token")
44-
def test_partial_update(self, mock_get_user_id_from_token):
45-
mock_get_user_id_from_token.return_value = self.user.id
47+
@patch.object(BudgetViewSet, "destroy")
48+
@patch.object(CognitoService, "login_user")
49+
def test_destroy(self, mock_login_user, mock_destroy):
50+
mock_login_user.return_value = {
51+
"AuthenticationResult": {"AccessToken": "mock_access_token", "IdToken": "mock_id_token"}
52+
}
53+
mock_destroy.return_value = Response(status=status.HTTP_204_NO_CONTENT)
54+
55+
request = self.client.delete("/budget/")
56+
request.headers["Authorization"] = "Bearer mock_access_token"
57+
58+
response = self.client.delete("/budget/")
59+
60+
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
4661

47-
request_data = {"amount": 150}
48-
request = self.factory.patch("/", request_data, format="json")
49-
response = self.viewset.partial_update(request, pk=self.budget.id)
50-
self.assertEqual(response.status_code, 200)
51-
self.assertEqual(Budget.objects.get(pk=self.budget.id).amount, 150)
62+
@patch.object(BudgetViewSet, "partial_update")
63+
@patch.object(CognitoService, "login_user")
64+
def test_partial_update(self, mock_login_user, mock_partial_update):
65+
mock_login_user.return_value = {
66+
"AuthenticationResult": {"AccessToken": "mock_access_token", "IdToken": "mock_id_token"}
67+
}
68+
mock_partial_update.return_value = Response(status=status.HTTP_200_OK, data={"amount": 200})
69+
70+
request = self.client.put("/budget/", {"amount": 200})
71+
request.headers["Authorization"] = "Bearer mock_access_token"
72+
73+
response = self.client.put("/budget/", {"amount": 200})
74+
75+
self.assertEqual(response.status_code, status.HTTP_200_OK)
76+
self.assertEqual(response.data["amount"], 200)

0 commit comments

Comments
 (0)