Skip to content

Commit ef824cb

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

2 files changed

Lines changed: 169 additions & 0 deletions

File tree

weblab/datasets/tests/test_views.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -730,3 +730,41 @@ 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+
recipes.fittingresult_version.make(
736+
fittingresult__dataset=public_dataset,
737+
fittingresult__model_version__visibility='private',
738+
fittingresult__protocol_version__visibility='public',
739+
fittingresult__fittingspec_version__visibility='public',
740+
).fittingresult
741+
742+
recipes.fittingresult_version.make(
743+
fittingresult__dataset=public_dataset,
744+
fittingresult__model_version__visibility='public',
745+
fittingresult__protocol_version__visibility='private',
746+
fittingresult__fittingspec_version__visibility='public',
747+
).fittingresult
748+
749+
recipes.fittingresult_version.make(
750+
fittingresult__dataset=public_dataset,
751+
fittingresult__model_version__visibility='public',
752+
fittingresult__protocol_version__visibility='public',
753+
fittingresult__fittingspec_version__visibility='private',
754+
).fittingresult
755+
756+
fit = recipes.fittingresult_version.make(
757+
fittingresult__dataset=public_dataset,
758+
fittingresult__model_version__visibility='public',
759+
fittingresult__protocol_version__visibility='public',
760+
fittingresult__fittingspec_version__visibility='public',
761+
).fittingresult
762+
763+
response = client.get(
764+
'/datasets/%d/fittings' % public_dataset.id
765+
)
766+
767+
assert response.status_code == 200
768+
assert response.context['comparisons'] == [
769+
(fit.model, [fit]),
770+
]

weblab/entities/tests/test_views.py

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -719,6 +719,49 @@ 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+
recipes.fittingresult_version.make(
725+
fittingresult__model=public_model,
726+
fittingresult__model_version=model_version,
727+
fittingresult__protocol_version__visibility='private',
728+
fittingresult__fittingspec_version__visibility='public',
729+
fittingresult__dataset__visibility='public'
730+
).fittingresult
731+
732+
recipes.fittingresult_version.make(
733+
fittingresult__model=public_model,
734+
fittingresult__model_version=model_version,
735+
fittingresult__protocol_version__visibility='public',
736+
fittingresult__fittingspec_version__visibility='private',
737+
fittingresult__dataset__visibility='public'
738+
).fittingresult
739+
740+
recipes.fittingresult_version.make(
741+
fittingresult__model=public_model,
742+
fittingresult__model_version=model_version,
743+
fittingresult__protocol_version__visibility='public',
744+
fittingresult__fittingspec_version__visibility='public',
745+
fittingresult__dataset__visibility='private'
746+
).fittingresult
747+
748+
fit = recipes.fittingresult_version.make(
749+
fittingresult__model=public_model,
750+
fittingresult__model_version=model_version,
751+
fittingresult__protocol_version__visibility='public',
752+
fittingresult__fittingspec_version__visibility='public',
753+
fittingresult__dataset__visibility='public'
754+
).fittingresult
755+
756+
response = client.get(
757+
'/entities/models/%d/versions/%s/fittings' % (public_model.id, model_version.sha)
758+
)
759+
760+
assert response.status_code == 200
761+
assert response.context['comparisons'] == [
762+
(fit.dataset, [fit]),
763+
]
764+
722765
def test_shows_fittings_related_to_protocol_version(self, client, fittingresult_version):
723766
fit = fittingresult_version.fittingresult
724767

@@ -832,6 +875,50 @@ def test_multiple_model_versions_for_protocol_version(self, client, helpers, pub
832875
]),
833876
]
834877

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

@@ -945,6 +1032,50 @@ def test_multiple_model_versions_for_fittingspec_version(self, client, helpers,
9451032
]),
9461033
]
9471034

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

9491080
@pytest.mark.django_db
9501081
class TestEntityComparisonView:

0 commit comments

Comments
 (0)