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
37 changes: 37 additions & 0 deletions legal-api/src/legal_api/resources/v2/business/business.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,43 @@ def post_businesses():
return saving_filings(identifier=bootstrap.identifier) # pylint: disable=no-value-for-parameter


@bp.route("/<string:identifier>/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("/<string:identifier>/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])
Expand Down
61 changes: 61 additions & 0 deletions legal-api/tests/unit/resources/v2/test_business.py
Original file line number Diff line number Diff line change
Expand Up @@ -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