fugafugaにrestful_authenticationをセットアップ。(2) ~ spec/models/user_spec.rbの修正

とりあえず、RSpecのセットアップ。

$ script/generate rspec


んじゃあ、とりあえず、テスト。

$ rake spec:models
(略)
#=> 75 examples, 75 failures
#=> rake aborted!
(略)

...そりゃそうだ。
認証をloginからemailに変更しているからねぇ。
修正、マンドクセ


とりあえず、フィクスチャ。

# spec/fixtures/users.yml

 quentin:
   id:                        1
-  login:                     quentin
+#  login:                     quentin
(略)       
 aaron:
   id:                        2
-  login:                     aaron
+#  login:                     aaron
(略) 
 old_password_holder:
   id:                        3
-  login:                     old_password_holder
+#  login:                     old_password_holder
(略)


んで、user_spec.rb。
loginの検証をしているところを全部削って、認証プロセスでloginに値を放り込んでるところをemailに変更して、protectedの下のcreate_userメソッドから、loginを省く。

# spec/models/user_spec.rb

(略)
-  it 'requires login' do
-    lambda do
-      u = create_user(:login => nil)
-      u.errors.on(:login).should_not be_nil
-    end.should_not change(User, :count)
-  end
-
-  describe 'allows legitimate logins:' do
-    ['123', '1234567890_234567890_234567890_234567890',
-     'hello.-_there@funnychar.com'].each do |login_str|
-      it "'#{login_str}'" do
-        lambda do
-          u = create_user(:login => login_str)
-          u.errors.on(:login).should     be_nil
-        end.should change(User, :count).by(1)
-      end
-    end
-  end
-  describe 'disallows illegitimate logins:' do
-    ['12', '1234567890_234567890_234567890_234567890_', "tab\t", "newline\n",
-     "Iñtërnâtiônàlizætiøn hasn't happened to ruby 1.8 yet",
-     'semicolon;', 'quote"', 'tick\'', 'backtick`', 'percent%', 'plus+', 'space '].each do |login_str|
-      it "'#{login_str}'" do
-        lambda do
-          u = create_user(:login => login_str)
-          u.errors.on(:login).should_not be_nil
-        end.should_not change(User, :count)
-      end
-    end
-  end
-
   it 'requires password' do
     lambda do
       u = create_user(:password => nil)
(略)
   it 'resets password' do
     users(:quentin).update_attributes(:password => 'new password', :password_confirmation => 'new password')
-    User.authenticate('quentin', 'new password').should == users(:quentin)
+    User.authenticate('quentin@example.com', 'new password').should == users(:quentin)
   end
(略)
   it 'does not rehash password' do
-    users(:quentin).update_attributes(:login => 'quentin2')
-    User.authenticate('quentin2', 'monkey').should == users(:quentin)
+    users(:quentin).update_attributes(:email => 'quentin2@example.com')
+    User.authenticate('quentin2@example.com', 'monkey').should == users(:quentin)
   end
(略)
   it 'authenticates user' do
-    User.authenticate('quentin', 'monkey').should == users(:quentin)
+    User.authenticate('quentin@example.com', 'monkey').should == users(:quentin)
   end
(略)
 protected
-  def create_user(options = {})
-    record = User.new({ :login => 'quire', :email => 'quire@example.com', :password => 'quire69', :password_confirmation => 'quire69' }.merge(options))
-    record.register! if record.valid?
-    record
-  end
+def create_user(options = {})
+  record = User.new({
+    :email => 'quire@example.com',
+    :password => 'quire69',
+    :password_confirmation => 'quire69',
+  }.merge(options))
+  record.register! if record.valid?
+  record
+ end


んで、テスト。

$ rake spec:models
(略)
59 examples, 0 failures


おk。
ステキっ:-)