Sha256: 1baabfe0544aaa949be92908925cf86659e7049bfa2180b11f511bd6673dc8eb

Contents?: true

Size: 1.73 KB

Versions: 4

Compression:

Stored size: 1.73 KB

Contents

require 'test_helper'

class AsTest < BaseTest
  class AlbumForm < Reform::Form
    property :name, :as => :title

    property :single, :as => :hit do
      property :title
    end

    collection :tracks, :as => :songs do
      property :name, :as => :title
    end

    property :band do
      property :company, :as => :label do
        property :business, :as => :name
      end
    end
  end

  let (:song2) { Song.new("Roxanne") }

  let (:params) {
      {
        "name" => "Best Of The Police",
        "single"   => {"title" => "So Lonely"},
        "tracks" => [{"name" => "Message In A Bottle"}, {"name" => "Roxanne"}]
      }
    }

  subject { AlbumForm.new(Album.new("Best Of", hit, [Song.new("Fallout"), song2])) }

  it { subject.name.must_equal "Best Of" }
  it { subject.single.title.must_equal "Roxanne" }
  it { subject.tracks[0].name.must_equal "Fallout" }
  it { subject.tracks[1].name.must_equal "Roxanne" }


  describe "#validate" do


    before { subject.validate(params) }

    it { subject.name.must_equal "Best Of The Police" }
    it { subject.single.title.must_equal "So Lonely" }
    it { subject.tracks[0].name.must_equal "Message In A Bottle" }
    it { subject.tracks[1].name.must_equal "Roxanne" }
  end


  describe "#sync" do
    before {
      subject.tracks[1].name = "Livin' Ain't No Crime"
      subject.sync
    }

    it { song2.title.must_equal "Livin' Ain't No Crime" }
  end


  describe "#save (nested hash)" do
    before { subject.validate(params) }

    it do
      hash = nil

      subject.save do |nested_hash|
        hash = nested_hash
      end

      hash.must_equal({"title"=>"Best Of The Police", "hit"=>{"title"=>"So Lonely"}, "songs"=>[{"title"=>"Message In A Bottle"}, {"title"=>"Roxanne"}]})
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
reform-1.2.0.beta2 test/as_test.rb
reform-1.2.0.beta1 test/as_test.rb
reform-1.1.1 test/as_test.rb
reform-1.1.0 test/as_test.rb