From 555c15dfef2d621c0a56d6550e74873357bf6642 Mon Sep 17 00:00:00 2001
From: Raphael <raphael@joindiaspora.com>
Date: Fri, 29 Oct 2010 16:56:04 -0700
Subject: [PATCH] Simplify validations on user

---
 app/models/user.rb                                | 14 ++------------
 config/locales/diaspora/en.yml                    |  2 ++
 spec/controllers/registrations_controller_spec.rb |  2 +-
 spec/models/user_spec.rb                          |  2 +-
 4 files changed, 6 insertions(+), 14 deletions(-)

diff --git a/app/models/user.rb b/app/models/user.rb
index 27dab1e54a..eecd0f6dc2 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -5,16 +5,6 @@
 require File.join(Rails.root, 'lib/diaspora/user')
 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
   include MongoMapper::Document
   include Diaspora::UserModules
@@ -50,11 +40,11 @@ class User
   validates_presence_of :username
   validates_uniqueness_of :username, :case_sensitive => false
   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
 
   one :person, :class_name => 'Person', :foreign_key => :owner_id
-  validate :person_is_valid
+  validates_associated :person
   def person_is_valid
     if person.present? && !person.valid?
       person.errors.full_messages.each {|m| errors.add(:base, m)}
diff --git a/config/locales/diaspora/en.yml b/config/locales/diaspora/en.yml
index 2702ff0747..27749961f3 100644
--- a/config/locales/diaspora/en.yml
+++ b/config/locales/diaspora/en.yml
@@ -11,6 +11,8 @@ en:
           models:
               user:
                   attributes:
+                      person:
+                          invalid: "is invalid"
                       username:
                           taken: "is already taken"
                       email:
diff --git a/spec/controllers/registrations_controller_spec.rb b/spec/controllers/registrations_controller_spec.rb
index 942e8f5c93..fd1cf4af95 100644
--- a/spec/controllers/registrations_controller_spec.rb
+++ b/spec/controllers/registrations_controller_spec.rb
@@ -44,7 +44,7 @@ describe RegistrationsController do
         lambda { get :create, @invalid_params }.should_not change(User, :count)
       end
       it "assigns @user" do
-        get :create, @valid_params
+        get :create, @invalid_params
         assigns(:user).should_not be_nil
       end
       it "sets the flash error" do
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 315484ab9e..a1b89a1d3a 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -51,7 +51,7 @@ describe User do
         user.should_not be_valid
 
         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
 
-- 
GitLab