<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>spec/models/safe_erb_template.html.erb</filename>
    </added>
    <added>
      <filename>vendor/gems/emk-safe_erb-0.1.2/.specification</filename>
    </added>
    <added>
      <filename>vendor/gems/emk-safe_erb-0.1.2/MIT-LICENSE</filename>
    </added>
    <added>
      <filename>vendor/gems/emk-safe_erb-0.1.2/README</filename>
    </added>
    <added>
      <filename>vendor/gems/emk-safe_erb-0.1.2/Rakefile</filename>
    </added>
    <added>
      <filename>vendor/gems/emk-safe_erb-0.1.2/lib/safe_erb.rb</filename>
    </added>
    <added>
      <filename>vendor/gems/emk-safe_erb-0.1.2/lib/safe_erb/action_view_extensions.rb</filename>
    </added>
    <added>
      <filename>vendor/gems/emk-safe_erb-0.1.2/lib/safe_erb/common.rb</filename>
    </added>
    <added>
      <filename>vendor/gems/emk-safe_erb-0.1.2/lib/safe_erb/erb_extensions.rb</filename>
    </added>
    <added>
      <filename>vendor/gems/emk-safe_erb-0.1.2/lib/safe_erb/rails_1.rb</filename>
    </added>
    <added>
      <filename>vendor/gems/emk-safe_erb-0.1.2/lib/safe_erb/rails_2.rb</filename>
    </added>
    <added>
      <filename>vendor/gems/emk-safe_erb-0.1.2/lib/safe_erb/sqlite3_fix.rb</filename>
    </added>
    <added>
      <filename>vendor/gems/emk-safe_erb-0.1.2/lib/safe_erb/tag_helper.rb</filename>
    </added>
    <added>
      <filename>vendor/gems/emk-safe_erb-0.1.2/rails/init.rb</filename>
    </added>
    <added>
      <filename>vendor/gems/emk-safe_erb-0.1.2/test/safe_erb_test.rb</filename>
    </added>
    <added>
      <filename>vendor/gems/emk-safe_erb-0.1.2/test/tag_helper_test.rb</filename>
    </added>
    <added>
      <filename>vendor/gems/emk-safe_erb-0.1.2/test/test_helper.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -11,9 +11,17 @@ class Event &lt; ActiveRecord::Base
   belongs_to :comment
   belongs_to :site
 
+  def self.mode_from(record)
+    case
+      when record.is_a?(Comment) then 'comment'
+      when record.new_record?    then 'publish'
+      else 'edit'
+    end
+  end
+
   protected
     def content_and_user_added
-      errors.add_to_base &quot;Title or Body must be changed&quot; unless %w(publish comment).include?(mode) || article.changed.include?('title') || article.changed.include?('body')
+      errors.add_to_base &quot;Title or Body must be changed&quot; unless %w(publish comment).include?(mode) || article.title_changed? || article.body_changed?
       errors.add_to_base &quot;User must be provided for Article events&quot;   unless (mode == 'comment' &amp;&amp; author) || user_id
     end
 end</diff>
      <filename>app/models/event.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 &lt;li class=&quot;event-revision&lt;%= &quot; shade&quot; if defined?(shaded) &amp;&amp; shaded == true %&gt;&quot;&gt;
   &lt;span class=&quot;event-time&quot;&gt;&lt;%= event_time_for event, later %&gt;&lt;/span&gt;
   &lt;%= link_to h(event.title), :controller =&gt; 'articles', :action =&gt; 'edit', :id =&gt; event.article_id %&gt; was revised.
-  &lt;span class=&quot;meta&quot;&gt;by &lt;%= link_to who(event.user.login), :controller =&gt; 'users', :action =&gt; 'show', :id =&gt; event.user %&gt;&lt;/span&gt;
+  &lt;span class=&quot;meta&quot;&gt;by &lt;%= link_to h(who(event.user.login)), :controller =&gt; 'users', :action =&gt; 'show', :id =&gt; event.user %&gt;&lt;/span&gt;
 &lt;/li&gt;
\ No newline at end of file</diff>
      <filename>app/views/admin/overview/_edit_event.rhtml</filename>
    </modified>
    <modified>
      <diff>@@ -87,7 +87,7 @@ Rails::Initializer.run do |config|
   config.gem 'mocha'
   config.gem 'coderay'
   config.gem 'tzinfo', :version =&gt; '&gt;= 0.3.12'
-  config.gem 'emk-safe_erb', :version =&gt; '&gt;= 0.1.1', :lib =&gt; 'safe_erb',
+  config.gem 'emk-safe_erb', :version =&gt; '&gt;= 0.1.2', :lib =&gt; 'safe_erb',
              :source =&gt; 'http://gems.github.com'
 end
 </diff>
      <filename>config/environment.rb</filename>
    </modified>
    <modified>
      <diff>@@ -30,7 +30,7 @@ User.blueprint do
   token            { 'quentintoken' }
   admin            { false }
   salt             { '7e3041ebc2fc05a40c60028e2c4901a81035d3cd' }
-  crypted_password { '00742970dc9e6319f8019fd54864d3ea740f04b1' }
+  crypted_password { '00742970dc9e6319f8019fd54864d3ea740f04b1' } # test
 end
 
 Membership.blueprint do
@@ -62,3 +62,27 @@ end
 Tag.blueprint do
   name         { Sham.tag }
 end
+
+Event.class_eval do
+  blueprint do
+    site
+    mode       { 'publish' } # or 'edit', 'comment'
+    title      { Sham.title }
+    body       { Sham.body }
+    created_at { Time.now - 3.days }
+    # These can be nil, depending on the type of comment
+    # author
+    # comment
+    # user 
+  end
+
+  def self.make_from(record)
+    options = {:title =&gt; record.title, :body =&gt; record.body, :site =&gt; record.site, :mode =&gt; Event.mode_from(record)}
+    if record.is_a?(Comment)
+      options.update :article =&gt; record.article, :comment =&gt; record, :author =&gt; record.author
+    else
+      options.update :article =&gt; record, :user =&gt; record.updater || record.user
+    end
+    Event.make(options)
+  end
+end
\ No newline at end of file</diff>
      <filename>spec/blueprints.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,20 +1,20 @@
 require File.dirname(__FILE__) + '/../spec_helper'
 
 # Verify that our safe_erb patches are working.
-describe &quot;An ERB template&quot; do
+describe ActionView::Template do
   before :each do
-    @template = ERB.new('&lt;%= var %&gt;')
+    path = File.join(File.dirname(__FILE__), 'safe_erb_template.html.erb')
+    @template = ActionView::Template.new(path)
+    @view = ActionView::Base.new
   end
 
   it &quot;should not raise an error when untained values are interpolated&quot; do
-    var = &quot;foo&quot;
-    assert_equal var, @template.result(binding)
+    assert_equal &quot;foo\n&quot;, @template.render_template(@view, :var =&gt; 'foo')
   end
 
-  it &quot;should raise an error when tained values are interpolated&quot; do
-    assert_raise RuntimeError do
-      var = &quot;foo&quot;.taint
-      @template.result(binding)
+  it &quot;should fail when tainted values are interpolated into HTML&quot; do
+    assert_raise ActionView::TemplateError do
+      @template.render_template(@view, :var =&gt; 'foo'.taint)
     end
   end
 end</diff>
      <filename>spec/models/safe_erb_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,13 +3,13 @@ require File.dirname(__FILE__) + '/../../test_helper'
 # Re-raise errors caught by the controller.
 class Admin::OverviewController; def rescue_action(e) raise e end; end
 
-class Admin::OverviewControllerTest &lt; Test::Unit::TestCase
-  fixtures :users, :contents, :events, :sites, :memberships
+class Admin::OverviewControllerTest &lt; ActionController::TestCase
   def setup
-    @controller = Admin::OverviewController.new
-    @request    = ActionController::TestRequest.new
-    @response   = ActionController::TestResponse.new
-    login_as :quentin
+    Site.transaction do
+      [Site, User, Event, Article, Membership].each &amp;:delete_all
+    end
+    @site   = Site.make
+    host! @site.host
   end
 
   def test_routing
@@ -20,41 +20,62 @@ class Admin::OverviewControllerTest &lt; Test::Unit::TestCase
   end
 
   def test_should_allow_site_admins_to_access_site
-    login_as :arthur
+    @user = User.make
+    Membership.make :user =&gt; @user, :site =&gt; @site, :admin =&gt; true
+    @request.session[:user] = User.authenticate_for(@site, @user.login, 'test')
+
     get :index
     assert_response :success
   end
 
   def test_should_allow_site_members_to_acces_overview
-    login_as :ben
-    get :index
-    assert_response :success
-  end
+    @user = User.make
+    Membership.make :user =&gt; @user, :site =&gt; @site, :admin =&gt; false
+    @request.session[:user] = User.authenticate_for(@site, @user.login, 'test')
 
-  def test_should_not_explode_on_home_page
     get :index
     assert_response :success
   end
-
+  
   def test_should_require_http_auth_on_feed
     get :feed
     assert_response 401
   end
-
-  def test_should_require_http_auth_on_feed
-    @request.env['HTTP_AUTHORIZATION'] = &quot;Basic #{Base64.encode64(&quot;quentin:test&quot;)}&quot;
+  
+  def test_should_allow_http_auth_on_feed
+    @user = User.make
+    Membership.make :user =&gt; @user, :site =&gt; @site, :admin =&gt; true
+    @request.env['HTTP_AUTHORIZATION'] = &quot;Basic #{Base64.encode64(&quot;#{@user.login}:test&quot;)}&quot;
     get :feed
     assert_response :success
   end
-
+  
   def test_should_sort_future_items_in_todays_events
-    today = Time.now.utc
-    assert events(:future).update_attribute(  :created_at, today + 2.days)
-    assert events(:site_map).update_attribute(:created_at, today)
-    assert events(:about).update_attribute(   :created_at, today - 1.day)
+    Site.transaction do
+      @admin   = User.make
+      @user    = User.make
+      @article = Article.make :site =&gt; @site, :user =&gt; @user
+      @article.title = 'foo' ; @article.body = 'bar'
+      @event1  = Event.make_from @article
+      @comment = Comment.make :article =&gt; @article
+      @event2  = Event.make_from @comment
+      @article.title = 'foo2' ; @article.body = 'bar2'
+      @event3  = Event.make_from @article
+      @events  = Event.all
+      assert_equal 3, @events.size
+      
+      today = Time.now.utc
+      assert @event1.update_attribute(:created_at, today + 2.days)
+      assert @event2.update_attribute(:created_at, today)
+      assert @event3.update_attribute(:created_at, today - 1.day)
+      
+      Membership.make :user =&gt; @admin, :site =&gt; @site, :admin =&gt; true
+    end
+
+    @request.session[:user] = User.authenticate_for(@site, @admin.login, 'test')
     get :index
-    assert assigns(:todays_events).include?(events(:future)),    &quot;#{assigns(:todays_events).collect(&amp;:id).inspect}&quot;
-    assert assigns(:todays_events).include?(events(:site_map)),  &quot;#{assigns(:todays_events).collect(&amp;:id).inspect}&quot;
-    assert assigns(:yesterdays_events).include?(events(:about)), &quot;#{assigns(:yesterdays_events).collect(&amp;:id).inspect}&quot;
+    assert assigns(:todays_events).include?(@event1),    &quot;#{assigns(:todays_events).collect(&amp;:id).inspect}&quot;
+    assert assigns(:todays_events).include?(@event2),  &quot;#{assigns(:todays_events).collect(&amp;:id).inspect}&quot;
+    assert assigns(:yesterdays_events).include?(@event3), &quot;#{assigns(:yesterdays_events).collect(&amp;:id).inspect}&quot;
   end
 end</diff>
      <filename>test/functional/admin/overview_controller_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,6 +3,9 @@ ENV['TZ'] = 'US/Central'
 
 require File.expand_path(File.dirname(__FILE__) + &quot;/../config/environment&quot;)
 require 'test_help'
+require 'ruby-debug'
+require 'machinist'
+require File.join(File.dirname(__FILE__), '..', 'spec', 'blueprints')
 require File.expand_path(File.dirname(__FILE__) + &quot;/actor&quot;)
 ASSET_PATH = File.join(RAILS_ROOT, 'test/fixtures/tmp/assets') unless Object.const_defined?(:ASSET_PATH)
 require File.join(File.dirname(__FILE__), 'referenced_caching_test_helper')</diff>
      <filename>test/test_helper.rb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>vendor/gems/emk-safe_erb-0.1.1/.specification</filename>
    </removed>
    <removed>
      <filename>vendor/gems/emk-safe_erb-0.1.1/MIT-LICENSE</filename>
    </removed>
    <removed>
      <filename>vendor/gems/emk-safe_erb-0.1.1/README</filename>
    </removed>
    <removed>
      <filename>vendor/gems/emk-safe_erb-0.1.1/Rakefile</filename>
    </removed>
    <removed>
      <filename>vendor/gems/emk-safe_erb-0.1.1/lib/safe_erb.rb</filename>
    </removed>
    <removed>
      <filename>vendor/gems/emk-safe_erb-0.1.1/lib/safe_erb/action_view_extensions.rb</filename>
    </removed>
    <removed>
      <filename>vendor/gems/emk-safe_erb-0.1.1/lib/safe_erb/common.rb</filename>
    </removed>
    <removed>
      <filename>vendor/gems/emk-safe_erb-0.1.1/lib/safe_erb/erb_extensions.rb</filename>
    </removed>
    <removed>
      <filename>vendor/gems/emk-safe_erb-0.1.1/lib/safe_erb/rails_1.rb</filename>
    </removed>
    <removed>
      <filename>vendor/gems/emk-safe_erb-0.1.1/lib/safe_erb/rails_2.rb</filename>
    </removed>
    <removed>
      <filename>vendor/gems/emk-safe_erb-0.1.1/lib/safe_erb/sqlite3_fix.rb</filename>
    </removed>
    <removed>
      <filename>vendor/gems/emk-safe_erb-0.1.1/lib/safe_erb/tag_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/gems/emk-safe_erb-0.1.1/rails/init.rb</filename>
    </removed>
    <removed>
      <filename>vendor/gems/emk-safe_erb-0.1.1/test/safe_erb_test.rb</filename>
    </removed>
    <removed>
      <filename>vendor/gems/emk-safe_erb-0.1.1/test/tag_helper_test.rb</filename>
    </removed>
    <removed>
      <filename>vendor/gems/emk-safe_erb-0.1.1/test/test_helper.rb</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>f2712773d0f8beed1be8ec97fcd39a27f6ff4159</id>
    </parent>
    <parent>
      <id>4f4e5a77b043d9626507548acd65ac6fe1839aa4</id>
    </parent>
  </parents>
  <author>
    <name>Eric Kidd</name>
    <email>git@randomhacks.net</email>
  </author>
  <url>http://github.com/emk/mephisto/commit/adaba9bc598e822903ed8c51280061933d5aad7a</url>
  <id>adaba9bc598e822903ed8c51280061933d5aad7a</id>
  <committed-date>2008-12-20T19:02:25-08:00</committed-date>
  <authored-date>2008-12-20T19:02:25-08:00</authored-date>
  <message>Merge branch 'master' into new-plugins</message>
  <tree>45d62477c4e49e5547b5ab84bc39b303bb586eca</tree>
  <committer>
    <name>Eric Kidd</name>
    <email>git@randomhacks.net</email>
  </committer>
</commit>
