From b7541657a47f237ccbb86faecb18623d1c34f3e9 Mon Sep 17 00:00:00 2001 From: mo khan Date: Mon, 22 Jul 2013 12:04:10 -0600 Subject: allow signups to subscribe to a mailing list --- .env | 1 + .env.production | 1 + .env.test | 2 ++ app/models/sign_up.rb | 13 +++++++++++++ config/initializers/gibbon.rb | 3 +++ spec/models/sign_up_spec.rb | 19 +++++++++++++++++++ 6 files changed, 39 insertions(+) create mode 100644 .env.test create mode 100644 config/initializers/gibbon.rb diff --git a/.env b/.env index 386cfe8..d14cb68 100644 --- a/.env +++ b/.env @@ -1 +1,2 @@ MAILCHIMP_LIST_ID=2891390fa3 +MAILCHIMP_API_KEY=3360d22bdc4febedeaea9b3f953e46f5-us7 diff --git a/.env.production b/.env.production index 4c5de85..a78c8d3 100644 --- a/.env.production +++ b/.env.production @@ -1 +1,2 @@ MAILCHIMP_LIST_ID=49ab52c1f9 +MAILCHIMP_API_KEY=3360d22bdc4febedeaea9b3f953e46f5-us7 diff --git a/.env.test b/.env.test new file mode 100644 index 0000000..d14cb68 --- /dev/null +++ b/.env.test @@ -0,0 +1,2 @@ +MAILCHIMP_LIST_ID=2891390fa3 +MAILCHIMP_API_KEY=3360d22bdc4febedeaea9b3f953e46f5-us7 diff --git a/app/models/sign_up.rb b/app/models/sign_up.rb index faa2ab7..277d92b 100644 --- a/app/models/sign_up.rb +++ b/app/models/sign_up.rb @@ -2,4 +2,17 @@ class SignUp < ActiveRecord::Base VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i validates :email, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false } + + def subscribe + gibbon = Gibbon.new + gibbon.list_subscribe({ + id: ENV['MAILCHIMP_LIST_ID'], + email_address: self.email, + email_type: "html", + double_optin: false, + update_existing: true, + replace_interests: false, + send_welcome: false + }) + end end diff --git a/config/initializers/gibbon.rb b/config/initializers/gibbon.rb new file mode 100644 index 0000000..cd8bdcc --- /dev/null +++ b/config/initializers/gibbon.rb @@ -0,0 +1,3 @@ +Gibbon.api_key = ENV["MAILCHIMP_API_KEY"] +Gibbon.timeout = 15 +Gibbon.throws_exceptions = false diff --git a/spec/models/sign_up_spec.rb b/spec/models/sign_up_spec.rb index e43bbf3..0c27680 100644 --- a/spec/models/sign_up_spec.rb +++ b/spec/models/sign_up_spec.rb @@ -8,4 +8,23 @@ describe SignUp do subject { @sign_up } it { should respond_to(:email) } + + context :subscribe do + let(:sign_up) { SignUp.new(email: email) } + let(:gibbon) { Gibbon.new(ENV['MAILCHIMP_API_KEY']) } + let(:email) { 'example@parleytool.com' } + + before :each do + sign_up.subscribe + end + + after :each do + gibbon.list_unsubscribe(id: ENV['MAILCHIMP_LIST_ID'], email_address: email) + end + + it "should subscribe to the mailchimp email list" do + results = gibbon.lists_for_email(email_address: email) + results.should include(ENV['MAILCHIMP_LIST_ID']) + end + end end -- cgit v1.2.3