Created
February 28, 2014 17:24
-
-
Save soeffing/9275391 to your computer and use it in GitHub Desktop.
Specs - Interview
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 require 'spec_helper' | |
2 | |
3 describe User do | |
4 it 'I can create a new user' do | |
5 user = User.create(email: '[email protected]', fname: 'John', lname: 'Doe') | |
6 expect(user.id).to_not be_nil | |
7 end | |
8 | |
9 it 'validates the required fields' do | |
10 user = User.new(email: nil, fname: nil, lname: nil) | |
11 user.errors[:email].should include('is required') | |
12 user.errors[:fname].should include('is required') | |
13 user.errors[:lname].should include('is required') | |
14 end | |
15 | |
16 it 'assigns a unique referral code' do | |
17 user = User.create!(email: '[email protected]', fname: 'John', lname: 'Doe') | |
18 expect(user.referral_code).to_not be_nil | |
19 end | |
20 | |
21 # it 'sends a welcome email' do | |
22 # user = User.create(email: '[email protected]', fname: 'John', lname: 'Doe') | |
23 # expect(Delayed::Job.count).to eq(1) | |
24 # end | |
25 | |
26 context 'orders' do | |
27 before(:all) do | |
28 @user = User.create(email: '[email protected]', fname: 'John', lname: 'Doe') | |
29 @product = Product.create(name: 'Rails for Dummies') | |
30 end | |
31 | |
32 before(:each) do | |
33 @orders = [] | |
34 @packages = [] | |
35 | |
36 10.times do | |
37 order = Order.create(user: @user, @product: @product) | |
38 package = Package.create(order: order, shipping_address: '123 Street Ave, New York, NY') | |
39 @orders << order | |
40 @packages << package | |
41 end | |
42 end | |
43 | |
44 it 'returns orders and packages for a user' do | |
45 expect(@user.orders.size).to eq(10) | |
46 expect(@user.packages.size).to eq(10) | |
47 end | |
48 | |
49 context '#most_recent_package' do | |
50 it 'returns the most recent package' do | |
51 expect(@user.most_recent_package).to eq(@packages.last) | |
52 end | |
53 | |
54 it 'the most recent package belongs to the last order' do | |
55 expect(@user.most_recent_package.order).to eq(@orders.last) | |
56 end | |
57 end | |
58 | |
59 it 'the has_orders method indicates whether a user has any orders' do | |
60 expect(@user.has_orders).to eq(true) | |
61 end | |
62 end | |
63 end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment