Skip to content

Instantly share code, notes, and snippets.

@soeffing
Created February 28, 2014 17:24
Show Gist options
  • Save soeffing/9275391 to your computer and use it in GitHub Desktop.
Save soeffing/9275391 to your computer and use it in GitHub Desktop.
Specs - Interview
1 require 'spec_helper'
2
3 describe User do
4 it 'I can create a new user' do
5 user = User.create(email: 'test@example.com', 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: 'test@example.com', 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: 'test@example.com', 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: 'test@example.com', 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