Skip to content

Commit 957a4e6

Browse files
committed
Test private fitting results are not listed
1 parent cdd84db commit 957a4e6

2 files changed

Lines changed: 174 additions & 0 deletions

File tree

weblab/datasets/tests/test_views.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -730,3 +730,42 @@ def test_multiple_model_versions_for_dataset(self, client, helpers, public_datas
730730
(m1, [fit2_m1v2, fit1_m1v1]),
731731
(m2, [fit3_m2v]),
732732
]
733+
734+
def test_ensure_private_results_are_not_shown(self, client, public_dataset):
735+
# Create publicly visible fitting result versions
736+
fit1 = recipes.fittingresult_version.make(
737+
fittingresult__dataset=public_dataset,
738+
fittingresult__model_version__visibility='private',
739+
fittingresult__protocol_version__visibility='public',
740+
fittingresult__fittingspec_version__visibility='public',
741+
).fittingresult
742+
743+
fit2 = recipes.fittingresult_version.make(
744+
fittingresult__dataset=public_dataset,
745+
fittingresult__model_version__visibility='public',
746+
fittingresult__protocol_version__visibility='private',
747+
fittingresult__fittingspec_version__visibility='public',
748+
).fittingresult
749+
750+
fit3 = recipes.fittingresult_version.make(
751+
fittingresult__dataset=public_dataset,
752+
fittingresult__model_version__visibility='public',
753+
fittingresult__protocol_version__visibility='public',
754+
fittingresult__fittingspec_version__visibility='private',
755+
).fittingresult
756+
757+
fit4 = recipes.fittingresult_version.make(
758+
fittingresult__dataset=public_dataset,
759+
fittingresult__model_version__visibility='public',
760+
fittingresult__protocol_version__visibility='public',
761+
fittingresult__fittingspec_version__visibility='public',
762+
).fittingresult
763+
764+
response = client.get(
765+
'/datasets/%d/fittings' % public_dataset.id
766+
)
767+
768+
assert response.status_code == 200
769+
assert response.context['comparisons'] == [
770+
(fit4.model, [fit4]),
771+
]

weblab/entities/tests/test_views.py

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -719,6 +719,50 @@ def test_groups_by_dataset_for_model(self, client, public_model):
719719
(dataset2, [ds2fit1]),
720720
]
721721

722+
def test_ensure_private_results_are_not_shown_for_model_version(self, client, public_model):
723+
model_version = public_model.repocache.latest_version
724+
# Create publicly visible fitting result versions
725+
fit1 = recipes.fittingresult_version.make(
726+
fittingresult__model=public_model,
727+
fittingresult__model_version=model_version,
728+
fittingresult__protocol_version__visibility='private',
729+
fittingresult__fittingspec_version__visibility='public',
730+
fittingresult__dataset__visibility='public'
731+
).fittingresult
732+
733+
fit2 = recipes.fittingresult_version.make(
734+
fittingresult__model=public_model,
735+
fittingresult__model_version=model_version,
736+
fittingresult__protocol_version__visibility='public',
737+
fittingresult__fittingspec_version__visibility='private',
738+
fittingresult__dataset__visibility='public'
739+
).fittingresult
740+
741+
fit3 = recipes.fittingresult_version.make(
742+
fittingresult__model=public_model,
743+
fittingresult__model_version=model_version,
744+
fittingresult__protocol_version__visibility='public',
745+
fittingresult__fittingspec_version__visibility='public',
746+
fittingresult__dataset__visibility='private'
747+
).fittingresult
748+
749+
fit4 = recipes.fittingresult_version.make(
750+
fittingresult__model=public_model,
751+
fittingresult__model_version=model_version,
752+
fittingresult__protocol_version__visibility='public',
753+
fittingresult__fittingspec_version__visibility='public',
754+
fittingresult__dataset__visibility='public'
755+
).fittingresult
756+
757+
response = client.get(
758+
'/entities/models/%d/versions/%s/fittings' % (public_model.id, model_version.sha)
759+
)
760+
761+
assert response.status_code == 200
762+
assert response.context['comparisons'] == [
763+
(fit4.dataset, [fit4]),
764+
]
765+
722766
def test_shows_fittings_related_to_protocol_version(self, client, fittingresult_version):
723767
fit = fittingresult_version.fittingresult
724768

@@ -832,6 +876,52 @@ def test_multiple_model_versions_for_protocol_version(self, client, helpers, pub
832876
]),
833877
]
834878

879+
def test_ensure_private_results_are_not_shown_for_protocol_version(self, client, public_protocol):
880+
protocol_version = public_protocol.repocache.latest_version
881+
882+
# Create publicly visible fitting result versions
883+
fit1 = recipes.fittingresult_version.make(
884+
fittingresult__protocol=public_protocol,
885+
fittingresult__protocol_version=protocol_version,
886+
fittingresult__model_version__visibility='private',
887+
fittingresult__fittingspec_version__visibility='public',
888+
fittingresult__dataset__visibility='public'
889+
).fittingresult
890+
891+
fit2 = recipes.fittingresult_version.make(
892+
fittingresult__protocol=public_protocol,
893+
fittingresult__protocol_version=protocol_version,
894+
fittingresult__model_version__visibility='public',
895+
fittingresult__fittingspec_version__visibility='private',
896+
fittingresult__dataset__visibility='public'
897+
).fittingresult
898+
899+
fit3 = recipes.fittingresult_version.make(
900+
fittingresult__protocol=public_protocol,
901+
fittingresult__protocol_version=protocol_version,
902+
fittingresult__model_version__visibility='public',
903+
fittingresult__fittingspec_version__visibility='public',
904+
fittingresult__dataset__visibility='private'
905+
).fittingresult
906+
907+
fit4 = recipes.fittingresult_version.make(
908+
fittingresult__protocol=public_protocol,
909+
fittingresult__protocol_version=protocol_version,
910+
fittingresult__model_version__visibility='public',
911+
fittingresult__fittingspec_version__visibility='public',
912+
fittingresult__dataset__visibility='public'
913+
).fittingresult
914+
915+
response = client.get(
916+
'/entities/protocols/%d/versions/%s/fittings' % (public_protocol.id, protocol_version.sha)
917+
)
918+
919+
assert response.status_code == 200
920+
assert response.context['comparisons'] == [
921+
(fit4.dataset, [(fit4.model, [fit4])]),
922+
]
923+
924+
835925
def test_shows_fittings_related_to_fittingspec_version(self, client, fittingresult_version):
836926
fit = fittingresult_version.fittingresult
837927

@@ -945,6 +1035,51 @@ def test_multiple_model_versions_for_fittingspec_version(self, client, helpers,
9451035
]),
9461036
]
9471037

1038+
def test_ensure_private_results_are_not_shown_for_fittingspec_version(self, client, public_fittingspec):
1039+
fittingspec_version = public_fittingspec.repocache.latest_version
1040+
1041+
# Create publicly visible fitting result versions
1042+
fit1 = recipes.fittingresult_version.make(
1043+
fittingresult__fittingspec=public_fittingspec,
1044+
fittingresult__fittingspec_version=fittingspec_version,
1045+
fittingresult__model_version__visibility='private',
1046+
fittingresult__protocol_version__visibility='public',
1047+
fittingresult__dataset__visibility='public'
1048+
).fittingresult
1049+
1050+
fit2 = recipes.fittingresult_version.make(
1051+
fittingresult__fittingspec=public_fittingspec,
1052+
fittingresult__fittingspec_version=fittingspec_version,
1053+
fittingresult__model_version__visibility='public',
1054+
fittingresult__protocol_version__visibility='private',
1055+
fittingresult__dataset__visibility='public'
1056+
).fittingresult
1057+
1058+
fit3 = recipes.fittingresult_version.make(
1059+
fittingresult__fittingspec=public_fittingspec,
1060+
fittingresult__fittingspec_version=fittingspec_version,
1061+
fittingresult__model_version__visibility='public',
1062+
fittingresult__protocol_version__visibility='public',
1063+
fittingresult__dataset__visibility='private'
1064+
).fittingresult
1065+
1066+
fit4 = recipes.fittingresult_version.make(
1067+
fittingresult__fittingspec=public_fittingspec,
1068+
fittingresult__fittingspec_version=fittingspec_version,
1069+
fittingresult__model_version__visibility='public',
1070+
fittingresult__protocol_version__visibility='public',
1071+
fittingresult__dataset__visibility='public'
1072+
).fittingresult
1073+
1074+
response = client.get(
1075+
'/fitting/specs/%d/versions/%s/fittings' % (public_fittingspec.id, fittingspec_version.sha)
1076+
)
1077+
1078+
assert response.status_code == 200
1079+
assert response.context['comparisons'] == [
1080+
(fit4.dataset, [(fit4.model, [fit4])]),
1081+
]
1082+
9481083

9491084
@pytest.mark.django_db
9501085
class TestEntityComparisonView:

0 commit comments

Comments
 (0)