def test_fetch_service_data_retention_by_id(sample_service): email_data_retention = insert_service_data_retention( sample_service.id, 'email', 3) insert_service_data_retention(sample_service.id, 'sms', 13) result = fetch_service_data_retention_by_id(sample_service.id, email_data_retention.id) assert result == email_data_retention
def test_insert_service_data_retention_throws_unique_constraint( sample_service): insert_service_data_retention(service_id=sample_service.id, notification_type='email', days_of_retention=3) with pytest.raises(expected_exception=IntegrityError): insert_service_data_retention(service_id=sample_service.id, notification_type='email', days_of_retention=5)
def test_fetch_service_data_retention_only_returns_row_for_service(sample_service): another_service = create_service(service_name="Another service") email_data_retention = insert_service_data_retention(sample_service.id, 'email', 3) letter_data_retention = insert_service_data_retention(sample_service.id, 'letter', 30) insert_service_data_retention(another_service.id, 'sms', 5) list_of_data_retention = fetch_service_data_retention(sample_service.id) assert len(list_of_data_retention) == 2 assert list_of_data_retention[0] == email_data_retention assert list_of_data_retention[1] == letter_data_retention
def test_insert_service_data_retention(sample_service): insert_service_data_retention(service_id=sample_service.id, notification_type='email', days_of_retention=3) results = ServiceDataRetention.query.all() assert len(results) == 1 assert results[0].service_id == sample_service.id assert results[0].notification_type == 'email' assert results[0].days_of_retention == 3 assert results[0].created_at.date() == datetime.utcnow().date()
def test_fetch_service_data_retention(sample_service): email_data_retention = insert_service_data_retention(sample_service.id, 'email', 3) letter_data_retention = insert_service_data_retention(sample_service.id, 'letter', 30) sms_data_retention = insert_service_data_retention(sample_service.id, 'sms', 5) list_of_data_retention = fetch_service_data_retention(sample_service.id) assert len(list_of_data_retention) == 3 assert list_of_data_retention[0] == email_data_retention assert list_of_data_retention[1] == sms_data_retention assert list_of_data_retention[2] == letter_data_retention
def test_fetch_service_data_retention_by_id_returns_none_if_id_not_for_service( sample_service): another_service = create_service(service_name="Another service") email_data_retention = insert_service_data_retention( sample_service.id, 'email', 3) result = fetch_service_data_retention_by_id(another_service.id, email_data_retention.id) assert not result
def create_service_data_retention(service, notification_type='sms', days_of_retention=3): data_retention = insert_service_data_retention( service_id=service.id, notification_type=notification_type, days_of_retention=days_of_retention) return data_retention
def test_update_service_data_retention_does_not_update_row_if_data_retention_is_for_different_service( sample_service): data_retention = insert_service_data_retention( service_id=sample_service.id, notification_type='email', days_of_retention=3) updated_count = update_service_data_retention( service_data_retention_id=data_retention.id, service_id=uuid.uuid4(), days_of_retention=5) assert updated_count == 0
def create_service_data_retention(service_id): form = validate(request.get_json(), add_service_data_retention_request) try: new_data_retention = insert_service_data_retention( service_id=service_id, notification_type=form.get("notification_type"), days_of_retention=form.get("days_of_retention")) except IntegrityError: raise InvalidRequest( message="Service already has data retention for {} notification type" .format(form.get("notification_type")), status_code=400) return jsonify(result=new_data_retention.serialize()), 201
def test_update_service_data_retention(sample_service): data_retention = insert_service_data_retention( service_id=sample_service.id, notification_type='sms', days_of_retention=3) updated_count = update_service_data_retention( service_data_retention_id=data_retention.id, service_id=sample_service.id, days_of_retention=5) assert updated_count == 1 results = ServiceDataRetention.query.all() assert len(results) == 1 assert results[0].id == data_retention.id assert results[0].service_id == sample_service.id assert results[0].notification_type == 'sms' assert results[0].days_of_retention == 5 assert results[0].created_at.date() == datetime.utcnow().date() assert results[0].updated_at.date() == datetime.utcnow().date()