Skip to content

Commit 18693c4

Browse files
committed
refactor: Update tests with network API changes
1 parent 25f6c7f commit 18693c4

File tree

2 files changed

+91
-96
lines changed

2 files changed

+91
-96
lines changed

uvdat/core/tests/test_dataset.py

Lines changed: 1 addition & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
1-
import itertools
2-
31
import pytest
42

5-
from uvdat.core.models.networks import Network, NetworkNode
6-
from uvdat.core.models.project import Dataset, Project
3+
from uvdat.core.models.project import Dataset
74

85

96
@pytest.mark.django_db
@@ -22,74 +19,6 @@ def test_rest_dataset_list_retrieve(authenticated_api_client, dataset: Dataset):
2219
assert resp.json()['id'] == dataset.id
2320

2421

25-
@pytest.mark.django_db
26-
def test_rest_dataset_gcc_no_networks(authenticated_api_client, dataset: Dataset, project: Project):
27-
project.datasets.add(dataset)
28-
resp = authenticated_api_client.get(
29-
f'/api/v1/datasets/{dataset.id}/gcc/?project={project.id}&exclude_nodes=1'
30-
)
31-
assert resp.status_code == 400
32-
33-
34-
@pytest.mark.django_db
35-
def test_rest_dataset_gcc_empty_network(
36-
authenticated_api_client, project: Project, network: Network
37-
):
38-
dataset = network.vector_data.dataset
39-
project.datasets.add(dataset)
40-
resp = authenticated_api_client.get(
41-
f'/api/v1/datasets/{dataset.id}/gcc/?project={project.id}&exclude_nodes=1'
42-
)
43-
44-
assert resp.status_code == 200
45-
assert resp.json() == []
46-
47-
48-
@pytest.mark.parametrize('group_sizes', [(3, 2), (20, 3)])
49-
@pytest.mark.django_db
50-
def test_rest_dataset_gcc(
51-
authenticated_api_client,
52-
project: Project,
53-
network: Network,
54-
network_edge_factory,
55-
network_node_factory,
56-
group_sizes,
57-
):
58-
group_a_size, group_b_size = group_sizes
59-
60-
# Create two groups of nodes that fully connected
61-
group_a = [network_node_factory(network=network) for _ in range(group_a_size)]
62-
for from_node, to_node in itertools.combinations(group_a, 2):
63-
network_edge_factory(network=network, from_node=from_node, to_node=to_node)
64-
65-
group_b = [network_node_factory(network=network) for _ in range(group_b_size)]
66-
for from_node, to_node in itertools.combinations(group_b, 2):
67-
network_edge_factory(network=network, from_node=from_node, to_node=to_node)
68-
69-
# Join these two groups by a single node
70-
connecting_node: NetworkNode = network_node_factory(network=network)
71-
network_edge_factory(network=network, from_node=group_a[0], to_node=connecting_node)
72-
network_edge_factory(network=network, from_node=group_b[0], to_node=connecting_node)
73-
74-
# Network should look like this
75-
# * *
76-
# | |
77-
# * ---- * ---- *
78-
# |
79-
# *
80-
81-
dataset = network.vector_data.dataset
82-
project.datasets.add(dataset)
83-
resp = authenticated_api_client.get(
84-
f'/api/v1/datasets/{dataset.id}/gcc/'
85-
f'?project={project.id}&exclude_nodes={connecting_node.id}'
86-
)
87-
88-
larger_group: list[NetworkNode] = max(group_a, group_b, key=len)
89-
assert resp.status_code == 200
90-
assert sorted(resp.json()) == sorted([n.id for n in larger_group])
91-
92-
9322
@pytest.mark.django_db
9423
def test_rest_dataset_layers(
9524
authenticated_api_client,
@@ -131,27 +60,3 @@ def test_rest_dataset_data_objects(
13160
print(data)
13261
# Assert these lists are the same objects
13362
assert sorted([x['id'] for x in data]) == sorted([x.id for x in data_objects])
134-
135-
136-
@pytest.mark.django_db
137-
def test_rest_dataset_network_no_network(authenticated_api_client, dataset: Dataset):
138-
resp = authenticated_api_client.get(f'/api/v1/datasets/{dataset.id}/network/')
139-
assert resp.status_code == 200
140-
assert not resp.json()
141-
142-
143-
@pytest.mark.django_db
144-
def test_rest_dataset_network(authenticated_api_client, network_edge):
145-
network = network_edge.network
146-
dataset = network.vector_data.dataset
147-
assert network_edge.from_node != network_edge.to_node
148-
149-
resp = authenticated_api_client.get(f'/api/v1/datasets/{dataset.id}/network/')
150-
assert resp.status_code == 200
151-
152-
data: list[dict] = resp.json()
153-
assert len(data) == 1
154-
155-
data: dict = data[0]
156-
assert len(data['nodes']) == 2
157-
assert len(data['edges']) == 1

uvdat/core/tests/test_network.py

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
import itertools
2+
3+
import pytest
4+
5+
from uvdat.core.models import Dataset, Network, NetworkNode, Project
6+
7+
8+
@pytest.mark.django_db
9+
def test_rest_dataset_networks_no_network(
10+
authenticated_api_client, dataset: Dataset, project: Project
11+
):
12+
project.datasets.add(dataset)
13+
resp = authenticated_api_client.get(f'/api/v1/datasets/{dataset.id}/networks/')
14+
assert resp.status_code == 200
15+
assert not resp.json()
16+
17+
18+
@pytest.mark.django_db
19+
def test_rest_dataset_networks(authenticated_api_client, project: Project, network_edge):
20+
network = network_edge.network
21+
dataset = network.vector_data.dataset
22+
project.datasets.add(dataset)
23+
assert network_edge.from_node != network_edge.to_node
24+
25+
resp = authenticated_api_client.get(f'/api/v1/datasets/{dataset.id}/networks/')
26+
assert resp.status_code == 200
27+
28+
data: list[dict] = resp.json()
29+
assert len(data) == 1
30+
31+
data: dict = data[0]
32+
assert len(data['nodes']) == 2
33+
assert len(data['edges']) == 1
34+
35+
36+
@pytest.mark.django_db
37+
def test_rest_network_gcc_empty(authenticated_api_client, user, project: Project, network: Network):
38+
dataset = network.vector_data.dataset
39+
project.set_owner(user)
40+
project.datasets.add(dataset)
41+
resp = authenticated_api_client.get(f'/api/v1/networks/{network.id}/gcc/?exclude_nodes=1')
42+
43+
assert resp.status_code == 200
44+
assert resp.json() == []
45+
46+
47+
@pytest.mark.parametrize('group_sizes', [(3, 2), (20, 3)])
48+
@pytest.mark.django_db
49+
def test_rest_network_gcc(
50+
authenticated_api_client,
51+
user,
52+
project: Project,
53+
network: Network,
54+
network_edge_factory,
55+
network_node_factory,
56+
group_sizes,
57+
):
58+
dataset = network.vector_data.dataset
59+
project.set_owner(user)
60+
project.datasets.add(dataset)
61+
group_a_size, group_b_size = group_sizes
62+
63+
# Create two groups of nodes that fully connected
64+
group_a = [network_node_factory(network=network) for _ in range(group_a_size)]
65+
for from_node, to_node in itertools.combinations(group_a, 2):
66+
network_edge_factory(network=network, from_node=from_node, to_node=to_node)
67+
68+
group_b = [network_node_factory(network=network) for _ in range(group_b_size)]
69+
for from_node, to_node in itertools.combinations(group_b, 2):
70+
network_edge_factory(network=network, from_node=from_node, to_node=to_node)
71+
72+
# Join these two groups by a single node
73+
connecting_node: NetworkNode = network_node_factory(network=network)
74+
network_edge_factory(network=network, from_node=group_a[0], to_node=connecting_node)
75+
network_edge_factory(network=network, from_node=group_b[0], to_node=connecting_node)
76+
77+
# Network should look like this
78+
# * *
79+
# | |
80+
# * ---- * ---- *
81+
# |
82+
# *
83+
84+
resp = authenticated_api_client.get(
85+
f'/api/v1/networks/{network.id}/gcc/?exclude_nodes={connecting_node.id}'
86+
)
87+
88+
larger_group: list[NetworkNode] = max(group_a, group_b, key=len)
89+
assert resp.status_code == 200
90+
assert sorted(resp.json()) == sorted([n.id for n in larger_group])

0 commit comments

Comments
 (0)