summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.env1
-rw-r--r--.env.production1
-rw-r--r--.env.test2
-rw-r--r--app/models/sign_up.rb13
-rw-r--r--config/initializers/gibbon.rb3
-rw-r--r--spec/models/sign_up_spec.rb19
6 files changed, 39 insertions, 0 deletions
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