require 'spec_helper' def reload_models #if defined?(PolicyManager::ApplicationMailer) # PolicyManager.send(:remove_const, :"ApplicationMailer") # load PolicyManager::Engine.root + 'app/mailers/policy_manager/application_mailer.rb' #end #if defined?(User) # Object.send(:remove_const, :User) # load Rails.root + 'app/models/user.rb' #end end module PolicyManager describe PortabilityMailer do before :each do @exporter_config = { path: Rails.root + "tmp/export", resource: User , index_template: '<h1>index template, custom</h1> <ul> <% @collection.each do |rule| %> <li><%= link_to rule.name, "./#{rule.name}/index.html" %></li> <% end %> </ul>', after_zip: ->(zip_path, resource){ puts "THIS IS GREAT #{zip_path} was zipped, now what ??" } } Config.stubs(:from_email).returns("foo@bar.org") end it "progress notification with custom template" do @config = PolicyManager::Config.setup do |c| c.from_email = "foo@bar.org" c.admin_email_inbox = "foo@baaz.org" c.exporter = @exporter_config.merge({mailer_templates: { path: "user_mailer", progress: "progress" } }) end reload_models user = User.create(email: "a@a.cl") assert !user.errors.any? preq = user.portability_requests.create preq.confirm! sent_email = PortabilityMailer.progress_notification(preq.id) assert_equal [@config.from_email], sent_email.from assert_equal [user.email], sent_email.to assert_equal 'Your data is being handled', sent_email.subject assert_match 'in progress!', sent_email.body.to_s end it "progress notification with default template" do @config = PolicyManager::Config.setup do |c| c.from_email = "foo@bar.org" c.admin_email_inbox = "foo@baaz.org" c.exporter = @exporter_config end reload_models user = User.create(email: "a@a.cl") assert !user.errors.any? preq = user.portability_requests.create preq.confirm! sent_email = PortabilityMailer.progress_notification(preq.id) assert_equal [@config.from_email], sent_email.from assert_equal [user.email], sent_email.to assert_equal 'Your data is being handled', sent_email.subject assert_match 'hello your files are being downloaded', sent_email.body.to_s end it "completed notification with custom template" do @config = PolicyManager::Config.setup do |c| c.from_email = "foo@bar.org" c.admin_email_inbox = "foo@baaz.org" c.exporter = @exporter_config.merge!({mailer_templates: { path: "user_mailer", complete: "complete", progress: "progress" } }) end reload_models user = User.create(email: "a@a.cl") assert !user.errors.any? preq = user.portability_requests.create preq.confirm! preq.complete! sent_email = PortabilityMailer.completed_notification(preq.id) assert_equal [@config.from_email], sent_email.from assert_equal [user.email], sent_email.to assert_equal 'Your data is available', sent_email.subject assert_match 'completed!', sent_email.body.to_s end it "completed notification with default template" do @config = PolicyManager::Config.setup do |c| c.from_email = "foo@bar.org" c.admin_email_inbox = "foo@baaz.org" c.exporter = @exporter_config end reload_models user = User.create(email: "a@a.cl") assert !user.errors.any? preq = user.portability_requests.create preq.confirm! preq.complete! sent_email = PortabilityMailer.completed_notification(preq.id) assert_equal [@config.from_email], sent_email.from assert_equal [user.email], sent_email.to assert_equal 'Your data is available', sent_email.subject assert_match 'your complete data was processed and can be downloaded', sent_email.body.to_s end it "admin notification with custom template" do @config = PolicyManager::Config.setup do |c| c.from_email = "foo@bar.org" c.admin_email_inbox = -> (o){ "foo@bar.org" } c.exporter = @exporter_config.merge({mailer_templates: { path: "user_mailer", complete: "complete", progress: "progress", admin: "admin" } }) end reload_models user = User.create(email: "a@a.cl") assert !user.errors.any? preq = user.portability_requests.create preq.confirm! sent_email = PortabilityMailer.admin_notification(user.id) assert_equal [@config.from_email], sent_email.from assert_equal [@config.from_email], sent_email.to assert_equal 'User ' + user.email + ' sent a portability request', sent_email.subject assert_match 'admin portability notification', sent_email.body.to_s end it "admin notification with default template" do @config = PolicyManager::Config.setup do |c| c.from_email = "foo@bar.org" c.exporter = @exporter_config c.admin_email_inbox = "foo@bar.org" end reload_models user = User.create(email: "a@a.cl") assert !user.errors.any? preq = user.portability_requests.create preq.confirm! sent_email = PortabilityMailer.admin_notification(user.id) assert_equal [@config.from_email], sent_email.from assert_equal [@config.from_email], sent_email.to assert_equal 'User ' + user.email + ' sent a portability request', sent_email.subject assert_match 'hello, the user ' + user.email + ' sent a portability request.', sent_email.body.to_s end end end