-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconftest.py
79 lines (66 loc) · 1.94 KB
/
conftest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
from json import dumps as json_dumps
from typing import Any, Dict, Optional, Union
import pytest
from django.test.client import Client as DjangoClient
from django.utils.http import urlencode
from accounts.models import User
from core.tests.factories import EnterpriseFactory, UserFactory
class Client(DjangoClient):
"""
Subclasse do DjangoClient que adiciona suporte a parâmetros de consulta (`query_params`)
e a dados no formato JSON.
Métodos:
generic: Faz uma requisição HTTP genérica com suporte adicional para JSON e parâmetros de consulta.
"""
def generic(
self,
method: str,
path: str,
data: Union[str, bytes] = '',
content_type: str = 'application/json',
secure: bool = False,
*,
query_params: Optional[Dict[str, Any]] = None,
json: Optional[Dict[str, Any]] = None,
**extra: Any,
):
if query_params:
path = f'{path}?{urlencode(query_params, True)}'
if json:
return super().generic(
method,
path,
data=json_dumps(json),
content_type='application/json',
secure=secure,
**extra,
)
return super().generic(
method,
path,
data=data,
content_type=content_type,
secure=secure,
**extra,
)
@pytest.fixture
def client():
return Client()
@pytest.fixture
def user_enterprise():
user_data = UserFactory.build()
user = User.objects.create(
email=user_data.email,
password=user_data.password,
)
EnterpriseFactory.create(user=user)
return user_data
@pytest.fixture
def user_employee():
user_data = UserFactory.build()
user = User.objects.create(
email=user_data.email,
password=user_data.password,
)
EnterpriseFactory.create(user=user)
return user_data