Just gave this a quick look... 
What strikes me as odd is this in your User validation:
validates :name,  presence: true, length: { maximum:  50  },uniqueness: { 
case_sensitive: false } 
You want the user name unique yet you do not care about case sensitivity?  
CAT, cat, Cat, caT.... 
And then you query for:  SELECT  1 AS one FROM "users" WHERE 
LOWER("users"."name") = LOWER('fsdfsdf') LIMIT... That doesn't make sense 
to me...   
This strikes me as bad form.  Make name case_sensitive: true.  And in your 
SQL, remove LOWER.

Hope this helps...

Liz


On Friday, June 26, 2015 at 12:49:18 PM UTC-4, Ruby-Forum.com User wrote:
>
> please help correct test. 
>
> its a model User: 
> class User < ActiveRecord::Base 
>   before_save { self.email  = email.downcase  } 
>   before_create :create_remember_token 
>
>   VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i 
>   validates :email, presence:     true, 
>                                       format:         { with: 
> VALID_EMAIL_REGEX }, 
>                                       uniqueness: { case_sensitive: 
> false } 
>   validates :diary_name, presence: true, uniqueness: { case_sensitive: 
> false } 
>   validates :password,  length: { minimum:  6 } 
>   validates :name,  presence: true, length: { maximum:  50  }, 
> uniqueness: { case_sensitive: false } 
>
>   has_secure_password 
>
>   has_many    :recalls 
>   has_many    :posts,  dependent:  :destroy 
>   belongs_to  :gender 
>
>   has_attached_file :avatar, :styles => { :large => "300x300>", :medium 
> => "100x100>", :thumb => "30x30>" } 
>   validates_attachment_content_type :avatar, :content_type => 
> ["image/jpg", "image/jpeg", "image/png", "image/gif"] 
>   validates_attachment_file_name :avatar, :matches => [/png\Z/, 
> /jpe?g\Z/, /gif\Z/] 
> end 
>
> its a controller UserController: 
> class UsersController < ApplicationController 
>   def new 
>     @user = User.new 
>   end 
>
>   def create 
>     @user = User.new(user_params) 
>
>     if  @user.save 
>       sign_in @user 
>       flash[:success] = "Welcome  to  the Sample  App!" 
>       redirect_to  @user 
>     else 
>       flash.now[:error] = 'Invalid data' 
>       render  'new' 
>     end 
>   end 
>
>   private 
>
>     def user_params 
>       params.require(:user).permit(:name, :email, :diary_name, 
> :password, :gender_id, :password_confirmation, :phone, :skype, :info, 
> :avatar, :delete_avatar) 
>     end 
> end 
>
> its a fixture user: 
> one: 
>   name: 'onfge' 
>   email: 'mystr...@ad.ad <javascript:>' 
>   password_digest: 
> '$2a$10$XS2HLwMZxg/7yRKAWd9AJ.afCMra0wGWK4b.FhkY/qo3Lmo/tKEiO' 
>   remember_token: 'dc3461e13c8d316dad22332a503e06edafa0b9cb' 
>   phone: '43535345' 
>   skype: 'gggggg' 
>   gender: one 
>   info: 'MyString' 
>   admin: true 
>   avatar_file_name: nil 
>   avatar_content_type: nil 
>   avatar_file_size: nil 
>
> its a fixture genders: 
> one: 
>   gender_name: '-' 
>
> two: 
>   gender_name: 'male' 
>
> three: 
>   gender_name: 'female' 
>
>
> a test that does not work: 
> class UsersControllerTest < ActionController::TestCase 
>   fixtures :users 
>
>   setup do 
>     @user = users(:one) 
>     @input_attributes = { 
>         email: 'yhy...@ad.ad <javascript:>', 
>         gender_id: 1, 
>         info: 'u76u67u67u', 
>         name: 'fsdfsdf', 
>         password: 'qwerty', 
>         password_confirmation: 'qwerty', 
>         phone: '435345345', 
>         skype: 'sdggdfgdfgfdgd' 
>     } 
>   end 
>
>   test "should create user" do 
>     assert_difference('User.count') do 
>       post :create, 
>       user: @input_attributes 
>     end 
>   end 
> end 
>
>
> after a test run in the console I get the following error message: 
>   1) Failure: 
> UsersControllerTest#test_should_create_user 
> [/home/kalinin/rails/ZSUM/test/controllers/users_controller_test.rb:37]: 
> "User.count" didn't change by 1. 
> Expected: 3 
>   Actual: 2 
>
>
> It is the message that is logged. it is clear that the transaction is 
> rolled back for some strange reason: 
>   [1m[35mUser Load (0.1ms)[0m  SELECT  "users".* FROM "users" WHERE 
> "users"."id" = ? LIMIT 1  [["id", 980190962]] 
>   [1m[36m (0.1ms)[0m  [1mSELECT COUNT(*) FROM "users"[0m 
> Processing by UsersController#create as HTML 
>   Parameters: {"user"=>{"email"=>"yhy...@ad.ad <javascript:>", 
> "gender_id"=>"1", 
> "info"=>"u76u67u67u", "name"=>"fsdfsdf", "password"=>"[FILTERED]", 
> "password_confirmation"=>"[FILTERED]", "phone"=>"435345345", 
> "skype"=>"sdggdfgdfgfdgd"}} 
>   [1m[35m (0.1ms)[0m  SAVEPOINT active_record_1 
>   [1m[36mUser Exists (0.1ms)[0m  [1mSELECT  1 AS one FROM "users" WHERE 
> LOWER("users"."email") = LOWER('yhy...@ad.ad <javascript:>') LIMIT 1[0m 
>   [1m[35mUser Exists (0.1ms)[0m  SELECT  1 AS one FROM "users" WHERE 
> "users"."diary_name" IS NULL LIMIT 1 
>   [1m[36mUser Exists (0.1ms)[0m  [1mSELECT  1 AS one FROM "users" WHERE 
> LOWER("users"."name") = LOWER('fsdfsdf') LIMIT 1[0m 
>   [1m[35m (0.1ms)[0m  ROLLBACK TO SAVEPOINT active_record_1 
>
> -- 
> Posted via http://www.ruby-forum.com/. 
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/bc9f8148-023e-45fe-bbe6-576c930b0fb6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to