require "spec_helper" describe KudoMailer do describe "batch_kudo_notification" do subject(:email) { KudoMailer.batch_kudo_notification(creator.id, kudos_json) } let!(:creator) { work.users.first } let(:work) { create(:work) } context "when there is one work" do context "with one guest kudos" do let(:kudos_json) do hash = {} hash["#{work.class.name}_#{work.id}"] = { guest_count: 1, names: [] } hash.to_json end it_behaves_like "an email with a valid sender" it "has the correct subject line" do subject = "[#{ArchiveConfig.APP_SHORT_NAME}] You've got kudos!" expect(email).to have_subject(subject) end # Test both body contents it_behaves_like "a multipart email" it_behaves_like "a translated email" describe "HTML version" do it "has the correct content" do expect(email).to have_html_part_content("A guest") expect(email).to have_html_part_content("left kudos on <") end end describe "text version" do it "has the correct content" do expect(email).to have_text_part_content("A guest left kudos on \"#{work.title}\"") end end end context "with one user kudos" do let(:reader) { create(:user) } let(:kudos_json) do hash = {} hash["#{work.class.name}_#{work.id}"] = { guest_count: 0, names: [reader.login] } hash.to_json end it_behaves_like "an email with a valid sender" it "has the correct subject line" do subject = "[#{ArchiveConfig.APP_SHORT_NAME}] You've got kudos!" expect(email).to have_subject(subject) end # Test both body contents it_behaves_like "a multipart email" it_behaves_like "a translated email" describe "HTML version" do it "has the correct content" do expect(email).to have_html_part_content("#{reader.login}") expect(email).to have_html_part_content("left kudos on <") end end describe "text version" do it "has the correct content" do expect(email).to have_text_part_content("#{reader.login} left kudos on \"#{work.title}\"") end end end end end end