def test_filter_collecteddata_org_superuser(self): self.tola_user.user.is_staff = True self.tola_user.user.is_superuser = True self.tola_user.user.save() another_org = factories.Organization(name='Another Org') wkflvl1_1 = factories.WorkflowLevel1( organization=self.tola_user.organization) wkflvl1_2 = factories.WorkflowLevel1(organization=another_org) indicator1 = factories.Indicator(workflowlevel1=[wkflvl1_1]) indicator2 = factories.Indicator(workflowlevel1=[wkflvl1_2]) collecteddata1 = factories.CollectedData(data_uuid=111, indicator=indicator1) factories.CollectedData(data_uuid=222, indicator=indicator2) request = self.factory.get( '/api/collecteddata/?indicator__workflowlevel1__organization__id=%s' % self.tola_user.organization.pk) request.user = self.tola_user.user view = CollectedDataViewSet.as_view({'get': 'list'}) response = view(request) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.data), 1) self.assertEqual(response.data[0]['data_uuid'], str(collecteddata1.data_uuid))
def test_filter_indicator_program_admin(self): wflvl1_1 = factories.WorkflowLevel1() wflvl1_2 = factories.WorkflowLevel1( name='Population Health Initiative') indicator1_1 = factories.Indicator(workflowlevel1=[wflvl1_1]) factories.Indicator(name='Another Indicator', workflowlevel1=[wflvl1_2]) WorkflowTeam.objects.create( workflow_user=self.tola_user, workflowlevel1=wflvl1_1, role=factories.Group(name=ROLE_PROGRAM_ADMIN)) WorkflowTeam.objects.create( workflow_user=self.tola_user, workflowlevel1=wflvl1_2, role=factories.Group(name=ROLE_PROGRAM_ADMIN)) request = self.factory.get('/api/indicator/?workflowlevel1__name=%s' % wflvl1_1.name) request.user = self.tola_user.user view = IndicatorViewSet.as_view({'get': 'list'}) response = view(request) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.data), 1) self.assertEqual(response.data[0]['name'], indicator1_1.name)
def test_filter_collecteddata_indicator_org_admin(self): group_org_admin = factories.Group(name=ROLE_ORGANIZATION_ADMIN) self.tola_user.user.groups.add(group_org_admin) wkflvl1_1 = factories.WorkflowLevel1() wkflvl1_2 = factories.WorkflowLevel1() WorkflowTeam.objects.create(workflow_user=self.tola_user, workflowlevel1=wkflvl1_1) WorkflowTeam.objects.create(workflow_user=self.tola_user, workflowlevel1=wkflvl1_2) indicator1 = factories.Indicator(workflowlevel1=[wkflvl1_1]) indicator2 = factories.Indicator(workflowlevel1=[wkflvl1_2]) collecteddata1 = factories.CollectedData(data_uuid=111, indicator=indicator1) factories.CollectedData(data_uuid=222, indicator=indicator2) request = self.factory.get('/api/collecteddata/?indicator=%s' % indicator1.pk) request.user = self.tola_user.user view = CollectedDataViewSet.as_view({'get': 'list'}) response = view(request) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.data), 1) self.assertEqual(response.data[0]['data_uuid'], str(collecteddata1.data_uuid))
def test_delete_unexisting_indicator_raises_exception(self): org = Organization.objects.create(organization_uuid="not-existing-uuid") wflvl1 = factories.WorkflowLevel1(organization=org) indicator = factories.Indicator(workflowlevel1=[wflvl1]) self.indexer.delete_indicator(indicator) self.assertRaises(ValueNotFoundError, self.indexer.delete_indicator, indicator)
def test_update_indicator_program_team(self): request = self.factory.post('/api/indicator/') wflvl1 = factories.WorkflowLevel1( organization=self.tola_user.organization) WorkflowTeam.objects.create( workflow_user=self.tola_user, workflowlevel1=wflvl1, role=factories.Group(name=ROLE_PROGRAM_TEAM)) indicator = factories.Indicator(workflowlevel1=[wflvl1]) wflvl1_url = reverse('workflowlevel1-detail', kwargs={'pk': wflvl1.id}, request=request) data = { 'name': 'Number of beneficiaries registered', 'workflowlevel1': wflvl1_url } request = self.factory.post('/api/indicator/', data) request.user = self.tola_user.user view = IndicatorViewSet.as_view({'post': 'update'}) response = view(request, pk=indicator.pk) self.assertEqual(response.status_code, 200) indicator = Indicator.objects.get(pk=response.data['id']) self.assertEquals(indicator.name, data['name'])
def test_create_collecteddata_program_team(self): request = self.factory.post('/api/collecteddata/') wflvl1 = factories.WorkflowLevel1( organization=self.tola_user.organization) indicator = factories.Indicator(workflowlevel1=[wflvl1]) wflvl1_url = reverse('workflowlevel1-detail', kwargs={'pk': wflvl1.id}, request=request) indicator_url = reverse('indicator-detail', kwargs={'pk': indicator.id}, request=request) WorkflowTeam.objects.create( workflow_user=self.tola_user, workflowlevel1=wflvl1, role=factories.Group(name=ROLE_PROGRAM_TEAM)) data = {'indicator': indicator_url, 'workflowlevel1': wflvl1_url} request = self.factory.post('/api/collecteddata/', data) request.user = self.tola_user.user view = CollectedDataViewSet.as_view({'post': 'create'}) response = view(request) self.assertEqual(response.status_code, 201) self.assertEqual(response.data['indicator'], indicator_url)
def test_update_indicator_superuser(self): self.tola_user.user.is_staff = True self.tola_user.user.is_superuser = True self.tola_user.user.save() request = self.factory.post('/api/indicator/') wflvl1 = factories.WorkflowLevel1( organization=self.tola_user.organization) indicator = factories.Indicator(workflowlevel1=[wflvl1]) wflvl1_url = reverse('workflowlevel1-detail', kwargs={'pk': wflvl1.id}, request=request) data = { 'name': 'Number of beneficiaries registered', 'workflowlevel1': wflvl1_url } request = self.factory.post('/api/indicator/', data) request.user = self.tola_user.user view = IndicatorViewSet.as_view({'post': 'update'}) response = view(request, pk=indicator.pk) self.assertEqual(response.status_code, 200) indicator = Indicator.objects.get(pk=response.data['id']) self.assertEquals(indicator.name, data['name'])
def test_delete_indicator_normal_user(self): indicator = factories.Indicator() request = self.factory.delete('/api/indicator/') request.user = self.tola_user.user view = IndicatorViewSet.as_view({'delete': 'destroy'}) response = view(request, pk=indicator.pk) self.assertEquals(response.status_code, 403) Indicator.objects.get(pk=indicator.pk)
def test_filter_indicator_superuser(self): wflvl1_1 = factories.WorkflowLevel1() wflvl1_2 = factories.WorkflowLevel1( name='Population Health Initiative') indicator1_1 = factories.Indicator(workflowlevel1=[wflvl1_1]) factories.Indicator(name='Another Indicator', workflowlevel1=[wflvl1_2]) self.tola_user.user.is_staff = True self.tola_user.user.is_superuser = True self.tola_user.user.save() request = self.factory.get('/api/indicator/?workflowlevel1__name=%s' % wflvl1_1.name) request.user = self.tola_user.user view = IndicatorViewSet.as_view({'get': 'list'}) response = view(request) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.data), 1) self.assertEqual(response.data[0]['name'], indicator1_1.name)
def test_delete_indicator_diff_org_admin(self): group_org_admin = factories.Group(name=ROLE_ORGANIZATION_ADMIN) self.tola_user.user.groups.add(group_org_admin) another_org = factories.Organization(name='Another Org') wflvl1 = factories.WorkflowLevel1(organization=another_org) indicator = factories.Indicator(workflowlevel1=[wflvl1]) request = self.factory.delete('/api/indicator/') request.user = self.tola_user.user view = IndicatorViewSet.as_view({'delete': 'destroy'}) response = view(request, pk=indicator.pk) self.assertEquals(response.status_code, 403) Indicator.objects.get(pk=indicator.pk)
def test_list_indicator_org_admin(self): request = self.factory.get('/api/indicator/') group_org_admin = factories.Group(name=ROLE_ORGANIZATION_ADMIN) self.tola_user.user.groups.add(group_org_admin) another_org = factories.Organization(name='Another Org') wflvl1_1 = factories.WorkflowLevel1( organization=self.tola_user.organization) wflvl1_2 = factories.WorkflowLevel1(organization=another_org) wflvl1_3 = factories.WorkflowLevel1( organization=self.tola_user.organization) request.user = self.tola_user.user view = IndicatorViewSet.as_view({'get': 'list'}) response = view(request) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.data), 0) factories.Indicator(workflowlevel1=[wflvl1_1]) factories.Indicator(workflowlevel1=[wflvl1_2, wflvl1_3]) response = view(request) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.data), 2)
def test_delete_indicator_view_only(self): wflvl1 = factories.WorkflowLevel1( organization=self.tola_user.organization) WorkflowTeam.objects.create(workflow_user=self.tola_user, workflowlevel1=wflvl1, role=factories.Group(name=ROLE_VIEW_ONLY)) indicator = factories.Indicator(workflowlevel1=[wflvl1]) request = self.factory.delete('/api/indicator/') request.user = self.tola_user.user view = IndicatorViewSet.as_view({'delete': 'destroy'}) response = view(request, pk=indicator.pk) self.assertEquals(response.status_code, 403) Indicator.objects.get(pk=indicator.pk)
def test_delete_indicator_superuser(self): self.tola_user.user.is_staff = True self.tola_user.user.is_superuser = True self.tola_user.user.save() wflvl1 = factories.WorkflowLevel1() indicator = factories.Indicator(workflowlevel1=[wflvl1]) request = self.factory.delete('/api/indicator/') request.user = self.tola_user.user view = IndicatorViewSet.as_view({'delete': 'destroy'}) response = view(request, pk=indicator.pk) self.assertEquals(response.status_code, 204) self.assertRaises(Indicator.DoesNotExist, Indicator.objects.get, pk=indicator.pk)
def test_delete_indicator_org_admin(self): group_org_admin = factories.Group(name=ROLE_ORGANIZATION_ADMIN) self.tola_user.user.groups.add(group_org_admin) wflvl1 = factories.WorkflowLevel1( organization=self.tola_user.organization) indicator = factories.Indicator(workflowlevel1=[wflvl1]) request = self.factory.delete('/api/indicator/') request.user = self.tola_user.user view = IndicatorViewSet.as_view({'delete': 'destroy'}) response = view(request, pk=indicator.pk) self.assertEquals(response.status_code, 204) self.assertRaises(Indicator.DoesNotExist, Indicator.objects.get, pk=indicator.pk)
def test_delete_indicator_diff_org(self): another_org = factories.Organization(name='Another Org') wflvl1 = factories.WorkflowLevel1(organization=another_org) WorkflowTeam.objects.create( workflow_user=self.tola_user, workflowlevel1=wflvl1, role=factories.Group(name=ROLE_PROGRAM_ADMIN)) indicator = factories.Indicator(workflowlevel1=[wflvl1]) request = self.factory.delete('/api/indicator/') request.user = self.tola_user.user view = IndicatorViewSet.as_view({'delete': 'destroy'}) response = view(request, pk=indicator.pk) self.assertEquals(response.status_code, 403) Indicator.objects.get(pk=indicator.pk)
def test_list_indicator_normaluser(self): request = self.factory.get('/api/indicator/') wflvl1 = factories.WorkflowLevel1() WorkflowTeam.objects.create(workflow_user=self.tola_user, workflowlevel1=wflvl1) request.user = self.tola_user.user view = IndicatorViewSet.as_view({'get': 'list'}) response = view(request) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.data), 0) factories.Indicator(workflowlevel1=[wflvl1]) view = IndicatorViewSet.as_view({'get': 'list'}) response = view(request) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.data), 1)
def test_delete_indicator_program_admin(self): wflvl1 = factories.WorkflowLevel1( organization=self.tola_user.organization) WorkflowTeam.objects.create( workflow_user=self.tola_user, workflowlevel1=wflvl1, role=factories.Group(name=ROLE_PROGRAM_ADMIN)) indicator = factories.Indicator(workflowlevel1=[wflvl1]) request = self.factory.delete('/api/indicator/') request.user = self.tola_user.user view = IndicatorViewSet.as_view({'delete': 'destroy'}) response = view(request, pk=indicator.pk) self.assertEquals(response.status_code, 204) self.assertRaises(Indicator.DoesNotExist, Indicator.objects.get, pk=indicator.pk)
def test_list_indicator_program_team(self): request = self.factory.get('/api/indicator/') wflvl1 = factories.WorkflowLevel1( organization=self.tola_user.organization) WorkflowTeam.objects.create( workflow_user=self.tola_user, workflowlevel1=wflvl1, role=factories.Group(name=ROLE_PROGRAM_TEAM)) request.user = self.tola_user.user view = IndicatorViewSet.as_view({'get': 'list'}) response = view(request) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.data), 0) factories.Indicator(workflowlevel1=[wflvl1]) response = view(request) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.data), 1)
def test_list_collecteddata_program_admin(self): request = self.factory.get('/api/collecteddata/') wflvl1 = factories.WorkflowLevel1( organization=self.tola_user.organization) WorkflowTeam.objects.create( workflow_user=self.tola_user, workflowlevel1=wflvl1, role=factories.Group(name=ROLE_PROGRAM_ADMIN)) request.user = self.tola_user.user view = CollectedDataViewSet.as_view({'get': 'list'}) response = view(request) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.data), 0) indicator = factories.Indicator(workflowlevel1=[wflvl1]) factories.CollectedData(workflowlevel1=wflvl1, indicator=indicator) response = view(request) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.data), 1)
def test_create_collecteddata_superuser(self): self.tola_user.user.is_staff = True self.tola_user.user.is_superuser = True self.tola_user.user.save() request = self.factory.post('/api/collecteddata/') wflvl1 = factories.WorkflowLevel1() indicator = factories.Indicator(workflowlevel1=[wflvl1]) indicator_url = reverse('indicator-detail', kwargs={'pk': indicator.id}, request=request) data = {'indicator': indicator_url} request = self.factory.post('/api/collecteddata/', data) request.user = self.tola_user.user view = CollectedDataViewSet.as_view({'post': 'create'}) response = view(request) self.assertEqual(response.status_code, 201) self.assertEqual(response.data['indicator'], indicator_url)
def test_update_indicator_org_admin(self): group_org_admin = factories.Group(name=ROLE_ORGANIZATION_ADMIN) self.tola_user.user.groups.add(group_org_admin) request = self.factory.post('/api/indicator/') wflvl1 = factories.WorkflowLevel1( organization=self.tola_user.organization) indicator = factories.Indicator(workflowlevel1=[wflvl1]) wflvl1_url = reverse('workflowlevel1-detail', kwargs={'pk': wflvl1.id}, request=request) data = { 'name': 'Number of beneficiaries registered', 'workflowlevel1': wflvl1_url } request = self.factory.post('/api/indicator/', data) request.user = self.tola_user.user view = IndicatorViewSet.as_view({'post': 'update'}) response = view(request, pk=indicator.pk) self.assertEqual(response.status_code, 200) indicator = Indicator.objects.get(pk=response.data['id']) self.assertEquals(indicator.name, data['name'])
def test_create_collecteddata_org_admin(self): group_org_admin = factories.Group(name=ROLE_ORGANIZATION_ADMIN) self.tola_user.user.groups.add(group_org_admin) request = self.factory.post('/api/collecteddata/') wflvl1 = factories.WorkflowLevel1( organization=self.tola_user.organization) indicator = factories.Indicator(workflowlevel1=[wflvl1]) wflvl1_url = reverse('workflowlevel1-detail', kwargs={'pk': wflvl1.id}, request=request) indicator_url = reverse('indicator-detail', kwargs={'pk': indicator.id}, request=request) data = {'indicator': indicator_url, 'workflowlevel1': wflvl1_url} request = self.factory.post('/api/collecteddata/', data) request.user = self.tola_user.user view = CollectedDataViewSet.as_view({'post': 'create'}) response = view(request) self.assertEqual(response.status_code, 201) self.assertEqual(response.data['indicator'], indicator_url)