Sha256: 96cb70a6cf8b3a4ad5793d192b071ed298d1b15d935e259041eabcf46821cb5a

Contents?: true

Size: 1.94 KB

Versions: 19

Compression:

Stored size: 1.94 KB

Contents

require "test_helper"
require "disposable/expose"
require "disposable/composition"

# Disposable::Expose.
class ExposeTest < MiniTest::Spec
  module Model
    Album = Struct.new(:id, :name)
  end

  module Twin
    class Album < Disposable::Twin
      property :id
      property :title, from: :name
    end
  end

  class AlbumExpose < Disposable::Expose
    from Twin::Album.definitions.values
  end

  let (:album) { Model::Album.new(1, "Dick Sandwich") }
  subject { AlbumExpose.new(album) }

  describe "readers" do
    it  do
      subject.id.must_equal 1
      subject.title.must_equal "Dick Sandwich"
    end
  end


  describe "writers" do
    it do
      subject.id = 3
      subject.title = "Eclipse"

      subject.id.must_equal 3
      subject.title.must_equal "Eclipse"
      album.id.must_equal 3
      album.name.must_equal "Eclipse"
    end
  end
end


# Disposable::Composition.
class ExposeCompositionTest < MiniTest::Spec
  module Model
    Band  = Struct.new(:id)
    Album = Struct.new(:id, :name)
  end

  module Twin
    class Album < Disposable::Twin
      property :id,                 on: :album
      property :name,               on: :album
      property :band_id, from: :id, on: :band
    end

    class AlbumComposition < Disposable::Composition
      from Twin::Album.definitions.values
    end
  end

  let (:band) { Model::Band.new(1) }
  let (:album) { Model::Album.new(2, "Dick Sandwich") }
  subject { Twin::AlbumComposition.new(album: album, band: band) }


  describe "readers" do
    it { subject.id.must_equal 2 }
    it { subject.band_id.must_equal 1 }
    it { subject.name.must_equal "Dick Sandwich" }
  end


  describe "writers" do
    it do
      subject.id = 3
      subject.band_id = 4
      subject.name = "Eclipse"

      subject.id.must_equal 3
      subject.band_id.must_equal 4
      subject.name.must_equal "Eclipse"
      band.id.must_equal 4
      album.id.must_equal 3
      album.name.must_equal "Eclipse"
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
disposable-0.4.6 test/expose_test.rb
disposable-0.4.5 test/expose_test.rb
disposable-0.4.4 test/expose_test.rb
disposable-0.4.3 test/expose_test.rb
disposable-0.4.2 test/expose_test.rb
disposable-0.4.1 test/expose_test.rb
disposable-0.4.0 test/expose_test.rb
disposable-0.3.2 test/expose_test.rb
disposable-0.3.1 test/expose_test.rb
disposable-0.3.0 test/expose_test.rb
disposable-0.2.6 test/expose_test.rb
disposable-0.2.5 test/expose_test.rb
disposable-0.2.4 test/expose_test.rb
disposable-0.2.3 test/expose_test.rb
disposable-0.2.2 test/expose_test.rb
disposable-0.2.1 test/expose_test.rb
disposable-0.2.0 test/expose_test.rb
disposable-0.2.0.rc2 test/expose_test.rb
disposable-0.2.0.rc1 test/expose_test.rb