Commit 7cbeda87
Changed files (2)
app
models
spec
models
app/models/user.rb
@@ -45,7 +45,7 @@ class User < ActiveRecord::Base
end
def send_welcome_email
- UserMailer.delay.welcome_email(self)
+ UserMailer.welcome_email(self).deliver_later
Subscription.delay.subscribe(email: email, first_name: name, last_name: '')
end
@@ -66,7 +66,7 @@ class User < ActiveRecord::Base
end
def notify_of_activity
- NotificationMailer.delay.notification_email(self)
+ NotificationMailer.notification_email(self).deliver_later
end
class << self
spec/models/user_spec.rb
@@ -1,21 +1,6 @@
require 'rails_helper'
describe User do
- describe "#properties" do
- it { should respond_to :name }
- it { should respond_to :email }
- it { should respond_to :twitter }
- it { should respond_to :facebook }
- it { should respond_to :city }
- it { should respond_to :password }
- it { should respond_to :website }
- it { should respond_to :interests }
- it { should respond_to :creations }
- it { should respond_to :favorites }
- it { should respond_to :tutorials }
- it { should respond_to :avatar }
- end
-
describe "validations" do
subject { build(:user) }
@@ -45,95 +30,89 @@ describe User do
before(:each) { user.update_attribute(:website, 'http://example.com') }
it "can validate" do
- user.errors[:website].any?.should == false
+ expect(user.errors[:website].any?).to be_falsey
end
it "should not have any validation error messages" do
- user.errors[:website].should === []
+ expect(user.errors[:website]).to be_empty
end
end
describe "when the url is not valid" do
let(:user) { User.new }
- before(:each) { user.update_attributes(:website => 'blah') }
+ before(:each) { user.update(website: 'blah') }
it "cannot validate" do
- user.errors[:website].any?.should == true
+ expect(user.errors[:website].any?).to be_truthy
end
it "should have an error message" do
- user.errors[:website].should === ["is invalid"]
+ expect(user.errors[:website]).to match_array(["is invalid"])
end
end
end
describe "when checking if a user already likes a creation" do
- let(:sut) { create(:user) }
+ subject { create(:user) }
let(:cake) { create(:creation) }
describe "when they do" do
- before :each do
- sut.add_favorite(cake)
- end
-
- let(:result) { sut.already_likes(cake) }
-
- it "should return true" do
- result.should be_truthy
+ it "returns true" do
+ subject.add_favorite(cake)
+ expect(subject.already_likes(cake)).to be_truthy
end
end
describe "when they do not" do
- let(:result) { sut.already_likes(cake) }
+ let(:result) { subject.already_likes(cake) }
it "should return false" do
- result.should be_falsey
+ expect(subject.already_likes(cake)).to be_falsey
end
end
end
describe "when a user adds a cake to their favorites" do
- let(:sut) { create(:user) }
+ subject { create(:user) }
let!(:cake) { create(:creation) }
context "when the cake is already in their favorites" do
- let!(:favorite) { create(:favorite, :creation => cake, :user => sut) }
- let(:result) { sut.add_favorite(cake) }
+ let!(:favorite) { create(:favorite, creation: cake, user: subject) }
it "should return their existing favorite" do
- result.should == favorite
+ expect(subject.add_favorite(cake)).to eql(favorite)
end
end
context "when they have not liked it before" do
- let(:result) { sut.add_favorite(cake) }
+ let(:result) { subject.add_favorite(cake) }
it "should return a new favorite" do
- result.should be_a(Favorite)
+ expect(result).to be_a(Favorite)
end
it "should specify the user" do
- result.user.should == sut
+ expect(result.user).to eql(subject)
end
it "should specify the creation" do
- result.creation.should == cake
+ expect(result.creation).to eql(cake)
end
end
end
describe "send welcome email" do
let(:user) { build(:user) }
- let(:mailer) { double("mailer", welcome_email: true) }
+ let(:mailer) { double("mailer", deliver_later: true) }
before :each do
- UserMailer.stub(:delay).and_return(mailer)
+ UserMailer.stub(:welcome_email).with(user).and_return(mailer)
user.send_welcome_email
end
it "should send the email" do
- mailer.should have_received(:welcome_email).with(user)
+ expect(mailer).to have_received(:deliver_later)
end
end