2018-05-01 17:12:51 +02:00
|
|
|
import json
|
|
|
|
|
2021-01-20 16:47:00 +01:00
|
|
|
from flask import Flask
|
|
|
|
|
2021-11-12 12:33:25 +01:00
|
|
|
from fittrackee import db
|
|
|
|
from fittrackee.users.models import User, UserSportPreference
|
2021-01-10 11:16:43 +01:00
|
|
|
from fittrackee.workouts.models import Sport, Workout
|
2021-01-02 19:28:03 +01:00
|
|
|
|
2021-02-20 23:20:20 +01:00
|
|
|
from ..api_test_case import ApiTestCaseMixin
|
|
|
|
|
2018-05-13 18:36:31 +02:00
|
|
|
expected_sport_1_cycling_result = {
|
|
|
|
'id': 1,
|
|
|
|
'label': 'Cycling',
|
2019-09-22 23:03:56 +02:00
|
|
|
'is_active': True,
|
2021-11-12 12:33:25 +01:00
|
|
|
'is_active_for_user': True,
|
|
|
|
'color': None,
|
|
|
|
'stopped_speed_threshold': 1,
|
2018-05-13 18:36:31 +02:00
|
|
|
}
|
2019-09-23 14:09:26 +02:00
|
|
|
expected_sport_1_cycling_admin_result = expected_sport_1_cycling_result.copy()
|
2021-01-10 11:16:43 +01:00
|
|
|
expected_sport_1_cycling_admin_result['has_workouts'] = False
|
2018-05-01 17:12:51 +02:00
|
|
|
|
2018-05-13 18:36:31 +02:00
|
|
|
expected_sport_2_running_result = {
|
|
|
|
'id': 2,
|
|
|
|
'label': 'Running',
|
2019-09-22 23:03:56 +02:00
|
|
|
'is_active': True,
|
2021-11-12 12:33:25 +01:00
|
|
|
'is_active_for_user': True,
|
|
|
|
'color': None,
|
|
|
|
'stopped_speed_threshold': 0.1,
|
2018-05-13 18:36:31 +02:00
|
|
|
}
|
2019-09-23 14:09:26 +02:00
|
|
|
expected_sport_2_running_admin_result = expected_sport_2_running_result.copy()
|
2021-01-10 11:16:43 +01:00
|
|
|
expected_sport_2_running_admin_result['has_workouts'] = False
|
2019-09-23 14:09:26 +02:00
|
|
|
|
|
|
|
expected_sport_1_cycling_inactive_result = {
|
|
|
|
'id': 1,
|
|
|
|
'label': 'Cycling',
|
|
|
|
'is_active': False,
|
2021-11-12 12:33:25 +01:00
|
|
|
'is_active_for_user': False,
|
|
|
|
'color': None,
|
|
|
|
'stopped_speed_threshold': 1,
|
2019-09-23 14:09:26 +02:00
|
|
|
}
|
|
|
|
expected_sport_1_cycling_inactive_admin_result = (
|
|
|
|
expected_sport_1_cycling_inactive_result.copy()
|
|
|
|
)
|
2021-01-10 11:16:43 +01:00
|
|
|
expected_sport_1_cycling_inactive_admin_result['has_workouts'] = False
|
2018-05-01 17:12:51 +02:00
|
|
|
|
|
|
|
|
2021-02-20 23:20:20 +01:00
|
|
|
class TestGetSports(ApiTestCaseMixin):
|
2020-05-10 15:55:56 +02:00
|
|
|
def test_it_gets_all_sports(
|
2021-01-02 19:28:03 +01:00
|
|
|
self,
|
|
|
|
app: Flask,
|
|
|
|
user_1: User,
|
|
|
|
sport_1_cycling: Sport,
|
|
|
|
sport_2_running: Sport,
|
|
|
|
) -> None:
|
2021-02-20 23:20:20 +01:00
|
|
|
client, auth_token = self.get_test_client_and_auth_token(app)
|
2020-05-10 15:55:56 +02:00
|
|
|
|
|
|
|
response = client.get(
|
|
|
|
'/api/sports',
|
2021-02-20 23:20:20 +01:00
|
|
|
headers=dict(Authorization=f'Bearer {auth_token}'),
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
data = json.loads(response.data.decode())
|
|
|
|
assert response.status_code == 200
|
|
|
|
assert 'success' in data['status']
|
|
|
|
assert len(data['data']['sports']) == 2
|
|
|
|
assert data['data']['sports'][0] == expected_sport_1_cycling_result
|
|
|
|
assert data['data']['sports'][1] == expected_sport_2_running_result
|
|
|
|
|
|
|
|
def test_it_gets_all_sports_with_inactive_one(
|
2021-01-02 19:28:03 +01:00
|
|
|
self,
|
|
|
|
app: Flask,
|
|
|
|
user_1: User,
|
|
|
|
sport_1_cycling_inactive: Sport,
|
|
|
|
sport_2_running: Sport,
|
|
|
|
) -> None:
|
2021-02-20 23:20:20 +01:00
|
|
|
client, auth_token = self.get_test_client_and_auth_token(app)
|
2020-05-10 15:55:56 +02:00
|
|
|
|
|
|
|
response = client.get(
|
|
|
|
'/api/sports',
|
2021-02-20 23:20:20 +01:00
|
|
|
headers=dict(Authorization=f'Bearer {auth_token}'),
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
data = json.loads(response.data.decode())
|
|
|
|
assert response.status_code == 200
|
|
|
|
assert 'success' in data['status']
|
|
|
|
assert len(data['data']['sports']) == 2
|
|
|
|
assert (
|
|
|
|
data['data']['sports'][0]
|
|
|
|
== expected_sport_1_cycling_inactive_result
|
|
|
|
)
|
|
|
|
assert data['data']['sports'][1] == expected_sport_2_running_result
|
|
|
|
|
|
|
|
def test_it_gets_all_sports_with_admin_rights(
|
2021-01-02 19:28:03 +01:00
|
|
|
self,
|
|
|
|
app: Flask,
|
|
|
|
user_1_admin: User,
|
|
|
|
sport_1_cycling_inactive: Sport,
|
|
|
|
sport_2_running: Sport,
|
|
|
|
) -> None:
|
2021-02-20 23:20:20 +01:00
|
|
|
client, auth_token = self.get_test_client_and_auth_token(
|
|
|
|
app, as_admin=True
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
response = client.get(
|
|
|
|
'/api/sports',
|
2021-02-20 23:20:20 +01:00
|
|
|
headers=dict(Authorization=f'Bearer {auth_token}'),
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
data = json.loads(response.data.decode())
|
|
|
|
assert response.status_code == 200
|
|
|
|
assert 'success' in data['status']
|
|
|
|
assert len(data['data']['sports']) == 2
|
|
|
|
assert (
|
|
|
|
data['data']['sports'][0]
|
|
|
|
== expected_sport_1_cycling_inactive_admin_result
|
|
|
|
)
|
|
|
|
assert (
|
|
|
|
data['data']['sports'][1] == expected_sport_2_running_admin_result
|
|
|
|
)
|
|
|
|
|
2021-11-12 12:33:25 +01:00
|
|
|
def test_it_gets_sports_with_auth_user_preferences(
|
|
|
|
self,
|
|
|
|
app: Flask,
|
|
|
|
user_1_admin: User,
|
|
|
|
sport_1_cycling: Sport,
|
|
|
|
sport_2_running: Sport,
|
|
|
|
user_admin_sport_1_preference: UserSportPreference,
|
|
|
|
) -> None:
|
|
|
|
user_admin_sport_1_preference.color = '#000000'
|
|
|
|
user_admin_sport_1_preference.stopped_speed_threshold = 0.5
|
|
|
|
user_admin_sport_1_preference.is_active = False
|
|
|
|
db.session.commit()
|
|
|
|
|
|
|
|
client, auth_token = self.get_test_client_and_auth_token(
|
|
|
|
app, as_admin=True
|
|
|
|
)
|
|
|
|
|
|
|
|
response = client.get(
|
|
|
|
'/api/sports',
|
|
|
|
headers=dict(Authorization=f'Bearer {auth_token}'),
|
|
|
|
)
|
|
|
|
|
|
|
|
data = json.loads(response.data.decode())
|
|
|
|
assert response.status_code == 200
|
|
|
|
assert 'success' in data['status']
|
|
|
|
assert len(data['data']['sports']) == 2
|
|
|
|
assert data['data']['sports'][0]['color'] == '#000000'
|
|
|
|
assert data['data']['sports'][0]['stopped_speed_threshold'] == 0.5
|
|
|
|
assert data['data']['sports'][0]['is_active_for_user'] is False
|
|
|
|
assert (
|
|
|
|
data['data']['sports'][1] == expected_sport_2_running_admin_result
|
|
|
|
)
|
|
|
|
|
2020-05-10 15:55:56 +02:00
|
|
|
|
2021-02-20 23:20:20 +01:00
|
|
|
class TestGetSport(ApiTestCaseMixin):
|
2021-01-02 19:28:03 +01:00
|
|
|
def test_it_gets_a_sport(
|
|
|
|
self, app: Flask, user_1: User, sport_1_cycling: Sport
|
|
|
|
) -> None:
|
2021-02-20 23:20:20 +01:00
|
|
|
client, auth_token = self.get_test_client_and_auth_token(app)
|
2020-05-10 15:55:56 +02:00
|
|
|
|
|
|
|
response = client.get(
|
|
|
|
'/api/sports/1',
|
2021-02-20 23:20:20 +01:00
|
|
|
headers=dict(Authorization=f'Bearer {auth_token}'),
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
data = json.loads(response.data.decode())
|
|
|
|
assert response.status_code == 200
|
|
|
|
assert 'success' in data['status']
|
|
|
|
assert len(data['data']['sports']) == 1
|
|
|
|
assert data['data']['sports'][0] == expected_sport_1_cycling_result
|
|
|
|
|
2021-11-12 12:33:25 +01:00
|
|
|
def test_it_gets_a_sport_with_preferences(
|
|
|
|
self,
|
|
|
|
app: Flask,
|
|
|
|
user_1: User,
|
|
|
|
sport_1_cycling: Sport,
|
|
|
|
user_sport_1_preference: UserSportPreference,
|
|
|
|
) -> None:
|
|
|
|
client, auth_token = self.get_test_client_and_auth_token(app)
|
|
|
|
|
|
|
|
response = client.get(
|
|
|
|
'/api/sports/1',
|
|
|
|
headers=dict(Authorization=f'Bearer {auth_token}'),
|
|
|
|
)
|
|
|
|
|
|
|
|
data = json.loads(response.data.decode())
|
|
|
|
assert response.status_code == 200
|
|
|
|
assert 'success' in data['status']
|
|
|
|
assert len(data['data']['sports']) == 1
|
|
|
|
assert data['data']['sports'][0] == expected_sport_1_cycling_result
|
|
|
|
|
2021-01-02 19:28:03 +01:00
|
|
|
def test_it_returns_404_if_sport_does_not_exist(
|
|
|
|
self, app: Flask, user_1: User
|
|
|
|
) -> None:
|
2021-02-20 23:20:20 +01:00
|
|
|
client, auth_token = self.get_test_client_and_auth_token(app)
|
2020-05-10 15:55:56 +02:00
|
|
|
|
|
|
|
response = client.get(
|
|
|
|
'/api/sports/1',
|
2021-02-20 23:20:20 +01:00
|
|
|
headers=dict(Authorization=f'Bearer {auth_token}'),
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
data = json.loads(response.data.decode())
|
|
|
|
assert response.status_code == 404
|
|
|
|
assert 'not found' in data['status']
|
|
|
|
assert len(data['data']['sports']) == 0
|
|
|
|
|
|
|
|
def test_it_gets_a_inactive_sport(
|
2021-01-02 19:28:03 +01:00
|
|
|
self, app: Flask, user_1: User, sport_1_cycling_inactive: Sport
|
|
|
|
) -> None:
|
2021-02-20 23:20:20 +01:00
|
|
|
client, auth_token = self.get_test_client_and_auth_token(app)
|
|
|
|
|
2020-05-10 15:55:56 +02:00
|
|
|
response = client.get(
|
|
|
|
'/api/sports/1',
|
2021-02-20 23:20:20 +01:00
|
|
|
headers=dict(Authorization=f'Bearer {auth_token}'),
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
|
|
|
|
2021-02-20 23:20:20 +01:00
|
|
|
data = json.loads(response.data.decode())
|
2020-05-10 15:55:56 +02:00
|
|
|
assert response.status_code == 200
|
|
|
|
assert 'success' in data['status']
|
|
|
|
assert len(data['data']['sports']) == 1
|
|
|
|
assert (
|
|
|
|
data['data']['sports'][0]
|
|
|
|
== expected_sport_1_cycling_inactive_result
|
|
|
|
)
|
|
|
|
|
|
|
|
def test_it_get_an_inactive_sport_with_admin_rights(
|
2021-01-02 19:28:03 +01:00
|
|
|
self, app: Flask, user_1_admin: User, sport_1_cycling_inactive: Sport
|
|
|
|
) -> None:
|
2021-02-20 23:20:20 +01:00
|
|
|
client, auth_token = self.get_test_client_and_auth_token(
|
|
|
|
app, as_admin=True
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
2021-02-20 23:20:20 +01:00
|
|
|
|
2020-05-10 15:55:56 +02:00
|
|
|
response = client.get(
|
|
|
|
'/api/sports/1',
|
2021-02-20 23:20:20 +01:00
|
|
|
headers=dict(Authorization=f'Bearer {auth_token}'),
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
|
|
|
|
2021-02-20 23:20:20 +01:00
|
|
|
data = json.loads(response.data.decode())
|
2020-05-10 15:55:56 +02:00
|
|
|
assert response.status_code == 200
|
|
|
|
assert 'success' in data['status']
|
|
|
|
assert len(data['data']['sports']) == 1
|
|
|
|
assert (
|
|
|
|
data['data']['sports'][0]
|
|
|
|
== expected_sport_1_cycling_inactive_admin_result
|
|
|
|
)
|
|
|
|
|
|
|
|
|
2021-02-20 23:20:20 +01:00
|
|
|
class TestUpdateSport(ApiTestCaseMixin):
|
2021-01-02 19:28:03 +01:00
|
|
|
def test_it_disables_a_sport(
|
|
|
|
self, app: Flask, user_1_admin: User, sport_1_cycling: Sport
|
|
|
|
) -> None:
|
2021-02-20 23:20:20 +01:00
|
|
|
client, auth_token = self.get_test_client_and_auth_token(
|
|
|
|
app, as_admin=True
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
response = client.patch(
|
|
|
|
'/api/sports/1',
|
|
|
|
content_type='application/json',
|
|
|
|
data=json.dumps(dict(is_active=False)),
|
2021-02-20 23:20:20 +01:00
|
|
|
headers=dict(Authorization=f'Bearer {auth_token}'),
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
data = json.loads(response.data.decode())
|
|
|
|
assert response.status_code == 200
|
|
|
|
assert 'success' in data['status']
|
|
|
|
assert len(data['data']['sports']) == 1
|
|
|
|
assert data['data']['sports'][0]['is_active'] is False
|
2021-11-12 12:33:25 +01:00
|
|
|
assert data['data']['sports'][0]['is_active_for_user'] is False
|
2021-01-10 11:16:43 +01:00
|
|
|
assert data['data']['sports'][0]['has_workouts'] is False
|
2020-05-10 15:55:56 +02:00
|
|
|
|
2021-01-02 19:28:03 +01:00
|
|
|
def test_it_enables_a_sport(
|
|
|
|
self, app: Flask, user_1_admin: User, sport_1_cycling: Sport
|
|
|
|
) -> None:
|
2020-05-10 15:55:56 +02:00
|
|
|
sport_1_cycling.is_active = False
|
2021-02-20 23:20:20 +01:00
|
|
|
client, auth_token = self.get_test_client_and_auth_token(
|
|
|
|
app, as_admin=True
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
response = client.patch(
|
|
|
|
'/api/sports/1',
|
|
|
|
content_type='application/json',
|
|
|
|
data=json.dumps(dict(is_active=True)),
|
2021-02-20 23:20:20 +01:00
|
|
|
headers=dict(Authorization=f'Bearer {auth_token}'),
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
data = json.loads(response.data.decode())
|
|
|
|
assert response.status_code == 200
|
|
|
|
assert 'success' in data['status']
|
|
|
|
assert len(data['data']['sports']) == 1
|
|
|
|
assert data['data']['sports'][0]['is_active'] is True
|
2021-11-12 12:33:25 +01:00
|
|
|
assert data['data']['sports'][0]['is_active_for_user'] is True
|
2021-01-10 11:16:43 +01:00
|
|
|
assert data['data']['sports'][0]['has_workouts'] is False
|
2020-05-10 15:55:56 +02:00
|
|
|
|
2021-01-10 11:16:43 +01:00
|
|
|
def test_it_disables_a_sport_with_workouts(
|
2021-01-02 19:28:03 +01:00
|
|
|
self,
|
|
|
|
app: Flask,
|
|
|
|
user_1_admin: User,
|
|
|
|
sport_1_cycling: Sport,
|
2021-01-10 11:16:43 +01:00
|
|
|
workout_cycling_user_1: Workout,
|
2021-01-02 19:28:03 +01:00
|
|
|
) -> None:
|
2021-02-20 23:20:20 +01:00
|
|
|
client, auth_token = self.get_test_client_and_auth_token(
|
|
|
|
app, as_admin=True
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
response = client.patch(
|
|
|
|
'/api/sports/1',
|
|
|
|
content_type='application/json',
|
|
|
|
data=json.dumps(dict(is_active=False)),
|
2021-02-20 23:20:20 +01:00
|
|
|
headers=dict(Authorization=f'Bearer {auth_token}'),
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
data = json.loads(response.data.decode())
|
|
|
|
assert response.status_code == 200
|
|
|
|
assert 'success' in data['status']
|
|
|
|
assert len(data['data']['sports']) == 1
|
|
|
|
assert data['data']['sports'][0]['is_active'] is False
|
2021-11-12 12:33:25 +01:00
|
|
|
assert data['data']['sports'][0]['is_active_for_user'] is False
|
2021-01-10 11:16:43 +01:00
|
|
|
assert data['data']['sports'][0]['has_workouts'] is True
|
2020-05-10 15:55:56 +02:00
|
|
|
|
2021-01-10 11:16:43 +01:00
|
|
|
def test_it_enables_a_sport_with_workouts(
|
2021-01-02 19:28:03 +01:00
|
|
|
self,
|
|
|
|
app: Flask,
|
|
|
|
user_1_admin: User,
|
|
|
|
sport_1_cycling: Sport,
|
2021-01-10 11:16:43 +01:00
|
|
|
workout_cycling_user_1: Workout,
|
2021-01-02 19:28:03 +01:00
|
|
|
) -> None:
|
2020-05-10 15:55:56 +02:00
|
|
|
sport_1_cycling.is_active = False
|
2021-02-20 23:20:20 +01:00
|
|
|
client, auth_token = self.get_test_client_and_auth_token(
|
|
|
|
app, as_admin=True
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
response = client.patch(
|
|
|
|
'/api/sports/1',
|
|
|
|
content_type='application/json',
|
|
|
|
data=json.dumps(dict(is_active=True)),
|
2021-02-20 23:20:20 +01:00
|
|
|
headers=dict(Authorization=f'Bearer {auth_token}'),
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
data = json.loads(response.data.decode())
|
|
|
|
assert response.status_code == 200
|
|
|
|
assert 'success' in data['status']
|
|
|
|
assert len(data['data']['sports']) == 1
|
|
|
|
assert data['data']['sports'][0]['is_active'] is True
|
2021-11-12 12:33:25 +01:00
|
|
|
assert data['data']['sports'][0]['is_active_for_user'] is True
|
2021-01-10 11:16:43 +01:00
|
|
|
assert data['data']['sports'][0]['has_workouts'] is True
|
2020-05-10 15:55:56 +02:00
|
|
|
|
2021-11-12 12:33:25 +01:00
|
|
|
def test_it_disables_a_sport_with_preferences(
|
|
|
|
self,
|
|
|
|
app: Flask,
|
|
|
|
user_1_admin: User,
|
|
|
|
sport_1_cycling: Sport,
|
|
|
|
user_admin_sport_1_preference: UserSportPreference,
|
|
|
|
) -> None:
|
|
|
|
client, auth_token = self.get_test_client_and_auth_token(
|
|
|
|
app, as_admin=True
|
|
|
|
)
|
|
|
|
|
|
|
|
response = client.patch(
|
|
|
|
'/api/sports/1',
|
|
|
|
content_type='application/json',
|
|
|
|
data=json.dumps(dict(is_active=False)),
|
|
|
|
headers=dict(Authorization=f'Bearer {auth_token}'),
|
|
|
|
)
|
|
|
|
|
|
|
|
data = json.loads(response.data.decode())
|
|
|
|
assert response.status_code == 200
|
|
|
|
assert 'success' in data['status']
|
|
|
|
assert len(data['data']['sports']) == 1
|
|
|
|
assert data['data']['sports'][0]['is_active'] is False
|
|
|
|
assert data['data']['sports'][0]['is_active_for_user'] is False
|
|
|
|
assert data['data']['sports'][0]['is_active_for_user'] is False
|
|
|
|
assert data['data']['sports'][0]['has_workouts'] is False
|
|
|
|
|
|
|
|
def test_it_enables_a_sport_with_preferences(
|
|
|
|
self,
|
|
|
|
app: Flask,
|
|
|
|
user_1_admin: User,
|
|
|
|
sport_1_cycling: Sport,
|
|
|
|
user_admin_sport_1_preference: UserSportPreference,
|
|
|
|
) -> None:
|
|
|
|
sport_1_cycling.is_active = False
|
|
|
|
client, auth_token = self.get_test_client_and_auth_token(
|
|
|
|
app, as_admin=True
|
|
|
|
)
|
|
|
|
|
|
|
|
response = client.patch(
|
|
|
|
'/api/sports/1',
|
|
|
|
content_type='application/json',
|
|
|
|
data=json.dumps(dict(is_active=True)),
|
|
|
|
headers=dict(Authorization=f'Bearer {auth_token}'),
|
|
|
|
)
|
|
|
|
|
|
|
|
data = json.loads(response.data.decode())
|
|
|
|
assert response.status_code == 200
|
|
|
|
assert 'success' in data['status']
|
|
|
|
assert len(data['data']['sports']) == 1
|
|
|
|
assert data['data']['sports'][0]['is_active'] is True
|
|
|
|
assert data['data']['sports'][0]['is_active_for_user'] is True
|
|
|
|
assert data['data']['sports'][0]['has_workouts'] is False
|
|
|
|
|
2020-05-10 15:55:56 +02:00
|
|
|
def test_returns_error_if_user_has_no_admin_rights(
|
2021-01-02 19:28:03 +01:00
|
|
|
self, app: Flask, user_1: User, sport_1_cycling: Sport
|
|
|
|
) -> None:
|
2021-02-20 23:20:20 +01:00
|
|
|
client, auth_token = self.get_test_client_and_auth_token(app)
|
|
|
|
|
2020-05-10 15:55:56 +02:00
|
|
|
response = client.patch(
|
|
|
|
'/api/sports/1',
|
|
|
|
content_type='application/json',
|
|
|
|
data=json.dumps(dict(is_active=False)),
|
2021-02-20 23:20:20 +01:00
|
|
|
headers=dict(Authorization=f'Bearer {auth_token}'),
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
|
|
|
|
2021-02-20 23:20:20 +01:00
|
|
|
data = json.loads(response.data.decode())
|
2020-05-10 15:55:56 +02:00
|
|
|
assert response.status_code == 403
|
|
|
|
assert 'success' not in data['status']
|
|
|
|
assert 'error' in data['status']
|
2021-11-01 09:44:10 +01:00
|
|
|
assert 'you do not have permissions' in data['message']
|
2020-05-10 15:55:56 +02:00
|
|
|
|
2021-01-02 19:28:03 +01:00
|
|
|
def test_returns_error_if_payload_is_invalid(
|
|
|
|
self, app: Flask, user_1_admin: User
|
|
|
|
) -> None:
|
2021-02-20 23:20:20 +01:00
|
|
|
client, auth_token = self.get_test_client_and_auth_token(
|
|
|
|
app, as_admin=True
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
response = client.patch(
|
|
|
|
'/api/sports/1',
|
|
|
|
content_type='application/json',
|
|
|
|
data=json.dumps(dict()),
|
2021-02-20 23:20:20 +01:00
|
|
|
headers=dict(Authorization=f'Bearer {auth_token}'),
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
data = json.loads(response.data.decode())
|
|
|
|
assert response.status_code == 400
|
|
|
|
assert 'error' in data['status']
|
2021-11-01 09:44:10 +01:00
|
|
|
assert 'invalid payload' in data['message']
|
2020-05-10 15:55:56 +02:00
|
|
|
|
2021-01-02 19:28:03 +01:00
|
|
|
def test_it_returns_error_if_sport_does_not_exist(
|
|
|
|
self, app: Flask, user_1_admin: User
|
|
|
|
) -> None:
|
2021-02-20 23:20:20 +01:00
|
|
|
client, auth_token = self.get_test_client_and_auth_token(
|
|
|
|
app, as_admin=True
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
2021-02-20 23:20:20 +01:00
|
|
|
|
2020-05-10 15:55:56 +02:00
|
|
|
response = client.patch(
|
|
|
|
'/api/sports/1',
|
|
|
|
content_type='application/json',
|
|
|
|
data=json.dumps(dict(is_active=False)),
|
2021-02-20 23:20:20 +01:00
|
|
|
headers=dict(Authorization=f'Bearer {auth_token}'),
|
2020-05-10 15:55:56 +02:00
|
|
|
)
|
|
|
|
|
2021-02-20 23:20:20 +01:00
|
|
|
data = json.loads(response.data.decode())
|
2020-05-10 15:55:56 +02:00
|
|
|
assert response.status_code == 404
|
|
|
|
assert 'not found' in data['status']
|
|
|
|
assert len(data['data']['sports']) == 0
|