Sha256: 61b9151ab96e060d3dc40a20df3b26e48f252db0e8f1a772e644b605afe0d46d

Contents?: true

Size: 1.78 KB

Versions: 21

Compression:

Stored size: 1.78 KB

Contents

require "spec_helper"

describe UserForm do

  it "1. Creating a 'User' using 'UserForm'." do
    params = { user: { email: 'email@gmail.com', terms_of_service: true } }

    user_form = UserForm.new(params[:user])
    save_result = user_form.save

    save_result.should == true
    User.all.count.should == 1
  end

  it "2. 'UserForm' becomes invalid when 'User' does and incorporates its errors." do
    user = User.new
    user.should have(1).error_on(:email)
    user.email = "email@gmail.com"
    user.should have(:no).errors_on(:email)

    user_form = UserForm.new
    user_form.should have(1).error_on(:email)
    user_form.email = "email@gmail.com"
    user_form.should have(:no).errors_on(:email)
  end

  it "3. 'UserForm' may require the validations of fields that 'User' doesn't have." do
    params = { user: { email: "email@gmail.com" } }

    user = User.new(params[:user])
    user.should have(:no).errors_on(:terms_of_service)

    user_form = UserForm.new(params[:user])
    user_form.should have(1).error_on(:terms_of_service)
    user_form.terms_of_service = true
    user_form.should have(:no).errors_on(:terms_of_service)
  end

  it "4. 'User' can't be created if 'UserForm' isn't valid." do
    params = { user: { email: 'email@gmail.com' } }
    
    user_form = UserForm.new(params[:user])
    save_result = user_form.save

    save_result.should == false
    User.all.count.should == 0
  end

  it "5. 'UserForm' won't allow weak params to be updated, unlike 'User'." do
    params = { user: { email: 'email@gmail.com', admin: true } }

    user = User.new(params[:user])
    user.save.should == true
    user.admin.should == true

    user_form = UserForm.new(params[:user].merge({ terms_of_service: true }))
    user_form.save.should == true
    user_form.user.admin.should == false
  end

end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
object_attorney-2.5.4 spec/object_attorney/user_form_spec.rb
object_attorney-2.5.3 spec/object_attorney/user_form_spec.rb
object_attorney-2.5.2 spec/object_attorney/user_form_spec.rb
object_attorney-2.5.0 spec/object_attorney/user_form_spec.rb
object_attorney-2.4.0 spec/object_attorney/user_form_spec.rb
object_attorney-2.2.13 spec/object_attorney/user_form_spec.rb
object_attorney-2.2.12 spec/object_attorney/user_form_spec.rb
object_attorney-2.2.11 spec/object_attorney/user_form_spec.rb
object_attorney-2.2.10 spec/object_attorney/user_form_spec.rb
object_attorney-2.2.9 spec/object_attorney/user_form_spec.rb
object_attorney-2.2.8 spec/object_attorney/user_form_spec.rb
object_attorney-2.2.7 spec/object_attorney/user_form_spec.rb
object_attorney-2.2.6 spec/object_attorney/user_form_spec.rb
object_attorney-2.2.5 spec/object_attorney/user_form_spec.rb
object_attorney-2.2.4 spec/object_attorney/user_form_spec.rb
object_attorney-2.2.3 spec/object_attorney/user_form_spec.rb
object_attorney-2.2.2 spec/object_attorney/user_form_spec.rb
object_attorney-2.2.1 spec/object_attorney/user_form_spec.rb
object_attorney-2.1.3 spec/object_attorney/user_form_spec.rb
object_attorney-2.1.2 spec/object_attorney/user_form_spec.rb