From 099c75f9b69ea11ae8132d409310333ac19634a8 Mon Sep 17 00:00:00 2001 From: albert Date: Wed, 2 Feb 2011 16:11:26 -0500 Subject: [PATCH] wiki page func test --- app/controllers/wiki_pages_controller.rb | 24 +++++ app/models/wiki_page.rb | 2 +- app/views/wiki_pages/edit.html.erb | 0 app/views/wiki_pages/index.html.erb | 0 app/views/wiki_pages/new.html.erb | 0 app/views/wiki_pages/show.html.erb | 0 test/functional/wiki_pages_controller_test.rb | 89 ++++++++++++++++++- 7 files changed, 111 insertions(+), 4 deletions(-) create mode 100644 app/views/wiki_pages/edit.html.erb create mode 100644 app/views/wiki_pages/index.html.erb create mode 100644 app/views/wiki_pages/new.html.erb create mode 100644 app/views/wiki_pages/show.html.erb diff --git a/app/controllers/wiki_pages_controller.rb b/app/controllers/wiki_pages_controller.rb index 250efab15..3d40fdcc9 100644 --- a/app/controllers/wiki_pages_controller.rb +++ b/app/controllers/wiki_pages_controller.rb @@ -1,25 +1,49 @@ class WikiPagesController < ApplicationController + respond_to :html, :xml, :json + before_filter :member_only, :except => [:index, :show] + before_filter :moderator_only, :only => [:destroy] + def new + @wiki_page = WikiPage.new + respond_with(@wiki_page) end def edit + @wiki_page = WikiPage.find(params[:id]) + respond_with(@wiki_page) end def index + @search = WikiPage.search(params[:search]) + @wiki_pages = @search.paginate(:page => params[:page]) end def show + @wiki_page = WikiPage.find(params[:id]) + respond_with(@wiki_page) end def create + @wiki_page = WikiPage.create(params[:wiki_page]) + respond_with(@wiki_page) end def update + @wiki_page = WikiPage.find(params[:id]) + @wiki_page.update_attributes(params[:wiki_page]) + respond_with(@wiki_page) end def destroy + @wiki_page = WikiPage.find(params[:id]) + @wiki_page.destroy + respond_with(@wiki_page) end def revert + @wiki_page = WikiPage.find(params[:id]) + @version = WikiPageVersion.find(params[:version_id]) + @wiki_page.revert_to!(@version) + respond_with(@wiki_page) end end diff --git a/app/models/wiki_page.rb b/app/models/wiki_page.rb index 16b04ccd0..8a0e65116 100644 --- a/app/models/wiki_page.rb +++ b/app/models/wiki_page.rb @@ -9,7 +9,7 @@ class WikiPage < ActiveRecord::Base scope :titled, lambda {|title| where(["title = ?", title.downcase.tr(" ", "_")])} has_one :tag, :foreign_key => "name", :primary_key => "title" has_one :artist, :foreign_key => "name", :primary_key => "title" - has_many :versions, :class_name => "WikiPageVersion" + has_many :versions, :class_name => "WikiPageVersion", :dependent => :destroy def self.build_relation(options = {}) relation = where() diff --git a/app/views/wiki_pages/edit.html.erb b/app/views/wiki_pages/edit.html.erb new file mode 100644 index 000000000..e69de29bb diff --git a/app/views/wiki_pages/index.html.erb b/app/views/wiki_pages/index.html.erb new file mode 100644 index 000000000..e69de29bb diff --git a/app/views/wiki_pages/new.html.erb b/app/views/wiki_pages/new.html.erb new file mode 100644 index 000000000..e69de29bb diff --git a/app/views/wiki_pages/show.html.erb b/app/views/wiki_pages/show.html.erb new file mode 100644 index 000000000..e69de29bb diff --git a/test/functional/wiki_pages_controller_test.rb b/test/functional/wiki_pages_controller_test.rb index 24e46c11c..af2caa1fb 100644 --- a/test/functional/wiki_pages_controller_test.rb +++ b/test/functional/wiki_pages_controller_test.rb @@ -1,8 +1,91 @@ require 'test_helper' class WikiPagesControllerTest < ActionController::TestCase - # Replace this with your real tests. - test "the truth" do - assert true + context "The wiki pages controller" do + setup do + @user = Factory.create(:user) + @mod = Factory.create(:moderator_user) + CurrentUser.user = @user + CurrentUser.ip_addr = "127.0.0.1" + end + + teardown do + CurrentUser.user = nil + end + + context "index action" do + setup do + Factory.create(:wiki_page, :title => "abc") + end + + should "list all wiki_pages" do + get :index + assert_response :success + end + + should "list all wiki_pages (with search)" do + get :index, {:search => {:title_matches => "abc"}} + assert_response :success + end + end + + context "show action" do + setup do + @wiki_page = Factory.create(:wiki_page) + end + + should "render" do + get :show, {:id => @wiki_page.id} + assert_response :success + end + end + + context "create action" do + should "create a wiki_page" do + assert_difference("WikiPage.count", 1) do + post :create, {:wiki_page => {:title => "abc", :body => "abc"}}, {:user_id => @user.id} + end + end + end + + context "update action" do + setup do + @wiki_page = Factory.create(:wiki_page) + end + + should "update a wiki_page" do + post :update, {:id => @wiki_page.id, :wiki_page => {:body => "xyz"}}, {:user_id => @user.id} + @wiki_page.reload + assert_equal("xyz", @wiki_page.body) + end + end + + context "destroy action" do + setup do + @wiki_page = Factory.create(:wiki_page) + end + + should "destroy a wiki_page" do + assert_difference("WikiPage.count", -1) do + post :destroy, {:id => @wiki_page.id}, {:user_id => @mod.id} + end + end + end + + context "revert action" do + setup do + @wiki_page = Factory.create(:wiki_page, :body => "1") + @wiki_page.update_attributes(:body => "1 2") + @wiki_page.update_attributes(:body => "1 2 3") + end + + should "revert to a previous version" do + version = @wiki_page.versions(true).last + assert_equal("1", version.body) + post :revert, {:id => @wiki_page.id, :version_id => version.id} + @wiki_page.reload + assert_equal("1", @wiki_page.body) + end + end end end