<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -5,6 +5,9 @@ class RsvpObserver &lt; ActiveRecord::Observer
     send_thankyou_email(rsvp)
     subscribe_to_campaign_monitor(rsvp)
   end
+  def after_destroy(rsvp)
+    unsubscribe_from_campaign_monitor(rsvp)
+  end
   def send_thankyou_email(rsvp)
     EventRsvpMailer.deliver_rsvp_thankyou(rsvp)
   end
@@ -13,6 +16,11 @@ class RsvpObserver &lt; ActiveRecord::Observer
       client.add_subscriber(list_id, rsvp.user.email, rsvp.user.full_name)
     end
   end
+  def unsubscribe_from_campaign_monitor(rsvp)
+    if (list_id = rsvp.event.campaign_monitor_list_id) &amp;&amp; (client = campaign_monitor_client)
+      client.remove_subscriber(list_id, rsvp.user.email)
+    end
+  end
   def campaign_monitor_client
     if api_key = APPLICATION_CONFIG.campaign_monitor_api_key
       CampaignMonitor.new(api_key)</diff>
      <filename>app/models/rsvp_observer.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,5 @@
+require 'yaml'
+
 class ApplicationConfig
   attr_reader :flickr_api_key,
               :jeeves_campfire_password,</diff>
      <filename>lib/application_config.rb</filename>
    </modified>
    <modified>
      <diff>@@ -18,6 +18,33 @@ describe RsvpObserver, &quot;#after_save&quot; do
   end
 end
 
+describe RsvpObserver, &quot;#after_destroy&quot; do
+  it &quot;calls unsubscribe_from_campaign_monitor&quot; do
+    observer = RsvpObserver.instance
+    rsvp = mock(&quot;rsvp&quot;)
+    observer.should_receive(:unsubscribe_from_campaign_monitor).with(rsvp)
+    observer.after_destroy(rsvp)
+  end
+end
+
+describe RsvpObserver, &quot;#unsubscribe_to_campaign_monitor&quot; do
+  describe &quot;if event has no campaign_monitor_list_id&quot; do
+    it &quot;does not unsubscribe the user&quot; do
+      pending
+    end
+  end
+  describe &quot;if campaign_monitor_client returns nil&quot; do
+    it &quot;does not unsubscribe the user&quot; do
+      pending
+    end
+  end
+  describe &quot;if theres a campaign_monitor_list_id and campaign_monitor_client&quot; do
+    it &quot;calls remove_subscriber on the client with the list id and email&quot; do
+      pending
+    end
+  end
+end
+
 describe RsvpObserver, &quot;#send_thankyou_email&quot; do
   it &quot;calls EventRsvpMailer.deliver_rsvp_thankyou&quot; do
     observer = RsvpObserver.instance</diff>
      <filename>spec/models/rsvp_observer_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>b552d0a27da31b85ed9d34679eb79e05feec0352</id>
    </parent>
  </parents>
  <author>
    <name>Tim Lucas</name>
    <email>t.lucas@toolmantim.com</email>
  </author>
  <url>http://github.com/toolmantim/webjam/commit/0b666c414b2d10995d728092f2ab26f6e752e39e</url>
  <id>0b666c414b2d10995d728092f2ab26f6e752e39e</id>
  <committed-date>2008-09-09T05:59:30-07:00</committed-date>
  <authored-date>2008-09-09T05:59:02-07:00</authored-date>
  <message>Add CM unsubscribing</message>
  <tree>34c6133f6e9fdf8a34c025f59e10f881534fba3b</tree>
  <committer>
    <name>Tim Lucas</name>
    <email>t.lucas@toolmantim.com</email>
  </committer>
</commit>
