email_concern.rb 2.4KB

    require 'spec_helper' shared_examples_for EmailConcern do let(:valid_options) { { :subject => "hello!", :expected_receive_period_in_days => "2" } } let(:agent) do _agent = described_class.new(:name => "some email agent", :options => valid_options) _agent.user = users(:jane) _agent end describe "validations" do it "should be valid" do agent.should be_valid end it "should validate the presence of 'subject'" do agent.options['subject'] = '' agent.should_not be_valid agent.options['subject'] = nil agent.should_not be_valid end it "should validate the presence of 'expected_receive_period_in_days'" do agent.options['expected_receive_period_in_days'] = '' agent.should_not be_valid agent.options['expected_receive_period_in_days'] = nil agent.should_not be_valid end it "should validate that recipients, when provided, is one or more valid email addresses" do agent.options['recipients'] = '' agent.should be_valid agent.options['recipients'] = nil agent.should be_valid agent.options['recipients'] = 'bob@example.com' agent.should be_valid agent.options['recipients'] = ['bob@example.com'] agent.should be_valid agent.options['recipients'] = ['bob@example.com', 'jane@example.com'] agent.should be_valid agent.options['recipients'] = ['bob@example.com', 'example.com'] agent.should_not be_valid agent.options['recipients'] = ['hi!'] agent.should_not be_valid agent.options['recipients'] = { :foo => "bar" } agent.should_not be_valid agent.options['recipients'] = "wut" agent.should_not be_valid end end describe "#recipients" do it "defaults to the user's email address" do agent.recipients.should == [users(:jane).email] end it "wraps a string with an array" do agent.options['recipients'] = 'bob@bob.com' agent.recipients.should == ['bob@bob.com'] end it "handles an array" do agent.options['recipients'] = ['bob@bob.com', 'jane@jane.com'] agent.recipients.should == ['bob@bob.com', 'jane@jane.com'] end it "interpolates" do agent.options['recipients'] = "{{ username }}@{{ domain }}" agent.recipients('username' => 'bob', 'domain' => 'example.com').should == ["bob@example.com"] end end end