def test_ts_from_iso_format(): """Assert that creating a UTC datetime object from an ISO date-time formatted string is performing as expected.""" test_ts = model_utils.ts_from_iso_format('2021-02-16T23:00:00-08:00') print('Test timestamp: ' + model_utils.format_ts(test_ts)) assert test_ts.day == 17 assert test_ts.month == 2 assert test_ts.year == 2021 assert test_ts.hour == 7 assert test_ts.minute == 0 assert test_ts.second == 0 test_ts = model_utils.ts_from_iso_format('2021-02-16T23:00:00+00:00') print('Test timestamp: ' + model_utils.format_ts(test_ts)) assert test_ts.day == 16 assert test_ts.hour == 23 test_ts = model_utils.ts_from_iso_format('2021-02-16T13:00:00-08:00') # print('Test timestamp: ' + model_utils.format_ts(test_ts)) assert test_ts.day == 16 assert test_ts.hour == 21 test_ts = model_utils.ts_from_iso_format('2021-03-31T23:00:00-08:00') # print('Test timestamp: ' + model_utils.format_ts(test_ts)) assert test_ts.month == 4 assert test_ts.day == 1 assert test_ts.hour == 7
def test_expiry_date_rl(session, registration_ts, expiry_ts): """Assert that computing an RL expiry ts from registraton ts works as expected.""" reg_ts = model_utils.ts_from_iso_format(registration_ts) expiry_test = model_utils.expiry_dt_repairer_lien(reg_ts) expiry_iso = model_utils.format_ts(expiry_test) # print(registration_ts + ', ' + model_utils.format_ts(reg_ts) + ', ' + expiry_iso) assert expiry_ts == expiry_iso
def validate_query(json_data): """Perform any extra data validation here, either because it is too complicated for the schema. Or because it requires existing data. """ error_msg = '' # validate search type - criteria combinations search_type = json_data['type'] if search_type not in ('INDIVIDUAL_DEBTOR', 'BUSINESS_DEBTOR'): if 'value' not in json_data['criteria']: error_msg += f'Search criteria value is required for search type {search_type}. ' else: if 'debtorName' not in json_data['criteria']: error_msg += f'Search criteria debtorName is required for search type {search_type}. ' elif search_type == 'INDIVIDUAL_DEBTOR' and 'last' not in json_data[ 'criteria']['debtorName']: error_msg += f'Search criteria debtorName last is required for search type {search_type}. ' elif search_type == 'BUSINESS_DEBTOR' and 'business' not in json_data[ 'criteria']['debtorName']: error_msg += f'Search criteria debtorName businessName is required for search type {search_type}. ' # Verify the start and end dates. if 'startDateTime' in json_data or 'startDateTime' in json_data: now = model_utils.now_ts() ts_start = None ts_end = None if 'startDateTime' in json_data: ts_start = model_utils.ts_from_iso_format( json_data['startDateTime']) if ts_start > now: error_msg = error_msg + 'Search startDateTime invalid: it cannot be in the future. ' if 'endDateTime' in json_data: ts_end = model_utils.ts_from_iso_format( json_data['endDateTime']) if ts_end > now: error_msg = error_msg + 'Search endDateTime invalid: it cannot be in the future. ' if ts_start and ts_end and ts_start > ts_end: error_msg = error_msg + 'Search date range invalid: startDateTime cannot be after endDateTime. ' if error_msg != '': raise BusinessException(error=error_msg, status_code=HTTPStatus.BAD_REQUEST)
def test_to_local_timezone(session, desc, utc_ts, local_ts): """Assert that converting UTC time to local time is performing as expected.""" adjusted_ts = model_utils.to_local_timestamp( model_utils.ts_from_iso_format(utc_ts)) local_iso = adjusted_ts.isoformat() print(utc_ts + ' ' + local_iso + ' ' + local_ts) assert adjusted_ts.hour == 23 assert adjusted_ts.minute == 59 assert adjusted_ts.second == 59 assert local_iso == local_ts
def test_expiry_dt_from_registration(session, desc, registration_ts, life_years, hour): """Assert that creating an expiry timestamp from a registration timestamp is performing as expected.""" test_ts = model_utils.ts_from_iso_format(registration_ts) expiry_ts = model_utils.expiry_dt_from_registration(test_ts, life_years) print(model_utils.format_ts(expiry_ts)) assert expiry_ts.year - test_ts.year == life_years assert expiry_ts.hour == hour assert expiry_ts.minute == 59 assert expiry_ts.second == 59
def test_valid_court_order_date(session, financing_ts, renewal_ts, today_offset, valid): """Assert that checking a RL renewal court order date works as expected.""" reg_ts = model_utils.ts_from_iso_format(financing_ts) test_renew_ts = renewal_ts if not test_renew_ts: now_offset = model_utils.now_ts_offset(today_offset, True) test_renew_ts = model_utils.format_ts(now_offset) test_valid = model_utils.valid_court_order_date(reg_ts, test_renew_ts) # print(financing_ts + ' ' + test_renew_ts) assert test_valid == valid
def test_expiry_date_renew_rl(session, desc, registration_ts, renew_count, expiry_ts): """Assert that computing multiple RL renewal expiry ts from registration ts works as expected.""" reg_ts = model_utils.ts_from_iso_format(registration_ts) expiry_test = model_utils.expiry_dt_repairer_lien(reg_ts) # print(model_utils.format_ts(expiry_test)) if renew_count > 0: for x in range(renew_count): expiry_test = model_utils.expiry_dt_repairer_lien(expiry_test) # print(model_utils.format_ts(expiry_test)) expiry_iso = model_utils.format_ts(expiry_test) assert expiry_ts == expiry_iso
def _to_report_datetime(date_time: str, include_time: bool = True, expiry: bool = False): """Convert ISO formatted date time or date string to report format.""" local_datetime = model_utils.to_local_timestamp(model_utils.ts_from_iso_format(date_time)) if expiry and local_datetime.hour != 23: # Expiry dates 15+ years in the future are not ajdusting for DST. offset = 23 - local_datetime.hour local_datetime = local_datetime + timedelta(hours=offset) if include_time: timestamp = local_datetime.strftime('%B %-d, %Y at %-I:%M:%S %p Pacific time') if timestamp.find(' AM ') > 0: return timestamp.replace(' AM ', ' am ') return timestamp.replace(' PM ', ' pm ') return local_datetime.strftime('%B %-d, %Y')
def test_expiry_date_add(session, registration_ts, add_1, add_2, add_3, expiry_ts): """Assert that computing an renewal non-RL expiry ts from registraton ts works as expected.""" reg_ts = model_utils.ts_from_iso_format(registration_ts) expiry_add_1 = model_utils.expiry_dt_from_years(add_1, registration_ts) assert expiry_add_1.year - add_1 == reg_ts.year assert expiry_add_1.hour in (6, 7) assert expiry_add_1.minute == 59 assert expiry_add_1.second == 59 expiry_add_2 = model_utils.expiry_dt_add_years(expiry_add_1, add_2) assert expiry_add_2.year - expiry_add_1.year == add_2 assert expiry_add_2.hour in (6, 7) assert expiry_add_2.minute == 59 assert expiry_add_2.second == 59 expiry_add_3 = model_utils.expiry_dt_add_years(expiry_add_2, add_3) assert expiry_add_3.year - expiry_add_2.year == add_3 assert expiry_add_3.hour in (6, 7) assert expiry_add_3.minute == 59 assert expiry_add_3.second == 59 expiry_iso = model_utils.format_ts(expiry_add_3) # print(registration_ts + ', ' + model_utils.format_ts(reg_ts) + ', ' + expiry_iso) assert expiry_ts == expiry_iso