<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>javascripts/cookie.js</filename>
    </added>
    <added>
      <filename>test/js_unit/cookie_test.html</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,2 +1,6 @@
+- Flash on the Rails side is cleared when written to the cookie
+- Uses existing cookie flash value
+- Using Scriptaculous cookie.js library
+
 0.1.1
 - Added cookies.js
\ No newline at end of file</diff>
      <filename>CHANGES</filename>
    </modified>
    <modified>
      <diff>@@ -13,9 +13,9 @@ else
   cp &quot;#{dir}/json.js&quot;, rails_javascripts_dir
 end
 
-if File.exists?(&quot;#{rails_javascripts_dir}/cookies.js&quot;)
-  puts &quot;#{rails_javascripts_dir}/cookies.js already exists&quot;
+if File.exists?(&quot;#{rails_javascripts_dir}/cookie.js&quot;)
+  puts &quot;#{rails_javascripts_dir}/cookie.js already exists&quot;
 else
-  puts &quot;copying cookies.js to #{rails_javascripts_dir}&quot;
-  cp &quot;#{dir}/cookies.js&quot;, rails_javascripts_dir
+  puts &quot;copying cookie.js to #{rails_javascripts_dir}&quot;
+  cp &quot;#{dir}/cookie.js&quot;, rails_javascripts_dir
 end</diff>
      <filename>install.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,10 +3,10 @@ var Flash = new Object();
 Flash.data = {};
 
 Flash.transferFromCookies = function() {
-  var data = JSON.parse(unescape(Cookies.read(&quot;flash&quot;)));
+  var data = JSON.parse(unescape(Cookie.get(&quot;flash&quot;)));
   if(!data) data = {};
   Flash.data = data;
-  Cookies.expire(&quot;flash&quot;);
+  Cookie.erase(&quot;flash&quot;);
 };
 
 Flash.writeDataTo = function(name, element) {</diff>
      <filename>javascripts/flash.js</filename>
    </modified>
    <modified>
      <diff>@@ -4,6 +4,17 @@ module CacheableFlash
   end
 
   def write_flash_to_cookie
-    cookies['flash'] = flash.to_json
+    cookie_flash = cookies['flash'] ? JSON.parse(cookies['flash']) : {}
+
+    flash.each do |key, value|
+      if cookie_flash[key.to_s].blank?
+        cookie_flash[key.to_s] = value
+      else
+        cookie_flash[key.to_s] &lt;&lt; &quot;&lt;br/&gt;#{value}&quot;
+      end
+    end
+
+    cookies['flash'] = cookie_flash.to_json
+    flash.clear
   end
 end</diff>
      <filename>lib/cacheable_flash.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,9 +4,11 @@ require &quot;#{dir}/../test_helper&quot;
 class CacheableFlashTest &lt; Test::Unit::TestCase
   def setup
     @controller_class = Struct.new(:cookies, :flash)
-    @controller_class.stubs(:after_filter)
+    stub(@controller_class).after_filter
     @controller_class.send(:include, CacheableFlash)
     @controller = @controller_class.new({}, {})
+    @cookies = {}
+    stub(@controller).cookies {@cookies}
   end
   
   def test_write_flash_to_cookie
@@ -14,17 +16,48 @@ class CacheableFlashTest &lt; Test::Unit::TestCase
       'errors' =&gt; &quot;This is an Error&quot;,
       'notice' =&gt; &quot;This is a Notice&quot;
     }
-    @controller.flash = expected_flash
+    @controller.flash = expected_flash.dup
     @controller.write_flash_to_cookie
 
     assert_equal expected_flash, JSON.parse(@controller.cookies['flash'])
   end
+
+  def test_flash_is_appended_to_existing_flash_cookie
+    @cookies['flash'] = {
+      'notice' =&gt; &quot;Existing notice&quot;,
+      'errors' =&gt; &quot;Existing errors&quot;,
+    }.to_json
+
+    @controller.flash = {
+      'notice' =&gt; 'New notice',
+      'errors' =&gt; 'New errors',
+    }
+
+    @controller.write_flash_to_cookie
+
+    expected_flash = {
+      'notice' =&gt; &quot;Existing notice&lt;br/&gt;New notice&quot;,
+      'errors' =&gt; &quot;Existing errors&lt;br/&gt;New errors&quot;,
+    }
+    assert_equal expected_flash, JSON.parse(@controller.cookies['flash'])
+  end
+
+  def test_flash_is_cleared
+    flash = {
+      'errors' =&gt; &quot;This is an Error&quot;,
+      'notice' =&gt; &quot;This is a Notice&quot;
+    }
+    @controller.flash = flash
+    @controller.write_flash_to_cookie
+
+    assert_equal({}, @controller.flash)
+  end
 end
 
 class CacheableFlashAfterFilterTest &lt; Test::Unit::TestCase
   def test_after_filter_is_set
     @controller_class = Struct.new(:cookies, :flash)
-    @controller_class.expects(:after_filter).with(:write_flash_to_cookie)
+    mock(@controller_class).after_filter(:write_flash_to_cookie)
     @controller_class.send(:include, CacheableFlash)
   end
 end
\ No newline at end of file</diff>
      <filename>test/cacheable_flash/cacheable_flash_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -24,11 +24,11 @@ class InstallTest &lt; Test::Unit::TestCase
   def test_install_without_json_js_file
     assert !File.exists?(&quot;#{@js_dir}/flash.js&quot;)
     assert !File.exists?(&quot;#{@js_dir}/json.js&quot;)
-    assert !File.exists?(&quot;#{@js_dir}/cookies.js&quot;)
+    assert !File.exists?(&quot;#{@js_dir}/cookie.js&quot;)
     load(@install_path)
     assert File.exists?(&quot;#{@js_dir}/flash.js&quot;)
     assert File.exists?(&quot;#{@js_dir}/json.js&quot;)
-    assert File.exists?(&quot;#{@js_dir}/cookies.js&quot;)
+    assert File.exists?(&quot;#{@js_dir}/cookie.js&quot;)
   end
 
   def test_install_with_json_js_file
@@ -37,25 +37,25 @@ class InstallTest &lt; Test::Unit::TestCase
     end
     assert File.exists?(&quot;#{@js_dir}/json.js&quot;)
     assert !File.exists?(&quot;#{@js_dir}/flash.js&quot;)
-    assert !File.exists?(&quot;#{@js_dir}/cookies.js&quot;)
+    assert !File.exists?(&quot;#{@js_dir}/cookie.js&quot;)
     load(@install_path)
     assert File.exists?(&quot;#{@js_dir}/flash.js&quot;)
     assert File.exists?(&quot;#{@js_dir}/json.js&quot;)
-    assert File.exists?(&quot;#{@js_dir}/cookies.js&quot;)
+    assert File.exists?(&quot;#{@js_dir}/cookie.js&quot;)
     assert_equal &quot;Original json.js&quot;, File.read(&quot;#{@js_dir}/json.js&quot;)
   end
 
   def test_install_with_cookies_js_file
-    File.open(&quot;#{@js_dir}/cookies.js&quot;, &quot;w&quot;) do |f|
-      f.write &quot;Original cookies.js&quot;
+    File.open(&quot;#{@js_dir}/cookie.js&quot;, &quot;w&quot;) do |f|
+      f.write &quot;Original cookie.js&quot;
     end
     assert !File.exists?(&quot;#{@js_dir}/json.js&quot;)
     assert !File.exists?(&quot;#{@js_dir}/flash.js&quot;)
-    assert File.exists?(&quot;#{@js_dir}/cookies.js&quot;)
+    assert File.exists?(&quot;#{@js_dir}/cookie.js&quot;)
     load(@install_path)
     assert File.exists?(&quot;#{@js_dir}/flash.js&quot;)
     assert File.exists?(&quot;#{@js_dir}/json.js&quot;)
-    assert File.exists?(&quot;#{@js_dir}/cookies.js&quot;)
-    assert_equal &quot;Original cookies.js&quot;, File.read(&quot;#{@js_dir}/cookies.js&quot;)
+    assert File.exists?(&quot;#{@js_dir}/cookie.js&quot;)
+    assert_equal &quot;Original cookie.js&quot;, File.read(&quot;#{@js_dir}/cookie.js&quot;)
   end
 end
\ No newline at end of file</diff>
      <filename>test/cacheable_flash/install_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,20 +2,27 @@
   &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
 &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
 &lt;head&gt;
-  &lt;script src=&quot;../../javascripts/prototype.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-  &lt;script src=&quot;../../javascripts/cookies.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-  &lt;script src=&quot;../../javascripts/flash.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-  
+    &lt;script src=&quot;../js-common/include.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;../cpr-include.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
+  &lt;script type=&quot;text/javascript&quot;&gt;
+    Include.jsUnitCore();
+    Include.allProduction();
+    Include.allCommonTest();
+    Include.testHelper();
+
+
+  &lt;/script&gt;
+
   &lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
   var content;
   function setUp() {
     content = $('content');
     content.innerHTML = &quot;&quot;;
-    Cookies.expireAll();
+    Cookie.eraseAll();
   }
 
   function tearDown() {
-    Cookies.expireAll();
+    Cookie.eraseAll();
   }
 
   function test_transferFromCookies_setsFlashData_whenCookieExists() {
@@ -45,7 +52,7 @@
       'notice': &quot;The Notice&quot;
     });
     Flash.transferFromCookies();
-    assertNull(Cookies.read(&quot;flash&quot;));
+    assertNull(Cookie.get(&quot;flash&quot;));
   }
 
   function test_writeDataTo_whenThereIsACookieValue() {
@@ -78,7 +85,7 @@
   }
 
   function setUpCookieWithData(values) {
-    Cookies.write('flash', JSON.stringify(values));
+    Cookie.set('flash', JSON.stringify(values));
   }
 
   &lt;/script&gt;</diff>
      <filename>test/js_unit/flash_test.html</filename>
    </modified>
    <modified>
      <diff>@@ -1,10 +1,15 @@
 require &quot;rubygems&quot;
 require &quot;test/unit&quot;
 require &quot;json&quot;
-require &quot;mocha&quot;
+require &quot;rr&quot;
 require &quot;tmpdir&quot;
 require &quot;fileutils&quot;
+require &quot;active_support&quot;
 
 dir = File.dirname(__FILE__)
 $LOAD_PATH &lt;&lt; &quot;#{dir}/../lib&quot;
 require &quot;cacheable_flash&quot;
+
+class Test::Unit::TestCase
+  include RR::Adapters::TestUnit
+end
\ No newline at end of file</diff>
      <filename>test/test_helper.rb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>javascripts/cookies.js</filename>
    </removed>
    <removed>
      <filename>test/js_unit/cookies_test.html</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>3ba0a732f9f278d31e835a0ce165e1695ce41e8c</id>
    </parent>
  </parents>
  <author>
    <name>btakita</name>
    <email>btakita@af276e61-6b34-4dac-905b-574b5f35ef33</email>
  </author>
  <url>http://github.com/pivotal/cacheable-flash/commit/d2cb0aed2be000ede6f49738f6ce255080645b8e</url>
  <id>d2cb0aed2be000ede6f49738f6ce255080645b8e</id>
  <committed-date>2007-07-29T22:51:37-07:00</committed-date>
  <authored-date>2007-07-29T22:51:37-07:00</authored-date>
  <message>- Flash on the Rails side is cleared when written to the cookie
- Uses existing cookie flash value
- Using Scriptaculous cookie.js library

git-svn-id: svn+ssh://rubyforge.org/var/svn/pivotalrb/cacheable_flash/trunk@591 af276e61-6b34-4dac-905b-574b5f35ef33</message>
  <tree>092c57c221254743359964de573129786589c639</tree>
  <committer>
    <name>btakita</name>
    <email>btakita@af276e61-6b34-4dac-905b-574b5f35ef33</email>
  </committer>
</commit>
