Add settings page and configurable network map types.
Let users define sector/circle labels and geometry per map type, choose a type when creating maps, and sync types through local backup and API migrations. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
import pytest
|
||||
|
||||
from contacts.models import NetworkMap, NetworkMapType
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_network_map_types_list(api_client):
|
||||
response = api_client.get('/api/v1/network-map-types/')
|
||||
assert response.status_code == 200
|
||||
assert response.data['count'] >= 1
|
||||
default = next(r for r in response.data['results'] if r['is_default'])
|
||||
assert len(default['sectors']) == 6
|
||||
assert len(default['circles']) == 3
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_network_map_type_create(api_client):
|
||||
response = api_client.post('/api/v1/network-map-types/', {
|
||||
'name': 'Корпоративная',
|
||||
'sectors': [{'key': 'team', 'label': 'Команда'}],
|
||||
'circles': [{'key': 'inner', 'label': 'Ядро'}],
|
||||
}, format='json')
|
||||
assert response.status_code == 201
|
||||
assert response.data['name'] == 'Корпоративная'
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_network_map_type_create_validation(api_client):
|
||||
response = api_client.post('/api/v1/network-map-types/', {
|
||||
'name': 'Пустая',
|
||||
'sectors': [],
|
||||
'circles': [{'key': 'a', 'label': 'A'}],
|
||||
}, format='json')
|
||||
assert response.status_code == 400
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_network_map_type_delete_default_forbidden(api_client):
|
||||
default_type = NetworkMapType.objects.filter(is_default=True).first()
|
||||
response = api_client.delete(f'/api/v1/network-map-types/{default_type.id}/')
|
||||
assert response.status_code == 400
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_network_map_create_with_type(api_client):
|
||||
map_type = NetworkMapType.objects.create(
|
||||
name='Тестовая',
|
||||
sectors=[{'key': 'a', 'label': 'A'}],
|
||||
circles=[{'key': 'b', 'label': 'B'}],
|
||||
)
|
||||
response = api_client.post('/api/v1/network-maps/', {
|
||||
'name': 'Карта 1',
|
||||
'description': '',
|
||||
'map_type': map_type.id,
|
||||
}, format='json')
|
||||
assert response.status_code == 201
|
||||
assert response.data['map_type'] == map_type.id
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_network_map_type_delete_in_use(api_client):
|
||||
map_type = NetworkMapType.objects.create(
|
||||
name='Занятая',
|
||||
sectors=[{'key': 'a', 'label': 'A'}],
|
||||
circles=[{'key': 'b', 'label': 'B'}],
|
||||
)
|
||||
NetworkMap.objects.create(name='Карта', map_type=map_type)
|
||||
response = api_client.delete(f'/api/v1/network-map-types/{map_type.id}/')
|
||||
assert response.status_code == 400
|
||||
Reference in New Issue
Block a user