Sha256: 547883b560a03a217415ec97d7f2ddc7b31fa92d56691f8833a4b1a5391380c1

Contents?: true

Size: 1.9 KB

Versions: 5

Compression:

Stored size: 1.9 KB

Contents

require 'test_helper'

class ModelTest < ActiveSupport::TestCase
  include ActionMailer::TestHelper

  test 'responds to' do
    assert_respond_to User, :authenticates
    u = User.new
    assert_respond_to u, :password
    assert_respond_to u, :password=
    assert_respond_to u, :password_confirmation
    assert_respond_to u, :password_confirmation=
  end


  test 'creates account' do
    u = User.create! name: 'bob', email: 'bob@example.com', password: '123456789abc'
    assert u.persisted?
    assert u.qv_account.persisted?
  end


  test 'destroys account' do
    u = User.create! name: 'bob', email: 'bob@example.com', password: '123456789abc'
    ac = u.qv_account
    u.destroy
    assert ac.destroyed?
  end


  test 'copies model identifier to account' do
    email = 'bob@example.com'
    u = User.create! name: 'bob', email: email, password: '123456789abc'
    assert_equal email, u.qv_account.identifier

    email = 'b@foo.com'
    u.update email: email
    u.qv_account.reload
    assert_equal email, u.qv_account.identifier

    u.update name: nil, email: 'xyz'  # nil name is invalid
    u.qv_account.reload
    refute_equal 'xyz', u.qv_account.identifier
  end


  test 'ensures uniqueness validation on identifier' do
    Foo = Class.new ActiveRecord::Base
    assert_raises NotImplementedError, 'missing uniqueness validation on ModelTest::Foo#email.  Try adding: `validates :email, uniqueness: true`' do
      Foo.instance_eval 'authenticates'
    end

    Bar = Class.new ActiveRecord::Base
    Bar.instance_eval 'validates :email, uniqueness: true'
    Bar.instance_eval 'authenticates'
    # no error raised
  end


  test 'notifies on email change' do
    u = User.create! name: 'bob', email: 'bob@example.com', password: '123456789abc'
    assert_enqueued_email_with QuoVadis::Mailer, :email_change_notification, args: {email: 'bob@example.com'} do
      u.update email: 'robert@example.com'
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
quo_vadis-2.1.2 test/models/model_test.rb
quo_vadis-2.1.1 test/models/model_test.rb
quo_vadis-2.1.0 test/models/model_test.rb
quo_vadis-2.0.2 test/models/model_test.rb
quo_vadis-2.0.1 test/models/model_test.rb