|
19 | 19 | context "attributes" do
|
20 | 20 |
|
21 | 21 | 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]") |
23 | 23 | end
|
24 | 24 |
|
25 | 25 | 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) |
27 | 27 | end
|
28 | 28 |
|
29 | 29 | 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") |
31 | 31 | end
|
32 | 32 |
|
33 | 33 | context "start_on" do
|
34 | 34 |
|
35 | 35 | it "is an attribute" do
|
36 | 36 | 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) |
38 | 38 | end
|
39 | 39 |
|
40 | 40 | it "defaults to today" do
|
41 | 41 | now = Time.zone.now
|
42 | 42 | today = now.to_date
|
43 | 43 | travel_to now do
|
44 |
| - expect(Subscription.new.start_on).to eq(today) |
| 44 | + expect(build(:subscription).start_on).to eq(today) |
45 | 45 | end
|
46 | 46 | end
|
47 | 47 |
|
|
51 | 51 |
|
52 | 52 | context "validation" do
|
53 | 53 |
|
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]") } |
57 | 55 |
|
58 | 56 | it "requires unique email" do
|
59 |
| - expect(@subscription).to validate_uniqueness_of(:email) |
| 57 | + expect(subscription).to validate_uniqueness_of(:email) |
60 | 58 | end
|
61 | 59 |
|
62 | 60 | it "requires email" do
|
63 |
| - expect(@subscription).to validate_presence_of(:email) |
| 61 | + expect(subscription).to validate_presence_of(:email) |
64 | 62 | end
|
65 | 63 |
|
66 | 64 | it "requires confirmation_token" do
|
67 |
| - expect(@subscription).to validate_presence_of(:confirmation_token) |
| 65 | + expect(subscription).to validate_presence_of(:confirmation_token) |
68 | 66 | end
|
69 | 67 |
|
70 | 68 | it "requires unique confirmation_token" do
|
71 |
| - expect(@subscription).to validate_uniqueness_of(:confirmation_token) |
| 69 | + expect(subscription).to validate_uniqueness_of(:confirmation_token) |
72 | 70 | end
|
73 | 71 |
|
74 | 72 | it "requires start_on" do
|
75 |
| - expect(@subscription).to validate_presence_of(:start_on) |
| 73 | + expect(subscription).to validate_presence_of(:start_on) |
76 | 74 | end
|
77 | 75 | end
|
78 | 76 |
|
|
109 | 107 | describe "#to_param" do
|
110 | 108 |
|
111 | 109 | 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") |
113 | 111 | expect(subscription.to_param).to eq("hello-im-a-token-123")
|
114 | 112 | end
|
115 | 113 |
|
|
191 | 189 |
|
192 | 190 | it "confirms the subscription matching the confirmation_token" do
|
193 | 191 | token = Subscription.generate_confirmation_token
|
194 |
| - subscription = Subscription.create!( |
| 192 | + subscription = create(:subscription, |
195 | 193 |
|
196 | 194 | confirmation_token: token
|
197 | 195 | )
|
|
205 | 203 | end
|
206 | 204 |
|
207 | 205 | it "gracefully handles confirming an already confirmed subscription" do
|
208 |
| - subscription = Subscription.create!( |
| 206 | + subscription = create(:subscription, |
209 | 207 |
|
210 | 208 | confirmation_token: "xyz"
|
211 | 209 | )
|
|
0 commit comments