<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>spec/helpers/application_helper_spec.rb</filename>
    </added>
    <added>
      <filename>spec/models/page_sweeper_spec.rb</filename>
    </added>
    <added>
      <filename>spec/models/user_spec.rb</filename>
    </added>
    <added>
      <filename>spec/rcov.opts</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -11,3 +11,5 @@ db/*.sqlite3
 index/*
 public/javascripts/signal.js
 public/stylesheets/signal.css
+.project
+.loadpath</diff>
      <filename>.gitignore</filename>
    </modified>
    <modified>
      <diff>@@ -13,7 +13,7 @@ public
   # collection methods
 
   def create
-    flag = current_user.flags.create!(params[:flag])
+    flag = current_user.flags.create(params[:flag])
     flash[:notice] = if flag.new_record?
       &quot;You already flagged this content!&quot;
     else # success</diff>
      <filename>app/controllers/flags_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,6 @@
 class PagesController &lt; ApplicationController
   before_filter :require_login, :except =&gt; [:index, :show, :revision, :search]
+  before_filter :login_required, :only =&gt; [:destroy]
   before_filter :require_admin, :only =&gt; [:lock]
   before_filter :check_private, :only =&gt; [:show, :revision]
   caches_page :show
@@ -91,7 +92,7 @@ class PagesController &lt; ApplicationController
         format.html { redirect_to(wiki_page_url(@page)) }
         format.xml  { render :xml =&gt; @page, :status =&gt; :created, :location =&gt; @page }
       else
-        format.html { render :action =&gt; &quot;new&quot; }
+        format.html { puts @page.errors.inspect; render :action =&gt; &quot;new&quot; }
         format.xml  { render :xml =&gt; @page.errors, :status =&gt; :unprocessable_entity }
       end
     end</diff>
      <filename>app/controllers/pages_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -17,7 +17,8 @@ module PagesHelper
   end
   
   def current_revision(id, version)
-    version == Page.find(id).version
+    page = Page.find(id)
+    page ? (version == page.version) : false
   end
   
   def body_input(f)</diff>
      <filename>app/helpers/pages_helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -43,8 +43,8 @@ class Page &lt; ActiveRecord::Base
   
   def is_spam?(site)
     v = Viking.connect(&quot;akismet&quot;, {:api_key =&gt; site.akismet_key, :blog =&gt; site.akismet_url})
-    response = v.check_comment(:comment_content =&gt; body.to_s, :comment_author =&gt; user.login.to_s, :user_ip =&gt; ip.to_s, :user_agent =&gt; agent.to_s, :referrer =&gt; referrer.to_s)
-    logger.info &quot;Calling Akismet for page #{permalink} by #{user.login.to_s} using ip #{ip}:  #{response[:spam]}&quot;
+    response = v.check_comment(:comment_content =&gt; body.to_s, :comment_author =&gt; username.to_s, :user_ip =&gt; ip.to_s, :user_agent =&gt; agent.to_s, :referrer =&gt; referrer.to_s)
+    logger.info &quot;Calling Akismet for page #{permalink} by #{username.to_s} using ip #{ip}:  #{response[:spam]}&quot;
     return response[:spam]
   end
   
@@ -104,6 +104,9 @@ class Page &lt; ActiveRecord::Base
     RAILS_DEFAULT_LOGGER.info &quot;UNLOCKED #{self.permalink}&quot;
   end
   
+  def username
+    user.blank? ? &quot;anonymous&quot; : user.login
+  end
   def self.find_all_by_wiki_word(wiki_word, site = nil)
     site ||= Site.find(:first)
     pages = site.pages.find(:all)</diff>
      <filename>app/models/page.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 Comparing 
-&lt;span style=&quot;background-color: #cfc; padding: 1px 4px;&quot;&gt;version &lt;%= @v2.version %&gt;&lt;/span&gt; 
+&lt;span style=&quot;background-color: #cfc; padding: 1px 4px;&quot;&gt;version &lt;%= @v1.version %&gt;&lt;/span&gt; 
 and
 &lt;span style=&quot;background-color: #ddd; padding: 1px 4px;&quot;&gt;version &lt;%= @v2.version %&gt;&lt;/span&gt;
 &lt;pre class=&quot;diff&quot;&gt;</diff>
      <filename>app/views/pages/diff.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -8,7 +8,7 @@
 			updated &lt;%= time_ago_in_words(rev.updated_at) %&gt; ago 
 			by &lt;%= author(rev.user_id)  %&gt;
 			&lt;% if rev.respond_to?(:previous) &amp;&amp; !rev.previous.nil? %&gt;
-			&lt;%= link_to &quot;(Diff)&quot;, diff_page_url(@page.permalink, :v1 =&gt; rev.version, :v2 =&gt; rev.previous) %&gt;
+			&lt;%= link_to &quot;(Diff)&quot;, diff_page_url(@page.permalink, :v1 =&gt; rev.version, :v2 =&gt; rev.previous.version) %&gt;
 			&lt;% end %&gt;
 	&lt;/li&gt;
 &lt;% end %&gt;</diff>
      <filename>app/views/pages/revisions.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -9,13 +9,21 @@ describe FlagsController, &quot;a user not logged in&quot; do
     controller.stub!(:current_user).and_return :false
   end
   
-  it &quot;does not render 'index'&quot; do
-    get :index
+  %w[index new].each do |action|
+     it &quot;#{action} should redirect to login&quot; do
+       get action
+       response.should redirect_to('session/new')
+     end
+   end
+
+  it 'can not flag something' do
+    post :create, :flag =&gt; { :flaggable_type =&gt; 'Page', :flaggable_id =&gt; 1, :reason =&gt; 'outdated' }
     response.should redirect_to('session/new')
   end
   
-  it 'can not flag something' do
-    post :create, :flag =&gt; { :flaggable_type =&gt; 'Page', :flaggable_id =&gt; 1, :reason =&gt; 'outdated' }
+  it 'can not delete' do
+    delete :destroy, :id =&gt; &quot;1&quot;
+    response.should_not be_success
     response.should redirect_to('session/new')
   end
 end
@@ -38,12 +46,40 @@ describe FlagsController, &quot;a user logged in as normal user&quot; do
     response.should redirect_to('session/new')
   end
   
-  it 'can flag something' do
+  it 'canflag something' do
     lambda {
       post :create, :flag =&gt; { :flaggable_type =&gt; 'Page', :flaggable_id =&gt; 1, :reason =&gt; 'outdated', :user_id =&gt; @user.id }
       response.should redirect_to('pages/hai')
     }.should change(Flag, :count).by(1)
   end
+  it 'can not flag same page twice' do
+    post :create, :flag =&gt; { :flaggable_type =&gt; 'Page', :flaggable_id =&gt; 1, :reason =&gt; 'outdated', :user_id =&gt; @user.id }
+    lambda {
+      post :create, :flag =&gt; { :flaggable_type =&gt; 'Page', :flaggable_id =&gt; 1, :reason =&gt; 'outdated', :user_id =&gt; @user.id }
+      #flash[:notice].should == &quot;You already flagged this content!&quot;
+    }.should_not change(Flag, :count)
+  end
+  
+  it &quot;render 'new'&quot; do
+    get :new, :flaggable_type =&gt; 'Page', :flaggable_id =&gt; 1
+    response.should be_success
+    response.should render_template('new')
+  end
+  
+  it &quot;render / with error if flaggable_type is not found&quot; do
+    get :new, :flaggable_type =&gt; 'NotFound', :flaggable_id =&gt; 1
+    response.should_not be_success
+    response.should redirect_to('/')
+    #flash[:error].should_not be_empty
+  end
+
+  it &quot;can delete a page&quot; do
+    flag = @user.flags.create({ :flaggable_type =&gt; 'Page', :flaggable_id =&gt; 1, :reason =&gt; 'outdated', :user_id =&gt; @user.id })
+    lambda do
+      delete :destroy, :id =&gt; flag
+      response.should redirect_to('flags')
+    end.should change(Flag, :count)
+  end
 end
 
 
@@ -71,5 +107,31 @@ describe FlagsController, &quot;a user logged in as admin&quot; do
     }.should change(Flag, :count).by(1)
   end
   
+  it &quot;render 'new'&quot; do
+    get :new, :flaggable_type =&gt; 'Page', :flaggable_id =&gt; 1
+    response.should be_success
+    response.should render_template(&quot;new&quot;)
+  end
+  it 'can not flag same page twice' do
+    post :create, :flag =&gt; { :flaggable_type =&gt; 'Page', :flaggable_id =&gt; 1, :reason =&gt; 'outdated', :user_id =&gt; @user.id }
+    lambda {
+      post :create, :flag =&gt; { :flaggable_type =&gt; 'Page', :flaggable_id =&gt; 1, :reason =&gt; 'outdated', :user_id =&gt; @user.id }
+      #flash[:notice].should == &quot;You already flagged this content!&quot;
+    }.should_not change(Flag, :count)
+  end
+  it &quot;render / with error if flaggable_type is not found&quot; do
+    get :new, :flaggable_type =&gt; 'NotFound', :flaggable_id =&gt; 1
+    response.should_not be_success
+    response.should redirect_to('/')
+    #flash[:error].should_not be_empty
+  end
+  it &quot;can delete a page&quot; do
+    flag = @user.flags.create({ :flaggable_type =&gt; 'Page', :flaggable_id =&gt; 1, :reason =&gt; 'outdated', :user_id =&gt; @user.id })
+    lambda do
+      delete :destroy, :id =&gt; flag
+      response.should redirect_to('flags')
+    end.should change(Flag, :count)
+  end
+  
 end
 </diff>
      <filename>spec/controllers/flags_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,7 +3,9 @@ require File.dirname(__FILE__) + &quot;/../spec_helper&quot;
 def create_page
   Page.create(:title =&gt; &quot;hee haw&quot;, :body =&gt; &quot;moop&quot;, :site_id =&gt; 1)
 end
-
+def create_delete_page
+  Page.create(:title =&gt; &quot;to be delete&quot;, :body =&gt; &quot;moop&quot;, :site_id =&gt; 1)
+end
 describe PagesController, &quot; with site that requires login, a user not logged in&quot; do
   fixtures :sites, :pages, :page_versions, :users
   integrate_views
@@ -12,16 +14,68 @@ describe PagesController, &quot; with site that requires login, a user not logged in&quot;
     controller.stub!(:current_user).and_return :false
   end
   
+  it &quot;show all pages&quot; do
+    get :index
+    response.should be_success
+    response.should render_template(&quot;index&quot;)
+  end
+    
+  it &quot;shows page if it exists&quot; do
+    page = create_page
+    page.body = &quot;MEEP&quot;
+    page.save!
+
+    get :show, :id =&gt; page.permalink
+    response.should be_success
+    response.should render_template(&quot;show&quot;)      
+  end
+  
+  it &quot;redirect to session/new if page is a private page&quot; do
+    page = create_page
+    page.private_page = true
+    page.save!
+
+    get :show, :id =&gt; page.permalink
+    response.should_not be_success
+    response.should redirect_to(&quot;session/new&quot;)      
+    
+  end
+  it &quot;redirect to page/new (and it will in turn redirect to session/new) if showing a page that does not exist&quot; do
+    get :show, :id =&gt; &quot;unavailable&quot;
+    response.should redirect_to(&quot;pages/new&quot;)      
+  end
+  
   it &quot;does not render 'new'&quot; do
     get :new
     response.should redirect_to('session/new')
   end
   
-  it &quot;renders 'revision'&quot; do
+  it &quot;does not render 'diff'&quot; do
     page = create_page
     page.body = &quot;MEEP&quot;
     page.save!
 
+    get :diff, :id =&gt; page.permalink, :v1 =&gt; page.version, :v2 =&gt; page.version - 1
+    response.should redirect_to('session/new')
+  end
+  
+  it &quot;does not render 'revisions'&quot; do
+    page = create_page
+    get :revisions, :id =&gt; page.permalink
+    response.should redirect_to('session/new')
+  end
+
+  it &quot;does not render 'edit'&quot; do
+    page = create_page
+    get :edit, :id =&gt; page.permalink
+    response.should redirect_to('session/new')
+  end
+
+  it &quot;renders 'revision'&quot; do
+    page = create_page
+    page.body = &quot;moep MEEPp&quot;
+    page.save!
+
     get :revision, :id =&gt; page.permalink, :version =&gt; page.version - 1
     response.should be_success
     response.should render_template(&quot;show&quot;)    
@@ -65,6 +119,15 @@ describe PagesController, &quot; with site that requires login, a user not logged in&quot;
       response.should redirect_to('session/new')
     end.should_not change(Page, :count)
   end
+   it &quot;can not delete a page&quot; do
+    page = create_delete_page
+    
+    lambda do
+    delete :destroy, :id =&gt; page.permalink
+    response.should_not be_success
+    response.should redirect_to('session/new')
+    end.should_not change(Page, :count)
+  end
 end
 
 describe PagesController, &quot; with site that does not require login, a user not logged in&quot; do
@@ -79,11 +142,60 @@ describe PagesController, &quot; with site that does not require login, a user not lo
     controller.stub!(:current_user).and_return :false
   end
   
+  it &quot;show all pages&quot; do
+    get :index
+    response.should be_success
+    response.should render_template(&quot;index&quot;)
+  end
+    
+  it &quot;shows page if it exists&quot; do
+    page = create_page
+    page.body = &quot;MEEP&quot;
+    page.save!
+
+    get :show, :id =&gt; page.permalink
+    response.should be_success
+    response.should render_template(&quot;show&quot;)      
+  end
+  
+  it &quot;shows new page if it does not exist&quot; do
+    get :show, :id =&gt; &quot;unavailable&quot;
+    response.should redirect_to(&quot;pages/new&quot;)      
+  end
+  
   it &quot;renders 'new'&quot; do
     get :new
     response.should be_success
   end
   
+  it &quot;shows 'diff'&quot; do
+    page = create_page
+    page.body = &quot;MEEP&quot;
+    page.save!
+
+    get :diff, :id =&gt; page.permalink, :v1 =&gt; page.version, :v2 =&gt; page.version - 1
+    assigns(:v1).should == page.versions.find_by_version(params[:v1])
+    assigns(:v2).should == page.versions.find_by_version(params[:v2])
+    response.should be_success
+    response.should render_template(&quot;diff&quot;)
+  end
+  
+  it &quot;shows 'revisions'&quot; do
+    page = create_page
+    get :revisions, :id =&gt; page.permalink
+    assigns(:revisions).should == page.versions
+    response.should be_success
+    response.should render_template(&quot;revisions&quot;)   
+  end
+  
+  it &quot;shows 'edit'&quot; do
+    page = create_page
+    get :edit, :id =&gt; page.permalink
+    assigns(:page).should == page
+    response.should be_success
+    response.should render_template(&quot;edit&quot;)   
+  end
+
   it &quot;can rollback a page&quot; do
     page = create_page
     page.body = &quot;MEEP&quot;
@@ -113,6 +225,16 @@ describe PagesController, &quot; with site that does not require login, a user not lo
       response.should redirect_to('o-hai')
     end.should change(Page, :count)
   end
+  
+  it &quot;cannot delete a page&quot; do
+    page = create_delete_page
+    lambda do
+      delete :destroy, :id =&gt; page.permalink
+      response.should_not be_success
+      response.should redirect_to('session/new')
+    end.should_not change(Page, :count)
+  end
+
 end
 
 describe PagesController, &quot;a user logged in as normal user&quot; do
@@ -125,12 +247,40 @@ describe PagesController, &quot;a user logged in as normal user&quot; do
     controller.stub!(:current_user).and_return users(:jeremy)
   end
   
+  it &quot;show all pages&quot; do
+    get :index
+    response.should be_success
+    response.should render_template(&quot;index&quot;)
+  end
+    
+  it &quot;shows page if it exists&quot; do
+    page = create_page
+    page.body = &quot;MEEP&quot;
+    page.save!
+
+    get :show, :id =&gt; page.permalink
+    response.should be_success
+    response.should render_template(&quot;show&quot;)      
+  end
   
+  it &quot;shows new page if it does not exist&quot; do
+    get :show, :id =&gt; &quot;unavailable&quot;
+    response.should redirect_to(&quot;pages/new&quot;)      
+  end
+    
   it &quot;renders 'new'&quot; do
     get :new
     response.should be_success
     response.should render_template(&quot;new&quot;)
   end
+
+  it &quot;shows 'revisions'&quot; do
+    page = create_page
+    get :revisions, :id =&gt; page.permalink
+    assigns(:revisions).should == page.versions
+    response.should be_success
+    response.should render_template(&quot;revisions&quot;)   
+  end
   
   it &quot;renders 'revision'&quot; do
     page = create_page
@@ -141,6 +291,25 @@ describe PagesController, &quot;a user logged in as normal user&quot; do
     response.should be_success
     response.should render_template(&quot;show&quot;)   
   end
+  it &quot;shows 'edit'&quot; do
+    page = create_page
+    get :edit, :id =&gt; page.permalink
+    assigns(:page).should == page
+    response.should be_success
+    response.should render_template(&quot;edit&quot;)   
+  end
+  
+  it &quot;shows 'diff'&quot; do
+    page = create_page
+    page.body = &quot;MEEP&quot;
+    page.save!
+
+    get :diff, :id =&gt; page.permalink, :v1 =&gt; page.version, :v2 =&gt; page.version - 1
+    assigns(:v1).should == page.versions.find_by_version(params[:v1])
+    assigns(:v2).should == page.versions.find_by_version(params[:v2])
+    response.should be_success
+    response.should render_template(&quot;diff&quot;)
+  end
   
   it &quot;searches for pages&quot; do
     get :search, :query =&gt; &quot;home&quot;
@@ -181,6 +350,15 @@ describe PagesController, &quot;a user logged in as normal user&quot; do
     get :lock, :id =&gt; 'hai'
     response.should redirect_to('pages/home')
   end
+  it &quot;can delete a page&quot; do
+    page = create_delete_page
+    page.title = &quot;to be delete&quot;
+    page.save
+    lambda do
+      delete :destroy, :id =&gt; page.permalink
+      response.should redirect_to('pages')
+    end.should change(Page, :count)
+  end
 end
 
 describe PagesController, &quot;a user logged in as admin&quot; do
@@ -191,12 +369,48 @@ describe PagesController, &quot;a user logged in as admin&quot; do
     controller.stub!(:logged_in?).and_return true
     controller.stub!(:current_user).and_return users(:admin)
   end
+
+  it &quot;show all pages&quot; do
+    get :index
+    response.should be_success
+    response.should render_template(&quot;index&quot;)
+  end
+    
+  it &quot;shows page if it exists&quot; do
+    page = create_page
+    page.body = &quot;MEEP&quot;
+    page.save!
+
+    get :show, :id =&gt; page.permalink
+    response.should be_success
+    response.should render_template(&quot;show&quot;)      
+  end
   
+  it &quot;shows new page if it does not exist&quot; do
+    get :show, :id =&gt; &quot;unavailable&quot;
+    response.should redirect_to(&quot;pages/new&quot;)      
+  end
+    
   it &quot;renders 'new'&quot; do
     get :new
     response.should be_success
     response.should render_template(&quot;new&quot;)
   end
+
+  it &quot;shows 'revisions'&quot; do
+    page = create_page
+    get :revisions, :id =&gt; page.permalink
+    assigns(:revisions).should == page.versions
+    response.should be_success
+    response.should render_template(&quot;revisions&quot;)   
+  end
+  it &quot;shows 'edit'&quot; do
+    page = create_page
+    get :edit, :id =&gt; page.permalink
+    assigns(:page).should == page
+    response.should be_success
+    response.should render_template(&quot;edit&quot;)   
+  end
   
   it &quot;renders 'revision'&quot; do
     page = create_page
@@ -208,6 +422,17 @@ describe PagesController, &quot;a user logged in as admin&quot; do
     response.should render_template(&quot;show&quot;)   
   end
   
+  it &quot;shows 'diff'&quot; do
+    page = create_page
+    page.body = &quot;MEEP&quot;
+    page.save!
+
+    get :diff, :id =&gt; page.permalink, :v1 =&gt; page.version, :v2 =&gt; page.version - 1
+    assigns(:v1).should == page.versions.find_by_version(params[:v1])
+    assigns(:v2).should == page.versions.find_by_version(params[:v2])
+    response.should be_success
+    response.should render_template(&quot;diff&quot;)
+  end
   it &quot;searches for pages&quot; do
     get :search, :query =&gt; &quot;home&quot;
     response.should be_success
@@ -256,5 +481,14 @@ describe PagesController, &quot;a user logged in as admin&quot; do
     page.reload
     page.should_not be_locked
   end
+  it &quot;can delete a page&quot; do
+    page = create_delete_page
+    page.title = &quot;to be delete&quot;
+    page.save
+    lambda do
+      delete :destroy, :id =&gt; page.permalink
+      response.should redirect_to('pages')
+    end.should change(Page, :count)
+  end
 end
 </diff>
      <filename>spec/controllers/pages_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -14,4 +14,72 @@ describe PagesHelper do
     wikified_body(&quot;hello[[there|hai]]whats[[up]]&quot;).should == &quot;&lt;p&gt;helloMONKEYSwhatsMONKEYS&lt;/p&gt;&quot;
   end
   
-end
\ No newline at end of file
+end
+
+describe PagesHelper do
+  before do
+    @wiki_word = &quot;o hai&quot;
+    @link_text = &quot;test&quot;
+    @perma_link = {:permalink =&gt; &quot;o-hai&quot;}
+    @class_str = &quot;class=\&quot;new_wiki_link\&quot;&quot;
+  end
+    it &quot;links to wiki permalink if page exists&quot; do
+      
+    Page.should_receive(:exists?).with(@perma_link).and_return true
+    link = wiki_link(@wiki_word, @link_text)
+    link.should include(@link_text)
+    link.should_not include(@wiki_word)
+    link.should_not include(@class_str)
+    
+    end
+    it &quot;links to wiki permalink with proper style if page doesnot exist&quot; do
+      
+    Page.should_receive(:exists?).with(@perma_link).and_return false
+    link = wiki_link(@wiki_word, @link_text)
+    link.should include(@link_text)
+    link.should_not include(@wiki_word)
+    link.should include(@class_str)
+    end
+  end
+  
+describe PagesHelper do
+  before do
+    @site = mock_model(Site)
+    @form = mock_model(Object)
+    @attr = :body
+      self.should_receive(:site).and_return @site
+  end
+    it &quot;should render textarea if site disable teh&quot; do
+      @site.should_receive(:disable_teh).and_return true
+      @form.should_receive(:text_area)
+      text_input(@form, @attr)
+    end
+    it &quot;should render tech if site enable teh&quot; do
+      @site.should_receive(:disable_teh).and_return false
+      @form.should_not_receive(:text_area)
+      self.should_receive(:textile_editor)
+      text_input(@form, @attr)
+    end
+ end
+describe PagesHelper do
+  before do
+    @id = 1
+    @page = mock_model(Page)
+    @version = mock_model(Page)
+    @version2 = mock_model(Page)
+  end
+    it &quot;checks existing page with same version&quot; do
+      Page.should_receive(:find).with(@id).and_return @page
+      @page.should_receive(:version).and_return @version
+      current_revision(@id, @version).should == true
+    end
+    it &quot;checks existing page with different version&quot; do
+      Page.should_receive(:find).with(@id).and_return @page
+      @page.should_receive(:version).and_return @version2
+      current_revision(@id, @version).should == false
+    end
+    it &quot;checks non-existing page version&quot; do
+      Page.should_receive(:find).with(@id).and_return nil
+      current_revision(@id, @version).should == false
+    end
+ end
\ No newline at end of file</diff>
      <filename>spec/helpers/pages_helper_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,6 +5,7 @@ describe Page, &quot;validity&quot; do
   
   before(:each) do
     @page = Page.new :site_id =&gt; 1
+    @site = mock_model(Site)
   end
 
   it &quot;should not be valid&quot; do
@@ -17,6 +18,19 @@ describe Page, &quot;validity&quot; do
     @page.should be_valid
   end
   
+  it &quot;should not be valid if site is spam&quot; do
+    @page.stub!(:is_spam?).and_return true
+    @page.stub!(:site).and_return @site
+    @site.should_receive(:akismet_key?).and_return true
+    @page.should_not be_valid
+  end
+  
+  it &quot;should connect to viking for spam info&quot; do
+    @v = mock_model(Object)
+    Viking.should_receive(:connect).and_return @v
+    @v.should_receive(:check_comment).and_return :spam =&gt; true
+    @page.is_spam?(@page.site).should == true
+  end
 end
 
 describe Page, &quot;creating links&quot; do</diff>
      <filename>spec/models/page_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>780fd0bb35138e2b9de47f37e8db0cd0b5b9a8e8</id>
    </parent>
  </parents>
  <author>
    <name>Ping Yu</name>
    <email>pyu@ping-yus-computer.local</email>
  </author>
  <url>http://github.com/queso/signal-wiki/commit/46d4cabb2f4308f3a0a596a974ea379de13d10c1</url>
  <id>46d4cabb2f4308f3a0a596a974ea379de13d10c1</id>
  <committed-date>2008-04-20T20:13:15-07:00</committed-date>
  <authored-date>2008-04-19T15:08:12-07:00</authored-date>
  <message>improve rspec coverage, and fixed several minor bugs</message>
  <tree>645877510119deea3520e83d430be5d5b6b5b043</tree>
  <committer>
    <name>Josh Owens</name>
    <email>joshua.owens@gmail.com</email>
  </committer>
</commit>
