-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
🔀 Merge pull request #38 from snuhcs-course/test/backup-API-backend
Test/settings and symbol related api (backend)
- Loading branch information
Showing
3 changed files
with
166 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters