Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 0 additions & 26 deletions backend/benefit/applications/api/v1/serializers/application.py
Original file line number Diff line number Diff line change
Expand Up @@ -981,32 +981,6 @@ def _validate_apprenticeship_program(
):
if status == ApplicationStatus.DRAFT:
return
if (
pay_subsidy_granted == PaySubsidyGranted.NOT_GRANTED
and apprenticeship_program not in [None, False]
):
raise serializers.ValidationError(
{
"apprenticeship_program": _(
"Apprenticeship program can not be selected if there is no"
" granted pay subsidy"
)
}
)

if (
pay_subsidy_granted
in [PaySubsidyGranted.GRANTED_AGED, PaySubsidyGranted.GRANTED]
and apprenticeship_program is None
):
raise serializers.ValidationError(
{
"apprenticeship_program": _(
"Apprenticeship program has to be yes or no if there is a"
" granted pay subsidy"
)
}
)

def get_latest_ahjo_status(self, obj) -> Union[str, None]:
"""Get the latest Ahjo status text for the application"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ def _set_up_decided_application():
co_operation_negotiations=True,
co_operation_negotiations_description="Very co-operation. Much contract.",
paper_application_date="2024-10-23",
pay_subsidy_granted=PaySubsidyGranted.GRANTED,
pay_subsidy_granted=PaySubsidyGranted.NOT_GRANTED,
application_origin=ApplicationOrigin.APPLICANT,
application_step=ApplicationStep.STEP_6,
batch=ApplicationBatchFactory(
Expand Down
80 changes: 27 additions & 53 deletions backend/benefit/applications/tests/test_applications_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -919,8 +919,8 @@ def test_application_edit_benefit_type_business(api_client, application):
data = ApplicantApplicationSerializer(application).data
data["benefit_type"] = BenefitType.EMPLOYMENT_BENEFIT
data["apprenticeship_program"] = False
data["pay_subsidy_granted"] = PaySubsidyGranted.GRANTED
data["pay_subsidy_percent"] = 50
data["pay_subsidy_granted"] = PaySubsidyGranted.NOT_GRANTED
data["pay_subsidy_percent"] = None
response = api_client.put(
get_detail_url(application),
data,
Expand Down Expand Up @@ -966,8 +966,8 @@ def test_application_edit_benefit_type_business_association(
data["benefit_type"] = BenefitType.EMPLOYMENT_BENEFIT
data["association_has_business_activities"] = True
data["apprenticeship_program"] = False
data["pay_subsidy_granted"] = PaySubsidyGranted.GRANTED
data["pay_subsidy_percent"] = 50
data["pay_subsidy_granted"] = PaySubsidyGranted.NOT_GRANTED
data["pay_subsidy_percent"] = None

response = api_client.put(
get_detail_url(association_application),
Expand All @@ -989,8 +989,8 @@ def test_application_edit_benefit_type_business_association_with_apprenticeship(
data["benefit_type"] = BenefitType.EMPLOYMENT_BENEFIT
data["association_has_business_activities"] = True
data["apprenticeship_program"] = True
data["pay_subsidy_granted"] = PaySubsidyGranted.GRANTED
data["pay_subsidy_percent"] = 50
data["pay_subsidy_granted"] = PaySubsidyGranted.NOT_GRANTED
data["pay_subsidy_percent"] = None

response = api_client.put(
get_detail_url(association_application),
Expand All @@ -1007,8 +1007,8 @@ def test_application_edit_benefit_type_business_association_with_apprenticeship(
def test_application_edit_benefit_type_non_business(
api_client, association_application
):
association_application.pay_subsidy_granted = PaySubsidyGranted.GRANTED
association_application.pay_subsidy_percent = 50
association_application.pay_subsidy_granted = PaySubsidyGranted.NOT_GRANTED
association_application.pay_subsidy_percent = None
association_application.save()
data = ApplicantApplicationSerializer(association_application).data
response = api_client.put(
Expand All @@ -1025,8 +1025,8 @@ def test_application_edit_benefit_type_non_business(
def test_application_edit_benefit_type_non_business_invalid(
api_client, association_application
):
association_application.pay_subsidy_granted = PaySubsidyGranted.GRANTED
association_application.pay_subsidy_percent = 50
association_application.pay_subsidy_granted = PaySubsidyGranted.NOT_GRANTED
association_application.pay_subsidy_percent = None
association_application.save()
data = ApplicantApplicationSerializer(association_application).data
data["benefit_type"] = BenefitType.EMPLOYMENT_BENEFIT
Expand Down Expand Up @@ -1101,8 +1101,8 @@ def test_application_date_range(
data["benefit_type"] = benefit_type
data["start_date"] = start_date
data["end_date"] = end_date
data["pay_subsidy_granted"] = PaySubsidyGranted.GRANTED
data["pay_subsidy_percent"] = 50
data["pay_subsidy_granted"] = PaySubsidyGranted.NOT_GRANTED
data["pay_subsidy_percent"] = None

response = api_client.put(
get_detail_url(application),
Expand Down Expand Up @@ -1211,8 +1211,8 @@ def test_submit_application_without_de_minimis_aid(
data["benefit_type"] = BenefitType.SALARY_BENEFIT
data["de_minimis_aid"] = de_minimis_aid
data["de_minimis_aid_set"] = de_minimis_aid_set
data["pay_subsidy_percent"] = "50"
data["pay_subsidy_granted"] = PaySubsidyGranted.GRANTED
data["pay_subsidy_percent"] = None
data["pay_subsidy_granted"] = PaySubsidyGranted.NOT_GRANTED
data["apprenticeship_program"] = False
data["association_has_business_activities"] = association_has_business_activities
if company_form_code == YtjOrganizationCode.ASSOCIATION_FORM_CODE_DEFAULT:
Expand All @@ -1233,15 +1233,9 @@ def test_submit_application_without_de_minimis_aid(
@pytest.mark.parametrize(
"pay_subsidy_granted,apprenticeship_program,draft_result,submit_result,",
[
(PaySubsidyGranted.GRANTED, True, 200, 200),
(PaySubsidyGranted.GRANTED, False, 200, 200),
(PaySubsidyGranted.GRANTED, None, 200, 400),
(PaySubsidyGranted.GRANTED_AGED, True, 200, 200),
(PaySubsidyGranted.GRANTED_AGED, False, 200, 200),
(PaySubsidyGranted.GRANTED_AGED, None, 200, 400),
(PaySubsidyGranted.NOT_GRANTED, None, 200, 200),
(PaySubsidyGranted.NOT_GRANTED, False, 200, 200),
(PaySubsidyGranted.NOT_GRANTED, True, 200, 400),
(PaySubsidyGranted.NOT_GRANTED, True, 200, 200),
],
)
@pytest.mark.django_db
Expand Down Expand Up @@ -1658,12 +1652,7 @@ def test_application_modified_at_non_draft(api_client, application, status):
"pay_subsidy_granted,pay_subsidy_percent,additional_pay_subsidy_percent,expected_code",
[
(PaySubsidyGranted.NOT_GRANTED, None, None, 200), # empty application
(PaySubsidyGranted.GRANTED, 50, None, 200), # one pay subsidy
(PaySubsidyGranted.GRANTED, 100, 30, 400), # two pay subsidies
(PaySubsidyGranted.NOT_GRANTED, 100, None, 400), # invalid
(PaySubsidyGranted.GRANTED, None, 50, 400), # invalid percent
(PaySubsidyGranted.GRANTED, 99, None, 400), # invalid choice
(PaySubsidyGranted.GRANTED, 50, 1, 400), # invalid percent
],
)
@pytest.mark.django_db
Expand Down Expand Up @@ -2030,16 +2019,15 @@ def test_attachment_requirements(
api_client, application, mock_get_organisation_roles_and_create_company
):
application.benefit_type = BenefitType.EMPLOYMENT_BENEFIT
application.pay_subsidy_granted = PaySubsidyGranted.GRANTED
application.pay_subsidy_percent = 50
application.pay_subsidy_granted = PaySubsidyGranted.NOT_GRANTED
application.pay_subsidy_percent = None
application.apprenticeship_program = False
application.company = mock_get_organisation_roles_and_create_company
application.save()
response = api_client.get(get_detail_url(application))
assert json.loads(json.dumps(response.data["attachment_requirements"])) == [
["employment_contract", "required"],
["helsinki_benefit_voucher", "optional"],
["pay_subsidy_decision", "required"],
]


Expand All @@ -2060,8 +2048,8 @@ def _submit_application(api_client, application):
def test_attachment_validation(request, api_client, application, settings):
settings.ENABLE_CLAMAV = False
application.benefit_type = BenefitType.EMPLOYMENT_BENEFIT
application.pay_subsidy_granted = PaySubsidyGranted.GRANTED
application.pay_subsidy_percent = 50
application.pay_subsidy_granted = PaySubsidyGranted.NOT_GRANTED
application.pay_subsidy_percent = None
application.apprenticeship_program = False
application.save()

Expand All @@ -2080,40 +2068,26 @@ def test_attachment_validation(request, api_client, application, settings):
)
assert response.status_code == 201
response = _submit_application(api_client, application)
assert str(response.data[0]) == "Application does not have required attachments"

application.refresh_from_db()
assert application.status == ApplicationStatus.DRAFT

# add last required attachment
response = _upload_pdf(
request,
api_client,
application,
attachment_type=AttachmentType.PAY_SUBSIDY_DECISION,
)
assert response.status_code == 201
response = _submit_application(api_client, application)
assert response.status_code == 200

application.refresh_from_db()
assert application.status == ApplicationStatus.RECEIVED


@pytest.mark.django_db
def test_purge_extra_attachments(request, api_client, application, settings):
settings.ENABLE_CLAMAV = False
application.benefit_type = BenefitType.SALARY_BENEFIT
application.pay_subsidy_granted = PaySubsidyGranted.GRANTED
application.pay_subsidy_percent = 50
application.pay_subsidy_granted = PaySubsidyGranted.NOT_GRANTED
application.pay_subsidy_percent = None
application.apprenticeship_program = False
application.save()

lots_of_attachments = [
AttachmentType.EMPLOYMENT_CONTRACT,
AttachmentType.PAY_SUBSIDY_DECISION,
AttachmentType.PAY_SUBSIDY_DECISION, # extra
AttachmentType.COMMISSION_CONTRACT, # extra
AttachmentType.EMPLOYMENT_CONTRACT,
AttachmentType.PAY_SUBSIDY_DECISION,
AttachmentType.PAY_SUBSIDY_DECISION, # extra
AttachmentType.COMMISSION_CONTRACT, # extra
AttachmentType.HELSINKI_BENEFIT_VOUCHER,
AttachmentType.EDUCATION_CONTRACT, # extra
Expand All @@ -2128,15 +2102,15 @@ def test_purge_extra_attachments(request, api_client, application, settings):

response = _submit_application(api_client, application)
assert response.status_code == 200
assert application.attachments.count() == 6
assert application.attachments.count() == 4


@pytest.mark.django_db
def test_employee_consent_upload(request, api_client, application, settings):
settings.ENABLE_CLAMAV = False
application.benefit_type = BenefitType.EMPLOYMENT_BENEFIT
application.pay_subsidy_granted = PaySubsidyGranted.GRANTED
application.pay_subsidy_percent = 50
application.pay_subsidy_granted = PaySubsidyGranted.NOT_GRANTED
application.pay_subsidy_percent = None
application.apprenticeship_program = False
application.save()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
[
(
BenefitType.SALARY_BENEFIT,
PaySubsidyGranted.GRANTED,
PaySubsidyGranted.NOT_GRANTED,
None,
BenefitType.SALARY_BENEFIT,
),
Expand Down Expand Up @@ -60,7 +60,7 @@ def test_application_break_association_business_activities(
def test_application_break_de_minimis_aid(api_client, association_application):
association_application.benefit_type = BenefitType.SALARY_BENEFIT
association_application.association_has_business_activities = True
association_application.pay_subsidy_granted = PaySubsidyGranted.GRANTED
association_application.pay_subsidy_granted = PaySubsidyGranted.NOT_GRANTED
association_application.pay_subsidy_percent = None
association_application.de_minimis_aid = True
association_application.save()
Expand Down Expand Up @@ -92,7 +92,7 @@ def test_application_break_pay_subsidy_no_business_activities(
# when association does not have business activities
association_application.benefit_type = BenefitType.SALARY_BENEFIT
association_application.association_has_business_activities = False
association_application.pay_subsidy_granted = PaySubsidyGranted.GRANTED
association_application.pay_subsidy_granted = PaySubsidyGranted.NOT_GRANTED
association_application.pay_subsidy_percent = None
association_application.save()

Expand Down Expand Up @@ -122,8 +122,8 @@ def test_application_break_pay_subsidy_with_business_activities(
# when association has business activities
association_application.benefit_type = BenefitType.SALARY_BENEFIT
association_application.association_has_business_activities = True
association_application.pay_subsidy_granted = PaySubsidyGranted.GRANTED
association_application.pay_subsidy_percent = 50
association_application.pay_subsidy_granted = PaySubsidyGranted.NOT_GRANTED
association_application.pay_subsidy_percent = None
association_application.de_minimis_aid = True
association_application.save()
association_application.de_minimis_aid_set.create(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ def test_application_with_previously_accepted_applications_and_previous_benefits
# previous, already granted benefits for the same employee+company
if class_name == Application:
decided_application = DecidedApplicationFactory(
pay_subsidy_granted=PaySubsidyGranted.GRANTED
pay_subsidy_granted=PaySubsidyGranted.NOT_GRANTED
)
decided_application.benefit_type = next(past_benefit_type_iterator)
decided_application.apprenticeship_program = next(
Expand All @@ -360,7 +360,7 @@ def test_application_with_previously_accepted_applications_and_previous_benefits
raise AssertionError("unexpected")

handling_application.apprenticeship_program = apprenticeship_program
handling_application.pay_subsidy_granted = PaySubsidyGranted.GRANTED
handling_application.pay_subsidy_granted = PaySubsidyGranted.NOT_GRANTED

handling_application.start_date = date(2021, 1, 1)
handling_application.calculation.start_date = date(2021, 1, 1)
Expand Down Expand Up @@ -401,8 +401,8 @@ def test_application_with_previously_accepted_applications_and_previous_benefits
data["benefit_type"] = benefit_type
data["start_date"] = date(2021, 7, 1)
data["end_date"] = date(2021, 12, 31)
data["pay_subsidy_granted"] = PaySubsidyGranted.GRANTED
data["pay_subsidy_percent"] = 50
data["pay_subsidy_granted"] = PaySubsidyGranted.NOT_GRANTED
data["pay_subsidy_percent"] = None

with translation.override("en"):
response = handler_api_client.put(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,14 @@ class Step2 extends WizardStep {
await this.clickSelectRadioButton(this.apprenticeshipProgramFalse);
}

public async fillApprenticeshipProgram(apprenticeshipProgram: boolean): Promise<void> {
if (apprenticeshipProgram) {
await this.clickSelectRadioButton(this.apprenticeshipProgramTrue);
return;
}
await this.clickSelectRadioButton(this.apprenticeshipProgramFalse);
}

public async fillBenefitPeriod(
startDate: string,
endDate: string
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ test.skip('New application', async () => {
await step2.isLoaded();

await step2.fillEmployeeInfo('Truu', 'Koos', '121148-8060');
await step2.fillPaidSubsidyGrant(false);
await step2.fillApprenticeshipProgram(false);

const currentYear: number = new Date().getFullYear();
await step2.fillBenefitPeriod(
`1.3.${currentYear}`,
Expand All @@ -70,7 +71,6 @@ test.skip('New application', async () => {
const step3 = new Step3();
await step3.isLoaded();
await step3.employmentContractNeeded();
await step3.paySubsidyDecisionNeeded();
await step3.helsinkiBenefitVoucherNeeded();

await step3.clickDeleteApplication();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ test('New application', async () => {
form.employee.otherExpenses,
form.employee.vacationMoney
);
await step2.fillPaidSubsidyGrant(true);
await step2.fillApprenticeshipProgram(true);

await step2.fillBenefitPeriod(form.employee.startDate, form.employee.endDate);

Expand All @@ -124,11 +124,9 @@ test('New application', async () => {
const step3 = new Step3();
await step3.isLoaded();
await step3.employmentContractNeeded();
await step3.paySubsidyDecisionNeeded();
await step3.helsinkiBenefitVoucherNeeded();
await step3.stageUploadFiles('sample.pdf', [
'#upload_attachment_employment_contract',
'#upload_attachment_pay_subsidy_decision',
'#upload_attachment_education_contract',
'#upload_attachment_helsinki_benefit_voucher',
]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ export const mapRequiredForm = (
testId: 'application-field-otherExpenses',
value: formatFloatToCurrency(form.employee.otherExpenses),
},
{ testId: 'application-field-paySubsidyGranted', value: 'Palkkatuki' },
//{ testId: 'application-field-paySubsidyGranted', value: 'Palkkatuki' },
{ testId: 'application-field-apprenticeshipProgram', value: null },
{ testId: 'application-field-startDate', value: form.employee.startDate },
{ testId: 'application-field-endDate', value: form.employee.endDate },
Expand Down
Loading
Loading