user_spec.rb 3.21 KB
Newer Older
gitlabhq's avatar
gitlabhq committed
1 2 3 4 5 6 7 8
require 'spec_helper'

describe User do
  describe "Associations" do
    it { should have_many(:projects) }
    it { should have_many(:users_projects) }
    it { should have_many(:issues) }
    it { should have_many(:assigned_issues) }
9 10
    it { should have_many(:merge_requests) }
    it { should have_many(:assigned_merge_requests) }
gitlabhq's avatar
gitlabhq committed
11 12 13 14 15 16
  end

  describe "Respond to" do
    it { should respond_to(:is_admin?) }
    it { should respond_to(:identifier) }
    it { should respond_to(:name) }
Nihad Abbasov's avatar
Nihad Abbasov committed
17
    it { should respond_to(:private_token) }
gitlabhq's avatar
gitlabhq committed
18 19
  end

Nihad Abbasov's avatar
Nihad Abbasov committed
20
  it "should return valid identifier" do
21
    user = User.new(email: "test@mail.com")
Drew's avatar
Drew committed
22
    user.identifier.should == "test_mail_com"
gitlabhq's avatar
gitlabhq committed
23
  end
24

25
  it "should return identifier without + sign" do
26
    user = User.new(email: "test+foo@mail.com")
27 28 29
    user.identifier.should == "test_foo_mail_com"
  end

30
  it "should execute callback when force_random_password specified" do
31
    user = User.new(email: "test@mail.com", force_random_password: true)
32 33 34 35 36
    user.should_receive(:generate_password)
    user.save
  end

  it "should not generate password by default" do
37
    user = Factory(:user, password: 'abcdefg', password_confirmation: 'abcdefg')
38 39 40 41 42
    user.password.should == 'abcdefg'
  end

  it "should generate password when forcing random password" do
    Devise.stub(:friendly_token).and_return('123456789')
43
    user = User.create(email: "test1@mail.com", force_random_password: true)
44 45
    user.password.should == user.password_confirmation
    user.password.should == '12345678'
46 47
  end

Nihad Abbasov's avatar
Nihad Abbasov committed
48 49 50 51 52
  it "should have authentication token" do
    user = Factory(:user)
    user.authentication_token.should_not == ""
  end

53
  describe "dependent" do
Nihad Abbasov's avatar
Nihad Abbasov committed
54
    before do
55
      @user = Factory :user
Nihad Abbasov's avatar
Nihad Abbasov committed
56
      @note = Factory :note,
57 58
        author: @user,
        project: Factory(:project)
59 60
    end

Nihad Abbasov's avatar
Nihad Abbasov committed
61
    it "should destroy all notes with user" do
62 63 64 65 66
      Note.find_by_id(@note.id).should_not be_nil
      @user.destroy
      Note.find_by_id(@note.id).should be_nil
    end
  end
gitlabhq's avatar
gitlabhq committed
67 68 69 70 71
end
# == Schema Information
#
# Table name: users
#
randx's avatar
randx committed
72
#  id                     :integer(4)      not null, primary key
gitlabhq's avatar
gitlabhq committed
73 74 75 76 77
#  email                  :string(255)     default(""), not null
#  encrypted_password     :string(128)     default(""), not null
#  reset_password_token   :string(255)
#  reset_password_sent_at :datetime
#  remember_created_at    :datetime
randx's avatar
randx committed
78
#  sign_in_count          :integer(4)      default(0)
gitlabhq's avatar
gitlabhq committed
79 80 81 82
#  current_sign_in_at     :datetime
#  last_sign_in_at        :datetime
#  current_sign_in_ip     :string(255)
#  last_sign_in_ip        :string(255)
randx's avatar
randx committed
83 84
#  created_at             :datetime        not null
#  updated_at             :datetime        not null
gitlabhq's avatar
gitlabhq committed
85
#  name                   :string(255)
randx's avatar
randx committed
86 87
#  admin                  :boolean(1)      default(FALSE), not null
#  projects_limit         :integer(4)      default(10)
Saito's avatar
Saito committed
88 89 90 91
#  skype                  :string(255)     default(""), not null
#  linkedin               :string(255)     default(""), not null
#  twitter                :string(255)     default(""), not null
#  authentication_token   :string(255)
randx's avatar
randx committed
92 93 94 95
#  dark_scheme            :boolean(1)      default(FALSE), not null
#  theme_id               :integer(4)      default(1), not null
#  bio                    :string(255)
#  blocked                :boolean(1)      default(FALSE), not null
gitlabhq's avatar
gitlabhq committed
96
#
randx's avatar
randx committed
97