Skip to content
Snippets Groups Projects
Commit eacea15a authored by Valery Sizov's avatar Valery Sizov
Browse files

wiki base sceleton

parent df27ec29
No related branches found
No related tags found
No related merge requests found
Showing
with 432 additions and 0 deletions
class WikisController < ApplicationController
before_filter :project
layout "project"
respond_to :html
def show
@wiki = @project.wikis.find_by_slug(params[:id])
respond_with(@wiki)
end
def new
@wiki = Wiki.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @wiki }
end
end
def edit
@wiki = Wiki.find(params[:id])
end
def create
@wiki = Wiki.new(params[:wiki])
respond_to do |format|
if @wiki.save
format.html { redirect_to @wiki, notice: 'Wiki was successfully created.' }
format.json { render json: @wiki, status: :created, location: @wiki }
else
format.html { render action: "new" }
format.json { render json: @wiki.errors, status: :unprocessable_entity }
end
end
end
def update
@wiki = Wiki.find(params[:id])
respond_to do |format|
if @wiki.update_attributes(params[:wiki])
format.html { redirect_to @wiki, notice: 'Wiki was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @wiki.errors, status: :unprocessable_entity }
end
end
end
def destroy
@wiki = Wiki.find(params[:id])
@wiki.destroy
respond_to do |format|
format.html { redirect_to wikis_url }
format.json { head :no_content }
end
end
end
Loading
Loading
@@ -12,6 +12,7 @@ class Project < ActiveRecord::Base
has_many :deploy_keys, :dependent => :destroy, :foreign_key => "project_id", :class_name => "Key"
has_many :web_hooks, :dependent => :destroy
has_many :protected_branches, :dependent => :destroy
has_many :wikis, :dependent => :destroy
 
acts_as_taggable
 
Loading
Loading
class Wiki < ActiveRecord::Base
belongs_to :project
validates :content, :title, :presence => true
validates :title, :length => 1..250,
:uniqueness => {:scope => :project_id, :case_sensitive => false}
before_save :set_slug
def to_param
slug
end
protected
def set_slug
self.slug = self.title.parameterize
end
end
Loading
Loading
@@ -11,6 +11,7 @@
- if @project.issues_enabled
= link_to project_issues_filter_path(@project), :class => (controller.controller_name == "issues") ? "current" : nil do
Issues
- if @project.merge_requests_enabled
= link_to project_merge_requests_path(@project), :class => (controller.controller_name == "merge_requests") ? "current" : nil do
Merge Requests
Loading
Loading
@@ -18,3 +19,7 @@
- if @project.wall_enabled
= link_to wall_project_path(@project), :class => current_page?(:controller => "projects", :action => "wall", :id => @project) ? "current" : nil do
Wall
- if @project.wiki_enabled
-#= link_to project_wikis_path(@project), :class => current_page?(:controller => "projects", :action => "wiki", :id => @project) ? "current" : nil do
Wiki
Loading
Loading
@@ -41,6 +41,10 @@
.clearfix
= f.label :wall_enabled, "Wall"
.input= f.check_box :wall_enabled
.clearfix
= f.label :wiki_enabled, "Wiki"
.input= f.check_box :wiki_enabled
.clearfix
= f.label :description
Loading
Loading
= form_for @wiki do |f|
-if @wiki.errors.any?
#error_explanation
%h2= "#{pluralize(@wiki.errors.count, "error")} prohibited this wiki from being saved:"
%ul
- @wiki.errors.full_messages.each do |msg|
%li= msg
.field
= f.label :title
= f.text_field :title
.field
= f.label :content
= f.text_area :content
.actions
= f.submit 'Save'
%h1 Editing wiki
= render 'form'
= link_to 'Show', @wiki
\|
= link_to 'Back', wikis_path
%h1 Listing wikis
%table
%tr
%th Title
%th Content
%th
%th
%th
- @wikis.each do |wiki|
%tr
%td= wiki.title
%td= wiki.content
%td= link_to 'Show', wiki
%td= link_to 'Edit', edit_wiki_path(wiki)
%td= link_to 'Destroy', wiki, :confirm => 'Are you sure?', :method => :delete
%br
= link_to 'New Wiki', new_wiki_path
%h1 New wiki
= render 'form'
= link_to 'Back', wikis_path
%p#notice= notice
%h3= @wiki.title
= @wiki.content
%br
= link_to 'Edit', edit_project_wiki_path(@project, @wiki)
Gitlab::Application.routes.draw do
 
# Optionally, enable Resque here
require 'resque/server'
mount Resque::Server.new, at: '/info/resque'
Loading
Loading
@@ -55,6 +56,7 @@ Gitlab::Application.routes.draw do
get "files"
end
 
resources :wikis, :only => [:show, :edit, :destroy]
resource :repository do
member do
get "branches"
Loading
Loading
class CreateWikis < ActiveRecord::Migration
def change
create_table :wikis do |t|
t.string :title
t.text :content
t.integer :project_id
t.timestamps
end
end
end
class AddSlugToWiki < ActiveRecord::Migration
def change
add_column :wikis, :slug, :string
end
end
class AddWikiEnabledToProject < ActiveRecord::Migration
def change
add_column :projects, :wiki_enabled, :boolean, :default => true, :null => false
end
end
Loading
Loading
@@ -11,7 +11,11 @@
#
# It's strongly recommended to check this file into your version control system.
 
<<<<<<< HEAD
ActiveRecord::Schema.define(:version => 20120216085842) do
=======
ActiveRecord::Schema.define(:version => 20120219140810) do
>>>>>>> wiki base sceleton
 
create_table "issues", :force => true do |t|
t.string "title"
Loading
Loading
@@ -80,6 +84,7 @@ ActiveRecord::Schema.define(:version => 20120216085842) do
t.boolean "issues_enabled", :default => true, :null => false
t.boolean "wall_enabled", :default => true, :null => false
t.boolean "merge_requests_enabled", :default => true, :null => false
t.boolean "wiki_enabled", :default => true, :null => false
end
 
create_table "protected_branches", :force => true do |t|
Loading
Loading
@@ -158,4 +163,13 @@ ActiveRecord::Schema.define(:version => 20120216085842) do
t.datetime "updated_at"
end
 
create_table "wikis", :force => true do |t|
t.string "title"
t.text "content"
t.integer "project_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "slug"
end
end
require 'spec_helper'
# This spec was generated by rspec-rails when you ran the scaffold generator.
# It demonstrates how one might use RSpec to specify the controller code that
# was generated by Rails when you ran the scaffold generator.
#
# It assumes that the implementation code is generated by the rails scaffold
# generator. If you are using any extension libraries to generate different
# controller code, this generated spec may or may not pass.
#
# It only uses APIs available in rails and/or rspec-rails. There are a number
# of tools you can use to make these specs even more expressive, but we're
# sticking to rails and rspec-rails APIs to keep things simple and stable.
#
# Compared to earlier versions of this generator, there is very limited use of
# stubs and message expectations in this spec. Stubs are only used when there
# is no simpler way to get a handle on the object needed for the example.
# Message expectations are only used when there is no simpler way to specify
# that an instance is receiving a specific message.
describe WikisController do
# This should return the minimal set of attributes required to create a valid
# Wiki. As you add validations to Wiki, be sure to
# update the return value of this method accordingly.
def valid_attributes
{}
end
# This should return the minimal set of values that should be in the session
# in order to pass any filters (e.g. authentication) defined in
# WikisController. Be sure to keep this updated too.
def valid_session
{}
end
describe "GET index" do
it "assigns all wikis as @wikis" do
wiki = Wiki.create! valid_attributes
get :index, {}, valid_session
assigns(:wikis).should eq([wiki])
end
end
describe "GET show" do
it "assigns the requested wiki as @wiki" do
wiki = Wiki.create! valid_attributes
get :show, {:id => wiki.to_param}, valid_session
assigns(:wiki).should eq(wiki)
end
end
describe "GET new" do
it "assigns a new wiki as @wiki" do
get :new, {}, valid_session
assigns(:wiki).should be_a_new(Wiki)
end
end
describe "GET edit" do
it "assigns the requested wiki as @wiki" do
wiki = Wiki.create! valid_attributes
get :edit, {:id => wiki.to_param}, valid_session
assigns(:wiki).should eq(wiki)
end
end
describe "POST create" do
describe "with valid params" do
it "creates a new Wiki" do
expect {
post :create, {:wiki => valid_attributes}, valid_session
}.to change(Wiki, :count).by(1)
end
it "assigns a newly created wiki as @wiki" do
post :create, {:wiki => valid_attributes}, valid_session
assigns(:wiki).should be_a(Wiki)
assigns(:wiki).should be_persisted
end
it "redirects to the created wiki" do
post :create, {:wiki => valid_attributes}, valid_session
response.should redirect_to(Wiki.last)
end
end
describe "with invalid params" do
it "assigns a newly created but unsaved wiki as @wiki" do
# Trigger the behavior that occurs when invalid params are submitted
Wiki.any_instance.stub(:save).and_return(false)
post :create, {:wiki => {}}, valid_session
assigns(:wiki).should be_a_new(Wiki)
end
it "re-renders the 'new' template" do
# Trigger the behavior that occurs when invalid params are submitted
Wiki.any_instance.stub(:save).and_return(false)
post :create, {:wiki => {}}, valid_session
response.should render_template("new")
end
end
end
describe "PUT update" do
describe "with valid params" do
it "updates the requested wiki" do
wiki = Wiki.create! valid_attributes
# Assuming there are no other wikis in the database, this
# specifies that the Wiki created on the previous line
# receives the :update_attributes message with whatever params are
# submitted in the request.
Wiki.any_instance.should_receive(:update_attributes).with({'these' => 'params'})
put :update, {:id => wiki.to_param, :wiki => {'these' => 'params'}}, valid_session
end
it "assigns the requested wiki as @wiki" do
wiki = Wiki.create! valid_attributes
put :update, {:id => wiki.to_param, :wiki => valid_attributes}, valid_session
assigns(:wiki).should eq(wiki)
end
it "redirects to the wiki" do
wiki = Wiki.create! valid_attributes
put :update, {:id => wiki.to_param, :wiki => valid_attributes}, valid_session
response.should redirect_to(wiki)
end
end
describe "with invalid params" do
it "assigns the wiki as @wiki" do
wiki = Wiki.create! valid_attributes
# Trigger the behavior that occurs when invalid params are submitted
Wiki.any_instance.stub(:save).and_return(false)
put :update, {:id => wiki.to_param, :wiki => {}}, valid_session
assigns(:wiki).should eq(wiki)
end
it "re-renders the 'edit' template" do
wiki = Wiki.create! valid_attributes
# Trigger the behavior that occurs when invalid params are submitted
Wiki.any_instance.stub(:save).and_return(false)
put :update, {:id => wiki.to_param, :wiki => {}}, valid_session
response.should render_template("edit")
end
end
end
describe "DELETE destroy" do
it "destroys the requested wiki" do
wiki = Wiki.create! valid_attributes
expect {
delete :destroy, {:id => wiki.to_param}, valid_session
}.to change(Wiki, :count).by(-1)
end
it "redirects to the wikis list" do
wiki = Wiki.create! valid_attributes
delete :destroy, {:id => wiki.to_param}, valid_session
response.should redirect_to(wikis_url)
end
end
end
require 'spec_helper'
describe "wikis/edit" do
before(:each) do
@wiki = assign(:wiki, stub_model(Wiki,
:title => "MyString",
:content => "MyText"
))
end
it "renders the edit wiki form" do
render
# Run the generator again with the --webrat flag if you want to use webrat matchers
assert_select "form", :action => wikis_path(@wiki), :method => "post" do
assert_select "input#wiki_title", :name => "wiki[title]"
assert_select "textarea#wiki_content", :name => "wiki[content]"
end
end
end
require 'spec_helper'
describe "wikis/index" do
before(:each) do
assign(:wikis, [
stub_model(Wiki,
:title => "Title",
:content => "MyText"
),
stub_model(Wiki,
:title => "Title",
:content => "MyText"
)
])
end
it "renders a list of wikis" do
render
# Run the generator again with the --webrat flag if you want to use webrat matchers
assert_select "tr>td", :text => "Title".to_s, :count => 2
# Run the generator again with the --webrat flag if you want to use webrat matchers
assert_select "tr>td", :text => "MyText".to_s, :count => 2
end
end
require 'spec_helper'
describe "wikis/new" do
before(:each) do
assign(:wiki, stub_model(Wiki,
:title => "MyString",
:content => "MyText"
).as_new_record)
end
it "renders new wiki form" do
render
# Run the generator again with the --webrat flag if you want to use webrat matchers
assert_select "form", :action => wikis_path, :method => "post" do
assert_select "input#wiki_title", :name => "wiki[title]"
assert_select "textarea#wiki_content", :name => "wiki[content]"
end
end
end
require 'spec_helper'
describe "wikis/show" do
before(:each) do
@wiki = assign(:wiki, stub_model(Wiki,
:title => "Title",
:content => "MyText"
))
end
it "renders attributes in <p>" do
render
# Run the generator again with the --webrat flag if you want to use webrat matchers
rendered.should match(/Title/)
# Run the generator again with the --webrat flag if you want to use webrat matchers
rendered.should match(/MyText/)
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment