def items_for_filtering(db, user_alice, user_bob): tag1 = TagModelFactory(name='tag1') tag2 = TagModelFactory(name='tag2') surface1 = SurfaceFactory(name='surface1', creator=user_alice, category='exp', description='apple') topo1a = Topography1DFactory(name='topo1a', surface=surface1) topo1b = Topography1DFactory(name='topo1b', surface=surface1, tags=[tag1, tag2]) surface2 = SurfaceFactory(name='surface2', creator=user_alice, category='dum', tags=[tag1], description='banana') topo2a = Topography1DFactory(name='topo2a', surface=surface2) surface3 = SurfaceFactory(name='surface3', creator=user_bob, category='sim', description='cherry') topo3a = Topography1DFactory(name='topo3a', surface=surface3) surface3.share(user_alice) return dict(tags=[tag1, tag2], surfaces=[surface1, surface2, surface3], topographies=[topo1a, topo1b, topo2a, topo3a])
def test_is_sharing_with(): user1 = UserFactory() user2 = UserFactory() assert not user1.is_sharing_with(user2) surface = SurfaceFactory(creator=user1) surface.share(user2) assert user1.is_sharing_with(user2)
def test_view_shared_analysis_results(client, handle_usage_statistics): password = '******' # # create database objects # user1 = UserFactory(password=password) user2 = UserFactory(password=password) surface1 = SurfaceFactory(creator=user1) surface2 = SurfaceFactory(creator=user2) # create topographies + functions + analyses func1 = AnalysisFunctionFactory() impl1 = AnalysisFunctionImplementationFactory(function=func1) # func2 = AnalysisFunctionFactory() # Two topographies for surface1 topo1a = Topography1DFactory(surface=surface1, name='topo1a') topo1b = Topography1DFactory(surface=surface1, name='topo1b') # One topography for surface2 topo2a = Topography1DFactory(surface=surface2, name='topo2a') # analyses, differentiate by start time analysis1a_1 = TopographyAnalysisFactory(subject=topo1a, function=func1, start_time=datetime.datetime(2019, 1, 1, 12)) analysis1b_1 = TopographyAnalysisFactory(subject=topo1b, function=func1, start_time=datetime.datetime(2019, 1, 1, 13)) analysis2a_1 = TopographyAnalysisFactory(subject=topo2a, function=func1, start_time=datetime.datetime(2019, 1, 1, 14)) # Function should have three analyses, all successful (the default when using the factory) assert func1.analysis_set.count() == 3 assert all(a.task_state == 'su' for a in func1.analysis_set.all()) # user2 shares surfaces, so user 1 should see surface1+surface2 surface2.share(user1) # # Now we change to the analysis card view and look what we get # assert client.login(username=user1.username, password=password) response = client.post(reverse("analysis:card"), data={ 'subjects_ids_json': subjects_to_json([topo1a, topo1b, topo2a]), 'function_id': func1.id, 'card_id': 1, 'template_flavor': 'list' }, HTTP_X_REQUESTED_WITH='XMLHttpRequest', follow=True) # Function should still have three analyses, all successful (the default when using the factory) assert func1.analysis_set.count() == 3 assert all(a.task_state == 'su' for a in func1.analysis_set.all()) assert response.status_code == 200 # We should see start times of all three topographies assert_in_content(response, '2019-01-01 12:00:00') # topo1a assert_in_content(response, '2019-01-01 13:00:00') # topo1b assert_in_content(response, '2019-01-01 14:00:00') # topo2a client.logout() # # user 2 cannot access results from topo1, it is not shared # assert client.login(username=user2.username, password=password) response = client.post(reverse("analysis:card"), data={ 'subjects_ids_json': subjects_to_json([topo1a, topo1b, topo2a]), 'function_id': func1.id, 'card_id': 1, 'template_flavor': 'list' }, HTTP_X_REQUESTED_WITH='XMLHttpRequest', follow=True) assert response.status_code == 200 assert_not_in_content(response, '2019-01-01 12:00:00') # topo1a assert_not_in_content(response, '2019-01-01 13:00:00') # topo1b assert_in_content(response, '2019-01-01 14:00:00') # topo2a client.logout()