Skip to content

Commit

Permalink
Update tests
Browse files Browse the repository at this point in the history
  • Loading branch information
bmarika committed Mar 21, 2016
1 parent ef5dd22 commit b74da34
Show file tree
Hide file tree
Showing 13 changed files with 136 additions and 89 deletions.
34 changes: 0 additions & 34 deletions common/filters/ordering_filter.py

This file was deleted.

3 changes: 2 additions & 1 deletion facilities/filters/facility_filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,8 @@ class FacilityServiceRatingFilter(CommonFieldsFilterset):
name="facility_service__facility__ward__constituency__county",
lookup_type='exact')
constituency = django_filters.AllValuesFilter(
name="facility_service__facility__ward__constituency", lookup_type='exact')
name="facility_service__facility__ward__constituency",
lookup_type='exact')
ward = django_filters.AllValuesFilter(
name="facility_service__facility__ward", lookup_type='exact')

Expand Down
1 change: 0 additions & 1 deletion facilities/migrations/mat_view.sql
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ facilities_owner.name as owner_name,facilities_owner.id as owner,
facilities_ownertype.name as owner_type_name,facilities_ownertype.id as owner_type,
facilities_regulatingbody.name as regulatory_body_name,facilities_regulatingbody.id as regulatory_body,
facilities_facilitystatus.name as operation_status_name, facilities_facilitystatus.id as operation_status,
facilities_facilitystatus.is_public_visible as is_public_visible,
array(select distinct service_id from facilities_facilityservice where facilities_facilityservice.facility_id=facilities_facility.id) as services,
array(select distinct category_id from facilities_facilityservice inner join facilities_service on facilities_service.id=facilities_facilityservice.service_id where facilities_facilityservice.facility_id=facilities_facility.id) as categories

Expand Down
17 changes: 17 additions & 0 deletions facilities/migrations/update_export_facilities_material_view.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# -*- coding: utf-8 -*-
import os
from django.db import models, migrations
from facilities.models import Facility

with open(os.path.dirname(__file__)+'/updated_mat_view.sql') as f:
mat_view_sql = f.read()

class Migration(migrations.Migration):

dependencies = [
('facilities', '0007_facilitystatus_is_public_visible'),
]

operations = [
migrations.RunSQL(mat_view_sql),
]
50 changes: 50 additions & 0 deletions facilities/migrations/updated_mat_view.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
DROP MATERIALIZED VIEW IF EXISTS facilities_excel_export;

CREATE MATERIALIZED VIEW facilities_excel_export AS
SELECT facilities_facility.id as id, facilities_facility.search as search,
facilities_facility.name as name, facilities_facility.code as code,
facilities_facility.registration_number, facilities_facility.number_of_beds as beds,
facilities_facility.number_of_cots as cots, common_ward.name as ward_name,
common_ward.id as ward,facilities_facility.approved,facilities_facility.created,
facilities_facility.open_whole_day, facilities_facility.open_public_holidays,
facilities_facility.open_weekends, facilities_facility.open_late_night,
facilities_facility.closed, facilities_facility.is_published,
common_county.name as county_name, common_county.id as county,
common_constituency.name as constituency_name,common_constituency.id as constituency,
common_subcounty.name as sub_county_name,common_subcounty.id as sub_county,
facilities_facilitytype.name as facility_type_name, facilities_facilitytype.id as facility_type,
facilities_kephlevel.name as keph_level_name,facilities_kephlevel.id as keph_level,
facilities_owner.name as owner_name,facilities_owner.id as owner,
facilities_ownertype.name as owner_type_name,facilities_ownertype.id as owner_type,
facilities_regulatingbody.name as regulatory_body_name,facilities_regulatingbody.id as regulatory_body,
facilities_facilitystatus.name as operation_status_name, facilities_facilitystatus.id as operation_status,
facilities_facilitystatus.is_public_visible as is_public_visible,
array(select distinct service_id from facilities_facilityservice where facilities_facilityservice.facility_id=facilities_facility.id) as services,
array(select distinct category_id from facilities_facilityservice inner join facilities_service on facilities_service.id=facilities_facilityservice.service_id where facilities_facilityservice.facility_id=facilities_facility.id) as categories

FROM facilities_facility
LEFT JOIN facilities_kephlevel ON facilities_kephlevel.id = facilities_facility.keph_level_id
LEFT JOIN facilities_owner ON facilities_owner.id = facilities_facility.owner_id
LEFT JOIN facilities_ownertype ON facilities_owner.owner_type_id = facilities_ownertype.id
LEFT JOIN facilities_facilitytype ON facilities_facilitytype.id = facilities_facility.facility_type_id
LEFT JOIN facilities_regulatingbody ON facilities_regulatingbody.id = facilities_facility.regulatory_body_id
LEFT JOIN facilities_facilitystatus ON facilities_facilitystatus.id = facilities_facility.operation_status_id
LEFT JOIN common_ward ON common_ward.id = facilities_facility.ward_id
LEFT JOIN common_constituency ON common_constituency.id = common_ward.constituency_id
LEFT JOIN common_subcounty ON common_subcounty.id = common_ward.sub_county_id
LEFT JOIN common_county ON common_county.id = common_constituency.county_id;

DROP TRIGGER IF EXISTS refresh_mat_view ON facilities_facility;
create or replace function refresh_mat_view()
returns trigger language plpgsql
as $$
begin
refresh materialized view facilities_excel_export;
return null;
end $$;


create trigger refresh_mat_view
after insert or update or delete or truncate
on facilities_facility for each statement
execute procedure refresh_mat_view();
21 changes: 14 additions & 7 deletions facilities/tests/test_facility_filtering.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
from model_mommy import mommy

from users.models import MflUser
from facilities.models import Facility, FacilityApproval
from facilities.models import (
Facility, FacilityApproval, FacilityStatus
)
from facilities.tests.test_facility_views import load_dump
from facilities.serializers import FacilitySerializer

Expand Down Expand Up @@ -57,8 +59,10 @@ def setUp(self):

def test_public_cant_see_unpublished_facilities(self):
mommy.make(Facility)
op_status = mommy.make(FacilityStatus, is_public_visible=True)
mommy.make(Facility, rejected=True)
facility_2 = mommy.make(Facility)
facility_2 = mommy.make(
Facility, operation_status=op_status)
mommy.make(FacilityApproval, facility=facility_2)
self.assertTrue(facility_2.approved)
facility_2.is_published = True
Expand All @@ -70,7 +74,7 @@ def test_public_cant_see_unpublished_facilities(self):
self.assertEquals(200, admin_response.status_code)
self.assertEquals(3, admin_response.data.get("count"))

# test public user sees only published facilties
# test public user sees only published facilities
self.client.logout()
self.client.force_authenticate(self.public_user)
public_response = self.client.get(self.url)
Expand All @@ -84,7 +88,9 @@ def test_public_cant_see_unpublished_facilities(self):

def test_public_cant_see_unapproved_facilities(self):
mommy.make(Facility)
facility_2 = mommy.make(Facility, approved=True)
op_status = mommy.make(FacilityStatus, is_public_visible=True)
facility_2 = mommy.make(
Facility, approved=True, operation_status=op_status)
mommy.make(FacilityApproval, facility=facility_2)
facility_2.is_published = True
facility_2.save()
Expand All @@ -95,7 +101,7 @@ def test_public_cant_see_unapproved_facilities(self):
self.assertEquals(200, admin_response.status_code)
self.assertEquals(2, admin_response.data.get("count"))

# test public user sees only approved facilties
# test public user sees only approved facilities
self.client.logout()
self.client.force_authenticate(self.public_user)
public_response = self.client.get(self.url)
Expand All @@ -107,7 +113,8 @@ def test_public_cant_see_unapproved_facilities(self):

def test_public_cant_see_classified_facilities(self):
mommy.make(Facility, is_classified=True)
facility_2 = mommy.make(Facility)
op_status = mommy.make(FacilityStatus, is_public_visible=True)
facility_2 = mommy.make(Facility, operation_status=op_status)
mommy.make(FacilityApproval, facility=facility_2)
facility_2.is_published = True
facility_2.save()
Expand All @@ -118,7 +125,7 @@ def test_public_cant_see_classified_facilities(self):
self.assertEquals(200, admin_response.status_code)
self.assertEquals(2, admin_response.data.get("count"))

# test public user sees only non classified facilties
# test public user sees only non classified facilities
self.client.logout()
self.client.force_authenticate(self.public_user)
public_response = self.client.get(self.url)
Expand Down
7 changes: 5 additions & 2 deletions facilities/tests/test_facility_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -980,7 +980,7 @@ def test_get_dashboard_as_county_user(self):
],
"constituencies_summary": [
{
"name": str(constituency.name),
"name": str(sub_county.name),
"count": 1,
"chu_count": 0
}
Expand Down Expand Up @@ -1019,7 +1019,7 @@ def test_get_dashboard_as_sub_county_user(self):
self.user.save()
constituency = mommy.make(
Constituency, county=self.user.county)
sub_county = mommy.make(SubCounty, county=County)
sub_county = mommy.make(SubCounty, county=self.user.county)
ward = mommy.make(
Ward, constituency=constituency, sub_county=sub_county)
facility_type = mommy.make(FacilityType)
Expand All @@ -1029,6 +1029,9 @@ def test_get_dashboard_as_sub_county_user(self):
mommy.make(
UserConstituency, created_by=self.user, updated_by=self.user,
user=user, constituency=constituency)
mommy.make(
UserSubCounty, created_by=self.user, updated_by=self.user,
user=user, sub_county=sub_county)
mommy.make(
Facility,
ward=ward,
Expand Down
2 changes: 1 addition & 1 deletion reporting/facility_reports.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
KephLevel,
FacilityUpgrade)
from common.constants import TRUTH_NESS, FALSE_NESS
from common.models import County, Constituency, Ward, SubCounty
from common.models import County, Constituency, Ward
from chul.models import CommunityHealthUnit, Status

from .report_config import REPORTS
Expand Down
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ DJANGO_SETTINGS_MODULE=config.settings
django_find_project = false

[flake8]
max-complexity = 13
max-complexity = 14
exclude = migrations,docs,data_bootstrap,dist,build,.git

[testenv]
Expand Down
12 changes: 5 additions & 7 deletions users/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from django.db import transaction
from django.utils import timezone
from django.contrib.auth.models import Permission
from django.contrib.auth.models import Permission, Group

from rest_framework import serializers
from rest_framework.exceptions import ValidationError
Expand Down Expand Up @@ -115,11 +115,10 @@ class GroupSerializer(PartialResponseMixin, serializers.ModelSerializer):

def update_users_in_group(self, instance):

group = Group.objects.get(id=instance.id)
for user in MflUser.objects.all():
if instance in user.groups.all():
user.is_staff = True
else:
user.is_staff = False
user.is_staff = True if group in \
user.groups.all() else False
user.save()

@transaction.atomic
Expand All @@ -145,8 +144,7 @@ def create(self, validated_data):
'sub_county_level': sub_county_level,
"group": new_group
}
custom_grp = CustomGroup.objects.create(**custom_group_data)
self.update_users_in_group(custom_grp)
CustomGroup.objects.create(**custom_group_data)

return new_group

Expand Down
9 changes: 6 additions & 3 deletions users/tests/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,15 +138,17 @@ def test_session_login(self):

def test_oauth2_login(self):
client = Client()
resp = client.post(reverse("token"), self.oauth2_payload)
resp = client.post(
reverse("oauth2_provider:token"), self.oauth2_payload)
self.assertEqual(resp.status_code, 200)
self.assertIn("access_token", json.loads(resp.content))
self.assertIsNotNone(self.user.lastlog)
self.assertIsNone(self.user.last_login)

def test_oauth2_login_then_session_login(self):
token_client = Client()
resp = token_client.post(reverse("token"), self.oauth2_payload)
resp = token_client.post(
reverse("oauth2_provider:token"), self.oauth2_payload)
self.assertEqual(resp.status_code, 200)
self.assertIn("access_token", json.loads(resp.content))

Expand All @@ -160,7 +162,8 @@ def test_session_login_then_oauth2_login(self):
self.user.save()

token_client = Client()
resp = token_client.post(reverse("token"), self.oauth2_payload)
resp = token_client.post(
reverse("oauth2_provider:token"), self.oauth2_payload)
self.assertEqual(resp.status_code, 200)
self.assertIn("access_token", json.loads(resp.content))

Expand Down
Loading

0 comments on commit b74da34

Please sign in to comment.