Sha256: 4399f6be8c08f5109552ec2c2042341859c5650f719ad7b3afa6b3c7b2a293cb

Contents?: true

Size: 1.79 KB

Versions: 9

Compression:

Stored size: 1.79 KB

Contents

require 'helper'

describe Toy::Reloadable do
  uses_constants('User', 'Game')

  describe "#reload" do
    before do
      User.attribute(:name, String)
      @user = User.create(:name => 'John')
    end
    let(:user) { @user }

    it "reloads id from database" do
      id = user.id
      user.reload
      user.id.should == id
    end

    it "reloads record from the database" do
      user.name = 'Steve'
      user.reload
      user.name.should == 'John'
    end

    it "is still persisted" do
      user.should be_persisted
      user.reload
      user.should be_persisted
    end

    it "returns the record" do
      user.name = 'Steve'
      user.reload.should equal(user)
    end

    it "resets instance variables" do
      user.instance_variable_set("@foo", true)
      user.reload
      user.instance_variable_get("@foo").should be_nil
    end

    it "resets lists" do
      User.list(:games)
      game = Game.create
      user.update_attributes(:games => [game])
      user.games = []
      user.games.should == []
      user.reload
      user.games.should == [game]
    end

    it "resets references" do
      Game.reference(:user)
      game = Game.create(:user => user)
      game.user = nil
      game.user.should be_nil
      game.reload
      game.user.should == user
    end

    it "raises NotFound if does not exist" do
      user.destroy
      lambda { user.reload }.should raise_error(Toy::NotFound)
    end

    it "reloads defaults" do
      User.attribute(:skills, Array)
      @user.reload
      @user.skills.should == []
    end

    it "reloads attributes protected from mass assignment" do
      User.attribute(:admin, Boolean)
      User.attr_accessible(:name)
      user = User.new(:name => 'John')
      user.admin = true
      user.save
      user.reload.admin.should be_true
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
toystore-0.13.0 spec/toy/reloadable_spec.rb
toystore-0.12.0 spec/toy/reloadable_spec.rb
toystore-0.11.0 spec/toy/reloadable_spec.rb
toystore-0.10.4 spec/toy/reloadable_spec.rb
toystore-0.10.3 spec/toy/reloadable_spec.rb
toystore-0.10.2 spec/toy/reloadable_spec.rb
toystore-0.10.1 spec/toy/reloadable_spec.rb
toystore-0.10.0 spec/toy/reloadable_spec.rb
toystore-0.9.0 spec/toy/reloadable_spec.rb