main
1require "rails_helper"
2
3describe User do
4 context "#save" do
5 it "can be saved" do
6 User.create!(email: 'mo@mokhan.ca', password: 'password', password_confirmation: 'password')
7 expect(User.count).to eql(1)
8 end
9 end
10
11 context "#authenticate" do
12 let(:user) { User.create!(email: 'blah@example.com', password: 'password', password_confirmation: 'password') }
13
14 it "returns true when the password is correct" do
15 expect(user.authenticate('password')).to be_truthy
16 end
17
18 it "returns false when the password is incorrect" do
19 expect(user.authenticate('wrong')).to be_falsey
20 end
21 end
22
23 context "validations" do
24 subject { build(:user) }
25
26 context "when all fields are provided" do
27 it 'is valid' do
28 expect(subject).to be_valid
29 end
30 end
31
32 context "when the email is blank" do
33 it 'produces an error' do
34 subject.email = ''
35 expect(subject).to_not be_valid
36 expect(subject.errors[:email]).to_not be_empty
37 end
38 end
39
40 context "when the email is invalid" do
41 it 'produces an error when' do
42 subject.email = 'blah'
43 expect(subject).to_not be_valid
44 expect(subject.errors[:email]).to_not be_empty
45 end
46 end
47
48 context 'when the email is legit' do
49 it 'is valid' do
50 expect(subject).to be_valid
51 expect(subject.errors[:email]).to be_empty
52 end
53 end
54
55 context "when the password is missing" do
56 it 'produces an error' do
57 subject.password = nil
58 expect(subject).to_not be_valid
59 end
60 end
61 end
62
63 context "#login" do
64 subject { create(:user, password: 'password') }
65
66 context "when the credentials are good" do
67 it 'returns a new session' do
68 result = subject.login('password')
69 expect(result).to_not be_nil
70 expect(result).to be_instance_of(Session)
71 end
72 end
73
74 context "when the credentials are invalid" do
75 it 'returns nil' do
76 expect(subject.login('wrong')).to be_nil
77 end
78 end
79 end
80end