def test_serialize_and_deserialize_on_raw_cached_state(): now = pendulum.now("utc") state = Cached( cached_inputs=dict(x=Result(99), p=Result("p")), result=dict(hi=5, bye=6), cached_result_expiration=now, ) serialized = state.serialize() new_state = State.deserialize(serialized) assert isinstance(new_state, Cached) assert new_state.color == state.color assert new_state.result is None assert new_state.cached_result_expiration == state.cached_result_expiration assert new_state.cached_inputs == dict.fromkeys(["x", "p"], NoResult)
def test_serialize_and_deserialize_on_mixed_cached_state(): safe_dct = SafeResult(dict(hi=5, bye=6), result_handler=JSONResultHandler()) now = pendulum.now("utc") state = Cached( cached_inputs=dict(x=Result(2), p=Result("p")), result=safe_dct, cached_result_expiration=now, ) serialized = state.serialize() new_state = State.deserialize(serialized) assert isinstance(new_state, Cached) assert new_state.color == state.color assert new_state.result == dict(hi=5, bye=6) assert new_state.cached_result_expiration == state.cached_result_expiration assert new_state.cached_inputs == dict.fromkeys(["x", "p"], NoResult)
def test_serialize_and_deserialize_on_mixed_cached_state(): safe_dct = PrefectResult(location=json.dumps(dict(hi=5, bye=6))) now = pendulum.now("utc") state = Cached( cached_inputs=dict(x=PrefectResult(value=2), p=PrefectResult(value="p")), result=safe_dct, cached_result_expiration=now, ) serialized = state.serialize() new_state = State.deserialize(serialized) assert isinstance(new_state, Cached) assert new_state.color == state.color assert new_state._result.location == json.dumps(dict(hi=5, bye=6)) assert new_state.cached_result_expiration == state.cached_result_expiration assert new_state.cached_inputs == dict.fromkeys(["x", "p"], PrefectResult())
def test_serialize_and_deserialize_on_safe_cached_state(): safe = SafeResult("99", result_handler=JSONResultHandler()) safe_dct = SafeResult(dict(hi=5, bye=6), result_handler=JSONResultHandler()) now = pendulum.now("utc") state = Cached( cached_inputs=dict(x=safe, p=safe), result=safe_dct, cached_result_expiration=now, ) serialized = state.serialize() new_state = State.deserialize(serialized) assert isinstance(new_state, Cached) assert new_state.color == state.color assert new_state.result == dict(hi=5, bye=6) assert new_state.cached_result_expiration == state.cached_result_expiration assert new_state.cached_inputs == state.cached_inputs