<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -12,5 +12,7 @@ coverage
 coverage/*
 config/*.sphinx.conf
 config/deploy.rb
+config/newrelic.yml
 .gitignore.swp
 public/avatars
+vendor/plugins/newrelic_rpm</diff>
      <filename>.gitignore</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,7 @@
 class ForumsController &lt; ApplicationController
   before_filter :store_location, :only =&gt; [:index, :show]
   before_filter :find_category
+  before_filter :find_forum, :only =&gt; [:show]
   
   # Shows all root forums.
   # Limits this selection to forums the current user has access to.
@@ -29,20 +30,21 @@ class ForumsController &lt; ApplicationController
   # Shows a forum.
   # Checks first if the current user can see it.
   def show
-    @forum = Forum.find(params[:id], :include =&gt; [{ :topics =&gt; :posts }, :moderations, :permissions])
-    if !current_user.can?(:see_forum, @forum)
-      flash[:notice] = t(:forum_permission_denied)
-      redirect_to forums_path
-    else
-      @topics = @forum.topics.sorted.paginate :page =&gt; params[:page], :per_page =&gt; 30, :order =&gt; &quot;sticky DESC&quot;
-      @forums = @forum.children
-      @all_forums = Forum.all(:select =&gt; &quot;id, title&quot;, :order =&gt; &quot;title ASC&quot;) - [@forum] if current_user.can?(:move_topics, @forum)
-      @moderated_topics_count = @forum.moderations.topics.for_user(current_user).count
-    end
+    @topics = @forum.topics.sorted.paginate :page =&gt; params[:page], :per_page =&gt; 30, :order =&gt; &quot;sticky DESC&quot;
+    @forums = @forum.children
+    @all_forums = Forum.all(:select =&gt; &quot;id, title&quot;, :order =&gt; &quot;title ASC&quot;) - [@forum] if current_user.can?(:move_topics, @forum)
+    @moderated_topics_count = @forum.moderations.topics.for_user(current_user).count
   end
   
   private
-  
+    def find_forum
+      @forum = Forum.find(params[:id], :include =&gt; [{ :topics =&gt; :posts }, :moderations, :permissions])
+      if !current_user.can?(:see_forum, @forum)
+        flash[:notice] = t(:forum_permission_denied)
+        redirect_to forums_path
+      end
+    end
+    
     def find_category
       unless params[:category_id].blank?
         @category = Category.find(params[:category_id], :include =&gt; :forums)</diff>
      <filename>app/controllers/forums_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -6,10 +6,6 @@ class Category &lt; ActiveRecord::Base
   has_many :permissions
   has_many :groups, :through =&gt; :permissions
   
-  named_scope :without_parent, :conditions =&gt; { :parent_id =&gt; nil }
-  named_scope :viewable_to, lambda { |user| { :include =&gt; [:groups, :permissions], 
-                            :conditions =&gt; [
-                            &quot;groups.id IN (?) AND permissions.can_see_category = ? &quot;,
-                            user.groups, true] } }
+  named_scope :without_parent, :conditions =&gt; { :parent_id =&gt; nil }, :include =&gt; :permissions
 
 end</diff>
      <filename>app/models/category.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,12 +2,8 @@ class Forum &lt; ActiveRecord::Base
   acts_as_list :scope =&gt; :parent_id
   acts_as_tree :order =&gt; :position
   
-  named_scope :without_category, :conditions =&gt; { :category_id =&gt; nil }, :order =&gt; &quot;position&quot;
-  named_scope :without_parent, :conditions =&gt; { :parent_id =&gt; nil }, :order =&gt; &quot;position&quot;
-  named_scope :viewable_to, lambda { |user| { :include =&gt; [:groups, :permissions], 
-                            :conditions =&gt; [
-                            &quot;groups.id IN (?) AND permissions.can_see_forum = ? &quot;,
-                            user.groups, true] } }  
+  named_scope :without_category, :conditions =&gt; { :category_id =&gt; nil }, :include =&gt; :permissions, :order =&gt; &quot;position&quot;
+  named_scope :without_parent, :conditions =&gt; { :parent_id =&gt; nil }, :include =&gt; :permissions, :order =&gt; &quot;position&quot; 
   has_many :moderations
   has_many :posts, :through =&gt; :topics, :source =&gt; :posts, :order =&gt; &quot;posts.created_at DESC&quot;
   has_many :topics, :order =&gt; &quot;topics.created_at DESC&quot;, :dependent =&gt; :destroy </diff>
      <filename>app/models/forum.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,73 +1,42 @@
 require File.dirname(__FILE__) + '/../spec_helper'
 
 describe ForumsController do
-  fixtures :users, :forums, :categories
-
+  fixtures :users, :forums, :categories, :groups, :group_users, :permissions 
+  
   before do
+    @category = mock_model(Category)
+    @categories = [@category]
     @forum = mock_model(Forum)
     @forums = [@forum]
-    @topic = mock_model(Topic)
-    @topics = [@topic]
-    @category = mock_model(Category)
-    @admin_forum = forums(:admins_only)
-    @everybody_forum = forums(:everybody)
-    @moderation = mock_model(Moderation)
-    @moderations = [@moderation]
-  end
-
-  it &quot;should gather forums&quot; do
-    login_as(:plebian)
-    Forum.should_receive(:without_category).and_return(@forums)
-    get 'index'
+    @test_category = categories(:test)
+    @admin_category = categories(:admins_only)
   end
   
-  it &quot;should gather forums for a category&quot; do
-    login_as(:plebian)
-    Category.should_receive(:find).and_return(@category)
-    @category.should_receive(:forums).and_return(@forums)
-    get 'index', :category_id =&gt; 1
+  describe &quot;plebian&quot; do
+    before do
+      login_as(:plebian)
+    end
+    
+    it &quot;should be able to see a list of forums and categories&quot; do
+      Category.should_receive(:without_parent).and_return(@categories)
+      Forum.should_receive(:without_category).and_return(@forums)
+      @forums.should_receive(:without_parent).and_return(@forums)
+      get 'index'
+    end
+    
+    it &quot;should show a list of forums inside a specific category&quot; do
+      Category.should_receive(:find).and_return(@category)
+      @category.should_receive(:forums).and_return(@forums)
+      @forums.should_receive(:without_parent).and_return(@forums)
+      get 'index', :category_id =&gt; @test_category.id
+    end
+    
+    it &quot;should not be able to see anything inside a restricted category&quot; do
+      get 'index', :category_id =&gt; @admin_category.id
+      flash[:notice].should eql(t(:category_permission_denied))
+      response.should redirect_to(root_path)
+    end
+    
   end
   
-  it &quot;should not show the admin forum to anonymous users&quot; do
-    Forum.should_receive(:find).and_return(@forum)
-    @forum.should_receive(:viewable?).and_return(false)
-    get 'show', { :id =&gt; @admin_forum.id }
-    response.should redirect_to(forums_path)
-    flash[:notice].should_not be_blank
-  end
-  
-  it &quot;should show the general forum to anonymous users&quot; do
-    Forum.should_receive(:find).and_return(@forum)
-    @forum.should_receive(:viewable?).and_return(true)
-    @forum.should_receive(:children).and_return(@forums)
-    @topics.should_receive(:paginate).and_return(@topics)
-    @forum.should_receive(:topics).and_return(@topics)
-    @topics.should_receive(:sorted).and_return(@topics)
-    @forum.should_receive(:moderations).and_return(@moderations)
-    @moderations.should_receive(:topics).and_return(@moderations)
-    @moderations.should_receive(:for_user).and_return(@moderations)
-    @moderations.should_receive(:count).and_return(0)
-    @forum.stub!(:position)
-    get 'show', { :id =&gt; @everybody_forum.id }
-    flash[:notice].should be_blank
-    response.should render_template(&quot;show&quot;)
-  end
-  
-  it &quot;should show the admin forum to the administrator&quot; do
-    login_as(:administrator)
-    Forum.should_receive(:find).with(@admin_forum.id.to_s, :include =&gt; [{ :topics =&gt; :posts }, :moderations]).and_return(@forum)
-    Forum.should_receive(:find).with(:all, :select =&gt; &quot;id, title&quot;, :order =&gt; &quot;title ASC&quot;).and_return(@forums)
-    @forum.should_receive(:viewable?).and_return(true)
-    @forum.should_receive(:topics).and_return(@topics)
-    @topics.should_receive(:sorted).and_return(@topics)
-    @topics.should_receive(:paginate).and_return(@topics)
-    @forum.should_receive(:children).and_return(@forums)
-    @forum.should_receive(:moderations).and_return(@moderations)
-    @moderations.should_receive(:topics).and_return(@moderations)
-    @moderations.should_receive(:for_user).and_return(@moderations)
-    @moderations.should_receive(:count).and_return(0)    
-    @forum.stub!(:position)
-    get 'show', { :id =&gt; @admin_forum.id }
-    response.should render_template(&quot;show&quot;)
-  end
 end</diff>
      <filename>spec/controllers/forums_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,6 @@
 test:
   name: test
-  is_visible_to_id: 1
\ No newline at end of file
+
+admins_only:
+  name: admins_only
+  
\ No newline at end of file</diff>
      <filename>spec/fixtures/categories.yml</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@ admins_only:
   title: Administrators Only!
   description: Top secret admin stuff goes here!
   position: 1
-  category: test
+  category: admins_only
   
 moderators_only:
   title: Moderators Only!</diff>
      <filename>spec/fixtures/forums.yml</filename>
    </modified>
    <modified>
      <diff>@@ -24,6 +24,11 @@ registered_users_admin_forum:
   can_see_forum: false
   forum: admins_only
   
+registered_users_admin_category:
+  group_id: 2
+  can_see_category: false
+  category: admins_only
+
 registered_users_sub_of_everybody_forum:
   group_id: 2
   can_see_forum: true</diff>
      <filename>spec/fixtures/permissions.yml</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>e2f2eca9a2062d87051e26fcee5ba6fb5637d340</id>
    </parent>
  </parents>
  <author>
    <name>Ryan Bigg</name>
    <email>radarlistener@gmail.com</email>
  </author>
  <url>http://github.com/radar/rboard/commit/213df5e5607cb466024652079c2357e658ea8aaf</url>
  <id>213df5e5607cb466024652079c2357e658ea8aaf</id>
  <committed-date>2009-04-03T05:48:17-07:00</committed-date>
  <authored-date>2009-04-03T05:48:17-07:00</authored-date>
  <message>Begin forum spec testing.</message>
  <tree>e2fbde9c24745d8b8db835274c7755a0e7344159</tree>
  <committer>
    <name>Ryan Bigg</name>
    <email>radarlistener@gmail.com</email>
  </committer>
</commit>
