Skip to content

Commit

Permalink
🔀 Merge pull request #38 from snuhcs-course/test/backup-API-backend
Browse files Browse the repository at this point in the history
Test/settings and symbol related api (backend)
  • Loading branch information
yjeong-k authored Nov 11, 2023
2 parents 179e466 + c5aa889 commit 750b322
Show file tree
Hide file tree
Showing 3 changed files with 166 additions and 3 deletions.
103 changes: 102 additions & 1 deletion backend/entry/tests.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,104 @@
from django.core.files.uploadedfile import SimpleUploadedFile
from django.test import TestCase
from rest_framework import status

# Create your tests here.
from entry.models import Symbol
from user.models import User


class SymbolTest(TestCase):

def setUp(self):
self.user = User.objects.create_user(
email='[email protected]',
password='test_password',
nickname='test_nickname'
)
self.tokens = self.login_and_get_tokens()
self.access_token = self.tokens.get('access')
self.refresh_token = self.tokens.get('refresh')

Symbol.objects.create(id=501, text="test1", category=1, created_by=self.user)
Symbol.objects.create(id=502, text="test2", category=2, created_by=self.user)
Symbol.objects.create(id=503, text="test3", category=3, created_by=self.user)

def login_and_get_tokens(self):
data = {
'email': '[email protected]',
'password': 'test_password',
}
response = self.client.post('/user/login/', data)
if response.status_code == status.HTTP_200_OK:
tokens = response.json()
return tokens
return None

def test_favorite_backup_success(self):
headers = {
'HTTP_AUTHORIZATION': f'Bearer {self.access_token}'
}
# Add some favorites to the user's list
response = self.client.post('/symbol/favorite/backup/?id=501,502,503', **headers)
self.assertEqual(response.status_code, status.HTTP_200_OK)

def test_get_favorite_symbols_success(self):
headers = {
'HTTP_AUTHORIZATION': f'Bearer {self.access_token}'
}
expected_response = {
'id': 501
}
# Add favorite symbol to check
response = self.client.post('/symbol/favorite/backup/?id=501', **headers)

response = self.client.get('/symbol/favorite/backup/', **headers)
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = response.json()
self.assertEqual(data.get('results')[0], expected_response)

def test_enable_my_symbols_success(self):
headers = {
'HTTP_AUTHORIZATION': f'Bearer {self.access_token}'
}
# Enable user-created symbols
response = self.client.post('/symbol/enable/?id=501', **headers)
self.assertEqual(response.status_code, status.HTTP_200_OK)

def test_enable_my_symbols_fail_no_such_symbol(self):
headers = {
'HTTP_AUTHORIZATION': f'Bearer {self.access_token}'
}
# Enable user-created symbols
response = self.client.post('/symbol/enable/?id=505', **headers)
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)

def test_get_my_symbols_success(self):
headers = {
'HTTP_AUTHORIZATION': f'Bearer {self.access_token}'
}
# Get all of the user-created symbols
self.client.post('/symbol/enable/?id=501', **headers) # since ONLY enabled symbols can be retrieved
response = self.client.get('/symbol/', **headers)
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = response.json()
self.assertEqual(len(data.get('my_symbols')), 1) # since only one symbol is enabled

def test_get_my_specific_symbol_success(self):
headers = {
'HTTP_AUTHORIZATION': f'Bearer {self.access_token}'
}
# Get all of the user-created symbols
self.client.post('/symbol/enable/?id=501', **headers) # since ONLY enabled symbols can be retrieved
response = self.client.get('/symbol/501/', **headers)
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = response.json()
self.assertIsNotNone(data.get('my_symbol'))

def test_get_my_specific_symbol_fail_invalid_symbol(self):
headers = {
'HTTP_AUTHORIZATION': f'Bearer {self.access_token}'
}
# Get all of the user-created symbols
response = self.client.get('/symbol/501/', **headers)
# Since symbol 501 is not valid yet
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
65 changes: 64 additions & 1 deletion backend/setup/tests.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,66 @@
from django.test import TestCase
from rest_framework import status

from user.models import User


class SettingsTest(TestCase):

def setUp(self):
self.user = User.objects.create_user(
email='[email protected]',
password='test_password',
nickname='test_nickname'
)
self.tokens = self.login_and_get_tokens()
self.access_token = self.tokens.get('access')
self.refresh_token = self.tokens.get('refresh')

def login_and_get_tokens(self):
data = {
'email': '[email protected]',
'password': 'test_password',
}
response = self.client.post('/user/login/', data)
if response.status_code == status.HTTP_200_OK:
tokens = response.json()
return tokens
return None

def test_settings_backup_success(self):
headers = {
'HTTP_AUTHORIZATION': f'Bearer {self.access_token}'
}
data = {
'display_mode': 0,
'default_menu': 1
}
# when attempting backup for the first time
response = self.client.post('/setting/backup/', data, **headers)
self.assertEqual(response.status_code, status.HTTP_200_OK)

# when attempting backup repetitively
data = {
'display_mode': 1,
'default_menu': 0
}
response = self.client.post('/setting/backup/', data, **headers)
self.assertEqual(response.status_code, status.HTTP_200_OK)

def test_get_settings_success(self):
headers = {
'HTTP_AUTHORIZATION': f'Bearer {self.access_token}'
}
response = self.client.get('/setting/backup/', **headers)
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = response.json()
self.assertEqual(data['display_mode'], 0) # 0 is the default value
self.assertEqual(data['default_menu'], 0) # 0 is the default value








# Create your tests here.
1 change: 0 additions & 1 deletion backend/user/test_views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from django.test import TestCase
from rest_framework import status
from rest_framework.utils import json

from user.models import User, EmailVerification

Expand Down

0 comments on commit 750b322

Please sign in to comment.