diff --git a/legal-api/src/legal_api/resources/v2/business/business.py b/legal-api/src/legal_api/resources/v2/business/business.py index 152aba3b82..5df7f6904f 100644 --- a/legal-api/src/legal_api/resources/v2/business/business.py +++ b/legal-api/src/legal_api/resources/v2/business/business.py @@ -186,6 +186,43 @@ def post_businesses(): return saving_filings(identifier=bootstrap.identifier) # pylint: disable=no-value-for-parameter +@bp.route("//ar-reminder", methods=["GET"]) +@cross_origin(origin="*") +@jwt.requires_auth +def get_ar_reminder(identifier): + """Return send ar reminder flag.""" + if identifier.startswith("T"): + return {"message": "No information on temp registrations."}, 200 + + business = Business.find_by_identifier(identifier) + if not business: + return {"message": f"{identifier} not found"}, HTTPStatus.NOT_FOUND + + return {"arReminder": business.send_ar_ind}, HTTPStatus.OK + + +@bp.route("//ar-reminder", methods=["PUT"]) +@cross_origin(origin="*") +@jwt.requires_auth +def set_ar_reminder(identifier): + """Update send ar reminder flag.""" + if identifier.startswith("T"): + return {"message": "No information on temp registrations."}, 200 + + json_input = request.get_json() + ar_reminder = json_input.get("arReminder") + if not isinstance(ar_reminder, bool): + return {"message": "arReminder must be a boolean value"}, HTTPStatus.BAD_REQUEST + + business = Business.find_by_identifier(identifier) + if not business: + return {"message": f"{identifier} not found"}, HTTPStatus.NOT_FOUND + + business.send_ar_ind = ar_reminder + business.save() + return {"message": "arReminder flag updated"}, HTTPStatus.OK + + @bp.route("/search", methods=["POST"]) @cross_origin(origin="*") @jwt.requires_roles([SYSTEM_ROLE]) diff --git a/legal-api/tests/unit/resources/v2/test_business.py b/legal-api/tests/unit/resources/v2/test_business.py index 5319239c3f..d9ee615420 100644 --- a/legal-api/tests/unit/resources/v2/test_business.py +++ b/legal-api/tests/unit/resources/v2/test_business.py @@ -921,3 +921,64 @@ def test_get_could_file(session, client, jwt, monkeypatch): assert rv.json['couldFile']['filing']['filingTypes'] assert len(rv.json['couldFile']['filing']['filingTypes']) > 0 assert rv.json['couldFile']['filing']['filingTypes'] == expected + + +@pytest.mark.parametrize('identifier, ar_reminder, status, message', [ + ('BC7654321', False, HTTPStatus.OK, None), + ('BC7654321', True, HTTPStatus.OK, None), + ('T7654321', False, HTTPStatus.OK, 'No information on temp registrations.'), + ('BC1234567', False, HTTPStatus.NOT_FOUND, 'BC1234567 not found'), +]) +def test_get_ar_reminder(session, client, jwt, identifier, ar_reminder, status, message): + """Assert that get ar reminder returns expected value.""" + if identifier not in ('T7654321', 'BC1234567'): + business = factory_business_model(legal_name='legal_name', + identifier=identifier, + founding_date=datetime.utcfromtimestamp(0), + last_ledger_timestamp=datetime.utcfromtimestamp(0), + last_modified=datetime.utcfromtimestamp(0), + fiscal_year_end_date=None, + tax_id=None, + dissolution_date=None) + business.send_ar_ind = ar_reminder + business.save() + rv = client.get(f'/api/v2/businesses/{identifier}/ar-reminder', + headers=create_header(jwt, [STAFF_ROLE], identifier)) + + assert rv.status_code == status + if message is None: + assert rv.json['arReminder'] == ar_reminder + else: + assert rv.json['message'] == message + + +@pytest.mark.parametrize('identifier, ar_reminder, status, message', [ + ('BC7654321', False, HTTPStatus.OK, 'arReminder flag updated'), + ('BC7654321', True, HTTPStatus.OK, 'arReminder flag updated'), + ('BC7654321', 'True', HTTPStatus.BAD_REQUEST, 'arReminder must be a boolean value'), + ('BC7654321', 123, HTTPStatus.BAD_REQUEST, 'arReminder must be a boolean value'), + ('T7654321', False, HTTPStatus.OK, 'No information on temp registrations.'), + ('BC1234567', False, HTTPStatus.NOT_FOUND, 'BC1234567 not found'), +]) +def test_set_ar_reminder(session, client, jwt, identifier, ar_reminder, status, message): + """Assert that temp registration returns 200.""" + if identifier not in ('T7654321', 'BC1234567'): + business = factory_business_model(legal_name='legal_name', + identifier=identifier, + founding_date=datetime.utcfromtimestamp(0), + last_ledger_timestamp=datetime.utcfromtimestamp(0), + last_modified=datetime.utcfromtimestamp(0), + fiscal_year_end_date=None, + tax_id=None, + dissolution_date=None) + business.send_ar_ind = not ar_reminder + business.save() + rv = client.put(f'/api/v2/businesses/{identifier}/ar-reminder', + json={'arReminder': ar_reminder}, + headers=create_header(jwt, [STAFF_ROLE], identifier)) + + assert rv.status_code == status + assert rv.json['message'] == message + if message == 'arReminder flag updated': + business = Business.find_by_identifier(identifier) + assert business.send_ar_ind == ar_reminder