Given this model:
class Organization < ActiveRecord::Base
has_many :users
validates :name, :presence => true
validates :subdomain, :presence => true
validate :has_at_least_one_user
private
def has_at_least_one_user
errors.add(:users, "Must have at least one user.") unless users.length > 0
end
end
And this set of examples:
require 'spec_helper'
describe Organization do
before do
@organization = Organization.new(name:"an org", subdomain:"anorg")
end
it 'is valid with valid attributes' do
@organization.users << mock_model("User")
@organization.should be_valid
end
it 'is not valid without an organization name' do
@organization.name = nil
@organization.should_not be_valid
end
it 'is not valid without a subdomain' do
@organization.subdomain = nil
@organization.should_not be_valid
end
it 'is not valid if subdomain is not unique'
it 'is not valid without at least one user' do
@organization.users = []
@organization.should_not be_valid
end
end
I get this failure:
Failures:
1) Organization is valid with valid attributes
Failure/Error: @organization.users << mock_model("User")
Mock "User_1001" received unexpected message :to_ary with (no args)
# ./spec/models/organization_spec.rb:9:in `block (2 levels) in <top (required)>'
Question 1: Why can't I seem to add a mock User this way?
Question 2: Are there any better ways to test/implement a model that requires at least one association?
Thanks!
Matt Smith