Sha256: b44bc7050986993ccebd57c99f25aa5b4f293540053ba89a0799356dddb29323

Contents?: true

Size: 1.93 KB

Versions: 15

Compression:

Stored size: 1.93 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.representer_class
  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.representer_class
    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

15 entries across 15 versions & 1 rubygems

Version Path
disposable-0.1.15 test/expose_test.rb
disposable-0.1.14 test/expose_test.rb
disposable-0.1.13 test/expose_test.rb
disposable-0.1.12 test/expose_test.rb
disposable-0.1.11 test/expose_test.rb
disposable-0.1.9 test/expose_test.rb
disposable-0.1.8 test/expose_test.rb
disposable-0.1.7 test/expose_test.rb
disposable-0.1.6 test/expose_test.rb
disposable-0.1.5 test/expose_test.rb
disposable-0.1.4 test/expose_test.rb
disposable-0.1.3 test/expose_test.rb
disposable-0.1.2 test/expose_test.rb
disposable-0.1.1 test/expose_test.rb
disposable-0.1.0 test/expose_test.rb