#86 Edit deductions
* adds support for editing deductions * adds tests * improves major base test logic
This commit is contained in:
@@ -25,28 +25,31 @@ class EcoAccountViewTestCase(CompensationViewTestCase):
|
||||
@classmethod
|
||||
def setUpTestData(cls) -> None:
|
||||
super().setUpTestData()
|
||||
state = cls.create_dummy_states()
|
||||
cls.eco_account.before_states.set([state])
|
||||
cls.eco_account.after_states.set([state])
|
||||
|
||||
def setUp(self) -> None:
|
||||
super().setUp()
|
||||
state = self.create_dummy_states()
|
||||
self.eco_account.before_states.set([state])
|
||||
self.eco_account.after_states.set([state])
|
||||
|
||||
action = cls.create_dummy_action()
|
||||
cls.eco_account.actions.set([action])
|
||||
action = self.create_dummy_action()
|
||||
self.eco_account.actions.set([action])
|
||||
|
||||
# Prepare urls
|
||||
cls.index_url = reverse("compensation:acc:index", args=())
|
||||
cls.new_url = reverse("compensation:acc:new", args=())
|
||||
cls.new_id_url = reverse("compensation:acc:new-id", args=())
|
||||
cls.detail_url = reverse("compensation:acc:detail", args=(cls.eco_account.id,))
|
||||
cls.log_url = reverse("compensation:acc:log", args=(cls.eco_account.id,))
|
||||
cls.edit_url = reverse("compensation:acc:edit", args=(cls.eco_account.id,))
|
||||
cls.remove_url = reverse("compensation:acc:remove", args=(cls.eco_account.id,))
|
||||
cls.report_url = reverse("compensation:acc:report", args=(cls.eco_account.id,))
|
||||
cls.state_new_url = reverse("compensation:acc:new-state", args=(cls.eco_account.id,))
|
||||
cls.action_new_url = reverse("compensation:acc:new-action", args=(cls.eco_account.id,))
|
||||
cls.deadline_new_url = reverse("compensation:acc:new-deadline", args=(cls.eco_account.id,))
|
||||
cls.new_doc_url = reverse("compensation:acc:new-doc", args=(cls.eco_account.id,))
|
||||
cls.state_remove_url = reverse("compensation:acc:state-remove", args=(cls.eco_account.id, cls.comp_state.id,))
|
||||
cls.action_remove_url = reverse("compensation:acc:action-remove", args=(cls.eco_account.id, cls.comp_action.id,))
|
||||
self.index_url = reverse("compensation:acc:index", args=())
|
||||
self.new_url = reverse("compensation:acc:new", args=())
|
||||
self.new_id_url = reverse("compensation:acc:new-id", args=())
|
||||
self.detail_url = reverse("compensation:acc:detail", args=(self.eco_account.id,))
|
||||
self.log_url = reverse("compensation:acc:log", args=(self.eco_account.id,))
|
||||
self.edit_url = reverse("compensation:acc:edit", args=(self.eco_account.id,))
|
||||
self.remove_url = reverse("compensation:acc:remove", args=(self.eco_account.id,))
|
||||
self.report_url = reverse("compensation:acc:report", args=(self.eco_account.id,))
|
||||
self.state_new_url = reverse("compensation:acc:new-state", args=(self.eco_account.id,))
|
||||
self.action_new_url = reverse("compensation:acc:new-action", args=(self.eco_account.id,))
|
||||
self.deadline_new_url = reverse("compensation:acc:new-deadline", args=(self.eco_account.id,))
|
||||
self.new_doc_url = reverse("compensation:acc:new-doc", args=(self.eco_account.id,))
|
||||
self.state_remove_url = reverse("compensation:acc:state-remove", args=(self.eco_account.id, self.comp_state.id,))
|
||||
self.action_remove_url = reverse("compensation:acc:action-remove", args=(self.eco_account.id, self.comp_action.id,))
|
||||
|
||||
def test_logged_in_no_groups_shared(self):
|
||||
""" Check correct status code for all requests
|
||||
|
||||
@@ -11,7 +11,7 @@ from django.contrib.gis.geos import MultiPolygon
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from django.urls import reverse
|
||||
|
||||
from compensation.models import EcoAccount
|
||||
from compensation.models import EcoAccount, EcoAccountDeduction
|
||||
from konova.settings import ETS_GROUP, DEFAULT_GROUP
|
||||
from konova.tests.test_views import BaseWorkflowTestCase
|
||||
from user.models import UserAction
|
||||
@@ -168,7 +168,7 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
|
||||
self.assertIn(recorded, self.eco_account.log.all())
|
||||
self.assertEqual(pre_record_log_count + 1, self.eco_account.log.count())
|
||||
|
||||
def test_deductability(self):
|
||||
def test_new_deduction(self):
|
||||
"""
|
||||
This tests the deductability of an eco account.
|
||||
|
||||
@@ -187,7 +187,7 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
|
||||
test_surface = 10.00
|
||||
post_data = {
|
||||
"surface": test_surface,
|
||||
"account": self.id,
|
||||
"account": self.eco_account.id,
|
||||
"intervention": self.intervention.id,
|
||||
}
|
||||
# Perform request --> expect to fail
|
||||
@@ -228,4 +228,75 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
|
||||
self.assertEqual(pre_deduction_int_log_count + 1, self.intervention.log.count())
|
||||
self.assertTrue(self.intervention.log.first().action == UserAction.EDITED)
|
||||
|
||||
def test_edit_deduction(self):
|
||||
test_surface = self.eco_account.get_available_rest()[0]
|
||||
self.eco_account.set_recorded(self.superuser)
|
||||
self.eco_account.refresh_from_db()
|
||||
|
||||
deduction = EcoAccountDeduction.objects.create(
|
||||
intervention=self.intervention,
|
||||
account=self.eco_account,
|
||||
surface=0
|
||||
)
|
||||
self.assertEqual(1, self.intervention.deductions.count())
|
||||
self.assertEqual(1, self.eco_account.deductions.count())
|
||||
|
||||
# Prepare url and form data to be posted
|
||||
new_url = reverse("compensation:acc:edit-deduction", args=(self.eco_account.id, deduction.id))
|
||||
post_data = {
|
||||
"intervention": deduction.intervention.id,
|
||||
"account": deduction.account.id,
|
||||
"surface": test_surface,
|
||||
}
|
||||
pre_edit_intervention_log_count = self.intervention.log.count()
|
||||
pre_edit_account_log_count = self.eco_account.log.count()
|
||||
num_deductions_intervention = self.intervention.deductions.count()
|
||||
num_deductions_account = self.eco_account.deductions.count()
|
||||
|
||||
self.client_user.post(new_url, post_data)
|
||||
|
||||
self.intervention.refresh_from_db()
|
||||
self.eco_account.refresh_from_db()
|
||||
deduction.refresh_from_db()
|
||||
|
||||
self.assertEqual(num_deductions_intervention, self.intervention.deductions.count())
|
||||
self.assertEqual(num_deductions_account, self.eco_account.deductions.count())
|
||||
self.assertEqual(deduction.surface, test_surface)
|
||||
|
||||
# Expect logs to be set
|
||||
self.assertEqual(pre_edit_intervention_log_count + 1, self.intervention.log.count())
|
||||
self.assertEqual(pre_edit_account_log_count + 1, self.eco_account.log.count())
|
||||
self.assertEqual(self.intervention.log.first().action, UserAction.EDITED)
|
||||
self.assertEqual(self.eco_account.log.first().action, UserAction.EDITED)
|
||||
|
||||
def test_remove_deduction(self):
|
||||
intervention = self.deduction.intervention
|
||||
account = self.deduction.account
|
||||
|
||||
# Prepare url and form data to be posted
|
||||
new_url = reverse("compensation:acc:remove-deduction", args=(account.id, self.deduction.id))
|
||||
post_data = {
|
||||
"confirm": True,
|
||||
}
|
||||
|
||||
intervention.share_with(self.superuser)
|
||||
account.share_with(self.superuser)
|
||||
|
||||
pre_edit_intervention_log_count = intervention.log.count()
|
||||
pre_edit_account_log_count = account.log.count()
|
||||
num_deductions_intervention = intervention.deductions.count()
|
||||
num_deductions_account = account.deductions.count()
|
||||
|
||||
self.client_user.post(new_url, post_data)
|
||||
|
||||
intervention.refresh_from_db()
|
||||
account.refresh_from_db()
|
||||
|
||||
self.assertEqual(num_deductions_intervention - 1, intervention.deductions.count())
|
||||
self.assertEqual(num_deductions_account - 1, account.deductions.count())
|
||||
|
||||
# Expect logs to be set
|
||||
self.assertEqual(pre_edit_intervention_log_count + 1, intervention.log.count())
|
||||
self.assertEqual(pre_edit_account_log_count + 1, account.log.count())
|
||||
self.assertEqual(intervention.log.first().action, UserAction.EDITED)
|
||||
self.assertEqual(account.log.first().action, UserAction.EDITED)
|
||||
|
||||
Reference in New Issue
Block a user