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.