Skip to content

Commit

Permalink
Merge pull request #429 from onaio/improve_test_coverage
Browse files Browse the repository at this point in the history
Improve Test Coverage
  • Loading branch information
lincmba authored Oct 13, 2023
2 parents ce7507e + c75fadd commit 19f57c9
Show file tree
Hide file tree
Showing 8 changed files with 854 additions and 52 deletions.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import json

from django.test import RequestFactory

from tally_ho.libs.permissions import groups
Expand All @@ -9,9 +11,9 @@
election_statistics_report
)
from tally_ho.libs.tests.test_base import (
create_electrol_race, create_result_form, create_station,\
create_reconciliation_form, create_sub_constituency, create_tally,\
create_region, create_constituency, create_office, create_result,\
create_electrol_race, create_result_form, create_station, \
create_reconciliation_form, create_sub_constituency, create_tally, \
create_region, create_constituency, create_office, create_result, \
create_candidates, TestBase, create_ballot
)
from tally_ho.libs.tests.fixtures.electrol_race_data import (
Expand All @@ -31,17 +33,18 @@ def setUp(self):
self.tally,
**electrol_races[0]
)
ballot = create_ballot(self.tally, electrol_race=self.electrol_race)
self.ballot = create_ballot(
self.tally, electrol_race=self.electrol_race)
self.region = create_region(tally=self.tally)
office = create_office(tally=self.tally, region=self.region)
self.office = create_office(tally=self.tally, region=self.region)
self.constituency = create_constituency(tally=self.tally)
self.sc =create_sub_constituency(
code=1, tally=self.tally, field_office='1', ballots=[ballot])
center, _ = Center.objects.get_or_create(
self.sc = create_sub_constituency(
code=1, tally=self.tally, field_office='1', ballots=[self.ballot])
self.center, _ = Center.objects.get_or_create(
code='1',
mahalla='1',
name='1',
office=office,
office=self.office,
region='1',
village='1',
active=True,
Expand All @@ -50,14 +53,14 @@ def setUp(self):
center_type=CenterType.GENERAL,
constituency=self.constituency)
self.station = create_station(
center=center, registrants=20, tally=self.tally)
center=self.center, registrants=20, tally=self.tally)
self.result_form = create_result_form(
tally=self.tally,
form_state=FormState.ARCHIVED,
office=office,
center=center,
office=self.office,
center=self.center,
station_number=self.station.station_number,
ballot=ballot)
ballot=self.ballot)
self.recon_form = create_reconciliation_form(
result_form=self.result_form,
user=self.user,
Expand Down Expand Up @@ -96,22 +99,83 @@ def test_generate_election_statistics(self):
'voters_in_counted_stations',
'percentage_turnout_in_stations_counted'
]
aggregate_keys = [
'stations_expected',
'stations_counted',
'registrants_in_stations_counted',
'voters_in_counted_stations',
]

for stat in election_stats:
for field in fields:
self.assertIn(field, stat)

aggregate = {}
for stat in election_stats:
for record, value in enumerate(stat):
if record in aggregate_keys:
if record in aggregate:
aggregate[record] += value
else:
aggregate[record] = value
def test_generate_overview_election_statistics(self):
"""
Test generate_overview_election_statistics function
"""
election_stats = \
election_statistics_report.generate_overview_election_statistics(
self.tally.id, 'Presidential')
fields = [
'male_voters_in_counted_stations',
'female_voters_in_counted_stations',
'unisex_voters_in_counted_stations',
'voters_in_counted_stations',
'male_total_registrants_in_counted_stations',
'female_total_registrants_in_counted_stations',
'unisex_total_registrants_in_counted_stations',
'total_registrants_in_counted_stations',
'percentage_of_stations_processed',
'male_projected_turnout_percentage',
'female_projected_turnout_percentage',
'unisex_projected_turnout_percentage',
'projected_turnout_percentage'
]
for field in fields:
self.assertIn(field, election_stats.keys())
self.assertEqual(election_stats['forms_expected'], 1)
self.assertEqual(election_stats['forms_counted'], 1)
self.assertEqual(election_stats['stations_expected'], 1)
create_result_form(
barcode='012345678',
tally=self.tally,
form_state=FormState.UNSUBMITTED,
office=self.office,
center=self.center,
station_number=self.station.station_number,
ballot=self.ballot,
serial_number=1,
name='Another Result Form'
)
election_stats = \
election_statistics_report.generate_overview_election_statistics(
self.tally.id, 'Presidential')
for k, v in election_stats.items():
if k in fields:
self.assertEqual(v, 0)

def test_election_statistics_data_view(self):
"""
Test ElectionStatisticsDataView
"""
view = election_statistics_report.ElectionStatisticsDataView.as_view()
request = self.factory.get(
'/reports/internal/election-statistics-data')
request.user = self.user
response = view(
request, tally_id=self.tally.id, election_level='Presidential')
data = json.loads(response.content.decode())['data'][0]

election_stats = \
election_statistics_report.generate_election_statistics(
self.tally.id, 'Presidential')
self.assertDictEqual(election_stats[0], data)

def test_election_statistics_report_view(self):
"""
Test ElectionStatisticsReportView
"""
view = election_statistics_report\
.ElectionStatisticsReportView.as_view()
request = self.factory.get(
'/reports/internal/election-statistics-report')
request.user = self.user
response = view(
request, tally_id=self.tally.id, election_level='Presidential')

self.assertEqual(response.status_code, 200)
Original file line number Diff line number Diff line change
Expand Up @@ -80,9 +80,9 @@ def setUp(self):
# create duplicate final results
create_result(self.result_form, result.candidate, self.user, votes)

def test_regions_reports_view(self):
def test_progress_reports_view(self):
"""
Test that the regions view returns the correct progress reports.
Test that the progress views returns the correct progress reports.
"""
# Regions
view = progress_reports.RegionsReportView.as_view()
Expand Down Expand Up @@ -189,3 +189,12 @@ def test_regions_reports_view(self):
self.assertEqual(
int(data[-1][ballot_name].split('/')[0]), ballot_record_total)

# progress_report
view = progress_reports.progress_report
request = self.factory.get('/data/progress-report-list/')
request.user = self.user
request.session = {'locale': 'en'}
response = view(
request,
tally_id=self.tally.pk)
self.assertEqual(response.status_code, 200)
62 changes: 61 additions & 1 deletion tally_ho/apps/tally/tests/views/test_clearance.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,17 @@
from django.test import RequestFactory
from django.utils import timezone

from tally_ho.apps.tally.models import Center
from tally_ho.apps.tally.models.result_form import ResultForm
from tally_ho.apps.tally.models.result_form_stats import ResultFormStats
from tally_ho.apps.tally.views import clearance as views
from tally_ho.apps.tally.views.super_admin import CreateResultFormView
from tally_ho.libs.models.enums.actions_prior import ActionsPrior
from tally_ho.libs.models.enums.center_type import CenterType
from tally_ho.libs.models.enums.form_state import FormState
from tally_ho.libs.models.enums.gender import Gender
from tally_ho.libs.permissions import groups
from tally_ho.libs.tests.fixtures.electrol_race_data import electrol_races
from tally_ho.libs.tests.test_base import (
create_ballot,
create_candidates,
Expand All @@ -23,7 +26,8 @@
create_result_form,
create_station,
create_tally,
TestBase,
TestBase, create_electrol_race, create_region, create_constituency,
create_sub_constituency,
)


Expand Down Expand Up @@ -844,3 +848,59 @@ def test_create_clearance_post_super(self):

barcode = barcode + 1
serial_number = serial_number + 1

def test_check_center_details_view(self):
self._create_and_login_user()
self._add_user_to_group(self.user, groups.TALLY_MANAGER)
tally = create_tally()
tally.users.add(self.user)
electrol_race = create_electrol_race(
tally,
**electrol_races[0]
)
ballot = create_ballot(tally, electrol_race=electrol_race)
region = create_region(tally=tally)
office = create_office(tally=tally, region=region)
constituency = create_constituency(tally=tally)
sc = \
create_sub_constituency(code=1, field_office='1', ballots=[ballot])
center, _ = Center.objects.get_or_create(
code='1',
mahalla='1',
name='1',
office=office,
region='1',
village='1',
active=True,
tally=tally,
sub_constituency=sc,
center_type=CenterType.GENERAL,
constituency=constituency
)
station = create_station(
center=center, registrants=20, tally=tally
)
result_form = create_result_form(
tally=tally,
form_state=FormState.ARCHIVED,
office=office,
center=center,
station_number=station.station_number,
ballot=ballot)
view = views.CheckCenterDetailsView.as_view()
request = self.factory.get('/')
request.user = self.user
request.session = {'result_form': result_form.id}
response = view(
request,
tally_id=tally.id
)
self.assertEqual(response.status_code, 200)
request = self.factory.post('/')
request.user = self.user
request.session = {'result_form': result_form.id}
response = view(
request,
tally_id=tally.id
)
self.assertEqual(response.status_code, 200)
Loading

0 comments on commit 19f57c9

Please sign in to comment.