Verified Commit f15037c6 authored by urbec's avatar urbec 🐣 Committed by Mattia Rizzolo
Browse files

process: add test cases for the calculation of the AM slots



includes a currently failing test for a bug.

Signed-off-by: Mattia Rizzolo's avatarMattia Rizzolo <mattia@debian.org>
parent 53e211f1
Pipeline #264489 passed with stage
in 5 minutes and 7 seconds
......@@ -4,8 +4,9 @@ from django.utils.timezone import now
from django.core import mail
from backend import const
import process.models as pmodels
import backend.models as bmodels
from unittest.mock import patch
from process.unittest import ProcessFixtureMixin
from process.unittest import (ProcessFixtureMixin, test_fingerprint1, test_fpr1_signed_valid_text)
from process import ops as pops
......@@ -156,3 +157,77 @@ class TestProcessAMUnassign(ProcessFixtureMixin, TestCase):
response = client.post(reverse("process_unassign_am", args=[self.processes.app.pk]))
self.assertPermissionDenied(response)
self.assertEqual(len(ops), 0)
class TestAMSlots(ProcessFixtureMixin, TestCase):
@classmethod
def setUpClass(cls):
super(TestAMSlots, cls).setUpClass()
cls.processes.create("dc", person=cls.persons.dc, applying_for=const.STATUS_DD_U, fd_comment="yatest")
cls.fingerprints.create("dc", person=cls.persons.dc, fpr=test_fingerprint1, is_active=True, audit_skip=True)
def check_amlist(self, args):
# get list of all AMs, wether free or not
am_list = bmodels.AM.list_available(False)
for am in am_list:
if am.person_id == args["am_person_id"]:
self.assertEqual(args["stats_active_expected_value"], am.stats_active)
self.assertEqual(args["stats_held_expected_value"], am.stats_held)
self.assertEqual(args["stats_free_expected_value"], am.stats_free)
def test_slots(self):
# default with AM idle and having one slot
self.assertEqual(1, self.ams.activeam.slots)
self.check_amlist({"am_person_id": self.ams.activeam.person_id,
"stats_active_expected_value": 0,
"stats_held_expected_value": 0,
"stats_free_expected_value": 1})
# assign to process
o = pops.ProcessAssignAM(audit_author=self.persons.fd, process=self.processes.dc, am=self.ams.activeam)
o.execute()
self.check_amlist({"am_person_id": self.ams.activeam.person_id,
"stats_active_expected_value": 1,
"stats_held_expected_value": 0,
"stats_free_expected_value": 0})
# hold process
o = pops.ProcessPause(audit_author=self.persons.fd, audit_notes="set on hold", process=self.processes.dc)
o.execute()
self.check_amlist({"am_person_id": self.ams.activeam.person_id,
"stats_active_expected_value": 0,
"stats_held_expected_value": 1,
"stats_free_expected_value": 1})
# unhold process
o = pops.ProcessUnpause(audit_author=self.persons.fd, audit_notes="remove hold", process=self.processes.dc)
o.execute()
self.check_amlist({"am_person_id": self.ams.activeam.person_id,
"stats_active_expected_value": 1,
"stats_held_expected_value": 0,
"stats_free_expected_value": 0})
# close process
o = pops.ProcessClose(audit_author=self.persons.fd, audit_notes="close process", process=self.processes.dc)
o.execute()
self.check_amlist({"am_person_id": self.ams.activeam.person_id,
"stats_active_expected_value": 0,
"stats_held_expected_value": 0,
"stats_free_expected_value": 1})
# reopen process
process = self.processes.dc
process.closed_by = None
process.closed_time = None
process.save()
self.check_amlist({"am_person_id": self.ams.activeam.person_id,
"stats_active_expected_value": 1,
"stats_held_expected_value": 0,
"stats_free_expected_value": 0})
# FIXME XFAIL: https://bugs.debian.org/956898
# add signed statement for AM report
# req = self.processes.dc.requirements.get(type="am_ok")
# self.statements.create("am_ok", requirement=req, fpr=self.fingerprints.dc,
# statement=test_fpr1_signed_valid_text, uploaded_by=self.persons.activeam,
# uploaded_time=now())
# o = pops.ProcessStatementAdd(audit_author=self.persons.activeam, requirement=req, statement="am_ok")
# o.execute()
# self.check_amlist({"am_person_id": self.ams.activeam.person_id,
# "stats_active_expected_value": 0,
# "stats_held_expected_value": 0,
# "stats_free_expected_value": 1})
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment