require "spec_helper" feature "Map objects to classes with lazy loading", %q{ In order to defer object mapping as a lib user I want to map object from an input object to an output object with lazy loading support } do given(:mapper){ Yaoc::ObjectMapper.new(new_user_class, old_user_class).tap do |mapper| mapper.add_mapping do fetcher :public_send rule to: [:id, :names], lazy_loading: [false, true] end end } given(:new_user_class){ Yaoc::Helper::StructHE(:id, :names) } given(:old_user_class){ Yaoc::Helper::StructHE(:id, :names) } given(:existing_old_user){ old_user_class.new( id: 'existing_user_2', names: ['first_name', 'second_name'] ) } given(:existing_user){ new_user_class.new( id: 'existing_user_2', names: ['first_name', 'second_name'] ) } scenario "creates an result object from an input_object deferred" do converted_user = mapper.load(existing_old_user) new_names = ["new_name1", "new_name2"] existing_old_user.names = new_names # show defer through changes after loading an object expect(converted_user.names).to eq new_names end scenario "dumps an result object as source object defered" do converted_user = mapper.dump(existing_user) new_names = ["new_name1", "new_name2"] existing_user.names = new_names # show defer through changes after loading an object expect(converted_user.names).to eq new_names end end