def test_dehydrate(dehydrate_spec_mock):
    # TODO: find out how to undecorate function with mock
    dehydrate_spec_mock.return_value = list(zip(DUMMY_SPECS, ('Tummy', 10)))

    dehydrator = Dehydrator()
    dehydrator.specs = DUMMY_SPECS

    dehydrator.dehydrate(obj=DUMMY_OBJECT)

    dehydrate_spec_mock.has_calls(
        call(DUMMY_OBJECT, DUMMY_SPECS[0]),
        call(DUMMY_OBJECT, DUMMY_SPECS[1]),
    )
def test_dehydrate(dehydrate_spec_mock):
    # TODO: find out how to undecorate function with mock
    dehydrate_spec_mock.return_value = list(zip(DUMMY_SPECS, ('Tummy', 10)))

    dehydrator = Dehydrator()
    dehydrator.specs = DUMMY_SPECS

    dehydrator.dehydrate(obj=DUMMY_OBJECT)

    dehydrate_spec_mock.has_calls(
        call(DUMMY_OBJECT, DUMMY_SPECS[0]),
        call(DUMMY_OBJECT, DUMMY_SPECS[1]),
    )
def test_dehydrate_none_with_fallback_factory():
    fallback = lambda obj: {'id': '', 'name': ''}
    dehydrator = Dehydrator(specs=DUMMY_SPECS, empty=fallback)
    result1 = dehydrator.dehydrate(None)
    result2 = dehydrator.dehydrate(None)
    assert result1 == result2 == {'id': '', 'name': ''}
    assert result1 is not result2
def test_dehydrate_none_with_fallback():
    fallback_object = object()
    dehydrator = Dehydrator(specs=DUMMY_SPECS, empty=fallback_object)
    result = dehydrator.dehydrate(None)
    assert result is fallback_object
def test_dehydrate_none():
    dehydrator = Dehydrator(specs=DUMMY_SPECS)
    result = dehydrator.dehydrate(None)
    assert result is None