Simplify validations on user

This commit is contained in:
Raphael 2010-10-29 16:56:04 -07:00
parent 15bd24a64f
commit 555c15dfef
4 changed files with 6 additions and 14 deletions

View file

@ -5,16 +5,6 @@
require File.join(Rails.root, 'lib/diaspora/user') require File.join(Rails.root, 'lib/diaspora/user')
require File.join(Rails.root, 'lib/salmon/salmon') require File.join(Rails.root, 'lib/salmon/salmon')
class InvitedUserValidator < ActiveModel::Validator
def validate(document)
unless document.invitation_token
unless document.person
document.errors[:base] << "Unless you are being invited, you must have a person"
end
end
end
end
class User class User
include MongoMapper::Document include MongoMapper::Document
include Diaspora::UserModules include Diaspora::UserModules
@ -50,11 +40,11 @@ class User
validates_presence_of :username validates_presence_of :username
validates_uniqueness_of :username, :case_sensitive => false validates_uniqueness_of :username, :case_sensitive => false
validates_format_of :username, :with => /\A[A-Za-z0-9_.]+\z/ validates_format_of :username, :with => /\A[A-Za-z0-9_.]+\z/
validates_with InvitedUserValidator validates_presence_of :person, :unless => proc {|user| user.invitation_token.present?}
validates_inclusion_of :language, :in => AVAILABLE_LANGUAGE_CODES validates_inclusion_of :language, :in => AVAILABLE_LANGUAGE_CODES
one :person, :class_name => 'Person', :foreign_key => :owner_id one :person, :class_name => 'Person', :foreign_key => :owner_id
validate :person_is_valid validates_associated :person
def person_is_valid def person_is_valid
if person.present? && !person.valid? if person.present? && !person.valid?
person.errors.full_messages.each {|m| errors.add(:base, m)} person.errors.full_messages.each {|m| errors.add(:base, m)}

View file

@ -11,6 +11,8 @@ en:
models: models:
user: user:
attributes: attributes:
person:
invalid: "is invalid"
username: username:
taken: "is already taken" taken: "is already taken"
email: email:

View file

@ -44,7 +44,7 @@ describe RegistrationsController do
lambda { get :create, @invalid_params }.should_not change(User, :count) lambda { get :create, @invalid_params }.should_not change(User, :count)
end end
it "assigns @user" do it "assigns @user" do
get :create, @valid_params get :create, @invalid_params
assigns(:user).should_not be_nil assigns(:user).should_not be_nil
end end
it "sets the flash error" do it "sets the flash error" do

View file

@ -51,7 +51,7 @@ describe User do
user.should_not be_valid user.should_not be_valid
user.errors.full_messages.count.should == 1 user.errors.full_messages.count.should == 1
user.errors.full_messages.first.should =~ /serialized public key/i user.errors.full_messages.first.should =~ /Person is invalid/i
end end
end end