Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion lib/disposable/twin.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ def default_nested_class
def property(name, options={}, &block)
options[:private_name] ||= options.delete(:from) || name
is_inherited = options.delete(:_inherited)
define_accessor = options.delete(:accessor)

if options.delete(:virtual)
options[:writeable] = options[:readable] = false
Expand All @@ -42,7 +43,7 @@ def property(name, options={}, &block)
options[:nested] = options.delete(:twin) if options[:twin]

super(name, options, &block).tap do |definition| # super is Declarative::Schema::property.
create_accessors(name, definition) unless is_inherited
create_accessors(name, definition) unless is_inherited || define_accessor == false
end
end

Expand Down
26 changes: 26 additions & 0 deletions test/twin/accessor_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
require 'test_helper'

class AccessorTest < MiniTest::Spec
Song = Struct.new(:title)

class SongForm < Disposable::Twin
def title
@title
end

def title=(value)
@title = value.reverse if value
end

property :title, accessor: false
end

let (:song) { Song.new }

let (:twin) { SongForm.new(song) }

it {
twin.title = "Remedy"
twin.title.must_equal "ydemeR"
}
end