@@ -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
9501085class TestEntityComparisonView :
0 commit comments