Skip to content

Commit 32054c5

Browse files
committed
Merge pull request #91 from vinhnglx/use-factory-girl
Use factory girl
2 parents f205fb6 + 303963d commit 32054c5

File tree

2 files changed

+28
-22
lines changed

2 files changed

+28
-22
lines changed

spec/controllers/subscriptions_controller_spec.rb

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
RSpec.describe SubscriptionsController, :type => :controller do
44

55
context "GET new" do
6-
6+
77
it "assigns a blank subscription to the view" do
88
get :new
99
expect(assigns(:subscription)).to be_a_new(Subscription)
@@ -12,7 +12,7 @@
1212
end
1313

1414
context "POST create" do
15-
15+
1616
it "redirects to pending subscriptions page" do
1717
params = { subscription: { email: "[email protected]", start_on: "2014-12-31" } }
1818
post :create, params
@@ -23,20 +23,28 @@
2323
it "calls Subscription.create_and_request_confirmation(params)" do
2424
2525
start_on = "2015-02-28"
26-
26+
2727
expect(Subscription).to receive(:create_and_request_confirmation)
2828
.with({ email: email, start_on: start_on })
2929

3030
post :create, { subscription: { email: email, start_on: start_on } }
3131
end
3232

33+
it "raises an error if missing params email" do
34+
params = { subscription: { start_on: "2015-09-28" } }
35+
36+
expect do
37+
post :create, params
38+
end.to raise_error ActiveRecord::RecordInvalid
39+
end
40+
3341
end
3442

3543
context "GET confirm" do
36-
44+
3745
it "confirms the subscription" do
38-
subscription = Subscription.create!(
39-
email: "[email protected]",
46+
subscription = create(:subscription,
47+
4048
confirmation_token: Subscription.generate_confirmation_token
4149
)
4250
expect(subscription.confirmed?).to eq(false)

spec/models/subscription_spec.rb

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,29 +19,29 @@
1919
context "attributes" do
2020

2121
it "has email" do
22-
expect(Subscription.new(email: "[email protected]")).to have_attributes(email: "[email protected]")
22+
expect(build(:subscription, email: "[email protected]")).to have_attributes(email: "[email protected]")
2323
end
2424

2525
it "has confirmed" do
26-
expect(Subscription.new(confirmed: true)).to have_attributes(confirmed: true)
26+
expect(build(:subscription, confirmed: true)).to have_attributes(confirmed: true)
2727
end
2828

2929
it "has confirmation_token" do
30-
expect(Subscription.new(confirmation_token: "what-a-token")).to have_attributes(confirmation_token: "what-a-token")
30+
expect(build(:subscription, confirmation_token: "what-a-token")).to have_attributes(confirmation_token: "what-a-token")
3131
end
3232

3333
context "start_on" do
3434

3535
it "is an attribute" do
3636
today = Date.today
37-
expect(Subscription.new(start_on: Date.today)).to have_attributes(start_on: today)
37+
expect(build(:subscription, start_on: Date.today)).to have_attributes(start_on: today)
3838
end
3939

4040
it "defaults to today" do
4141
now = Time.zone.now
4242
today = now.to_date
4343
travel_to now do
44-
expect(Subscription.new.start_on).to eq(today)
44+
expect(build(:subscription).start_on).to eq(today)
4545
end
4646
end
4747

@@ -51,28 +51,26 @@
5151

5252
context "validation" do
5353

54-
before do
55-
@subscription = Subscription.new(confirmation_token: "token", email: "[email protected]")
56-
end
54+
let(:subscription) { build(:subscription, confirmation_token: "token", email: "[email protected]") }
5755

5856
it "requires unique email" do
59-
expect(@subscription).to validate_uniqueness_of(:email)
57+
expect(subscription).to validate_uniqueness_of(:email)
6058
end
6159

6260
it "requires email" do
63-
expect(@subscription).to validate_presence_of(:email)
61+
expect(subscription).to validate_presence_of(:email)
6462
end
6563

6664
it "requires confirmation_token" do
67-
expect(@subscription).to validate_presence_of(:confirmation_token)
65+
expect(subscription).to validate_presence_of(:confirmation_token)
6866
end
6967

7068
it "requires unique confirmation_token" do
71-
expect(@subscription).to validate_uniqueness_of(:confirmation_token)
69+
expect(subscription).to validate_uniqueness_of(:confirmation_token)
7270
end
7371

7472
it "requires start_on" do
75-
expect(@subscription).to validate_presence_of(:start_on)
73+
expect(subscription).to validate_presence_of(:start_on)
7674
end
7775
end
7876

@@ -109,7 +107,7 @@
109107
describe "#to_param" do
110108

111109
it "uses confirmation_token as the default identifier for routes" do
112-
subscription = Subscription.new(confirmation_token: "hello-im-a-token-123")
110+
subscription = build(:subscription, confirmation_token: "hello-im-a-token-123")
113111
expect(subscription.to_param).to eq("hello-im-a-token-123")
114112
end
115113

@@ -191,7 +189,7 @@
191189

192190
it "confirms the subscription matching the confirmation_token" do
193191
token = Subscription.generate_confirmation_token
194-
subscription = Subscription.create!(
192+
subscription = create(:subscription,
195193
196194
confirmation_token: token
197195
)
@@ -205,7 +203,7 @@
205203
end
206204

207205
it "gracefully handles confirming an already confirmed subscription" do
208-
subscription = Subscription.create!(
206+
subscription = create(:subscription,
209207
210208
confirmation_token: "xyz"
211209
)

0 commit comments

Comments
 (0)