forked from e621ng/e621ng
added user feedback functional test
This commit is contained in:
parent
df20d9233b
commit
8eb3451fb4
1
.gitignore
vendored
1
.gitignore
vendored
@ -6,6 +6,7 @@ lib/danbooru_image_resizer/*.log
|
|||||||
db/*.sqlite3
|
db/*.sqlite3
|
||||||
log/*.log
|
log/*.log
|
||||||
tmp/**/*
|
tmp/**/*
|
||||||
|
tmp/upload_*
|
||||||
public/data
|
public/data
|
||||||
vendor/cache/*.gem
|
vendor/cache/*.gem
|
||||||
.sass-cache
|
.sass-cache
|
||||||
|
@ -10,7 +10,7 @@ class ApplicationController < ActionController::Base
|
|||||||
|
|
||||||
protected
|
protected
|
||||||
def access_denied
|
def access_denied
|
||||||
previous_url = params[:url] || request.request_uri
|
previous_url = params[:url] || request.fullpath
|
||||||
|
|
||||||
respond_to do |fmt|
|
respond_to do |fmt|
|
||||||
fmt.html do
|
fmt.html do
|
||||||
|
@ -1,19 +1,39 @@
|
|||||||
class UserFeedbackController < ApplicationController
|
class UserFeedbackController < ApplicationController
|
||||||
|
before_filter :privileged_only, :only => [:new, :edit, :create, :update, :destroy]
|
||||||
|
respond_to :html, :xml, :json
|
||||||
|
rescue_from User::PrivilegeError, :with => "static/access_denied"
|
||||||
|
|
||||||
def new
|
def new
|
||||||
|
@user_feedback = UserFeedback.new
|
||||||
|
respond_with(@user_feedback)
|
||||||
end
|
end
|
||||||
|
|
||||||
def edit
|
def edit
|
||||||
|
@user_feedback = UserFeedback.find(params[:id])
|
||||||
|
check_privilege(@user_feedback)
|
||||||
|
respond_with(@user_feedback)
|
||||||
end
|
end
|
||||||
|
|
||||||
def index
|
def index
|
||||||
|
@search = UserFeedback.search(params[:search])
|
||||||
|
@user_feedback = @search.paginate(:page => params[:page])
|
||||||
|
respond_with(@user_feedback)
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
end
|
@user_feedback = UserFeedback.create(params[:user_feedback])
|
||||||
|
respond_with(@user_feedback)
|
||||||
def update
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
|
@user_feedback = UserFeedback.find(params[:id])
|
||||||
|
check_privilege(@user_feedback)
|
||||||
|
@user_feedback.destroy
|
||||||
|
respond_with(@user_feedback, :location => user_feedback_path)
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
def check_privilege(user_feedback)
|
||||||
|
raise User::PrivilegeError unless (user_feedback.creator_id == CurrentUser.id || CurrentUser.is_moderator?)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -232,7 +232,7 @@ class Upload < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def temp_file_path
|
def temp_file_path
|
||||||
@temp_file_path ||= File.join(Rails.root, "tmp", "#{Time.now.to_f}.#{$PROCESS_ID}")
|
@temp_file_path ||= File.join(Rails.root, "tmp", "upload_#{Time.now.to_f}.#{$PROCESS_ID}")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ class UserFeedback < ActiveRecord::Base
|
|||||||
belongs_to :user
|
belongs_to :user
|
||||||
belongs_to :creator, :class_name => "User"
|
belongs_to :creator, :class_name => "User"
|
||||||
before_validation :initialize_creator, :on => :create
|
before_validation :initialize_creator, :on => :create
|
||||||
attr_accessible :body, :user_id, :is_positive
|
attr_accessible :body, :user_id, :is_positive, :user_name
|
||||||
validates_presence_of :user, :creator, :body
|
validates_presence_of :user, :creator, :body
|
||||||
validate :creator_is_privileged
|
validate :creator_is_privileged
|
||||||
|
|
||||||
@ -11,6 +11,10 @@ class UserFeedback < ActiveRecord::Base
|
|||||||
self.creator_id = CurrentUser.id
|
self.creator_id = CurrentUser.id
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def user_name=(name)
|
||||||
|
self.user_id = User.name_to_id(name)
|
||||||
|
end
|
||||||
|
|
||||||
def creator_is_privileged
|
def creator_is_privileged
|
||||||
if !creator.is_privileged?
|
if !creator.is_privileged?
|
||||||
errors[:creator] << "must be privileged"
|
errors[:creator] << "must be privileged"
|
||||||
|
0
app/views/user_feedback/edit.html.erb
Normal file
0
app/views/user_feedback/edit.html.erb
Normal file
0
app/views/user_feedback/index.html.erb
Normal file
0
app/views/user_feedback/index.html.erb
Normal file
0
app/views/user_feedback/new.html.erb
Normal file
0
app/views/user_feedback/new.html.erb
Normal file
@ -9,6 +9,7 @@ class CreateUserFeedback < ActiveRecord::Migration
|
|||||||
end
|
end
|
||||||
|
|
||||||
add_index :user_feedback, :user_id
|
add_index :user_feedback, :user_id
|
||||||
|
add_index :user_feedback, :creator_id
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.down
|
def self.down
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
Factory.define(:user_feedback) do |f|
|
Factory.define(:user_feedback) do |f|
|
||||||
|
f.user {|x| x.association(:user)}
|
||||||
f.is_positive true
|
f.is_positive true
|
||||||
f.body {Faker::Lorem.words}
|
f.body {Faker::Lorem.words}
|
||||||
end
|
end
|
||||||
|
@ -1,8 +1,75 @@
|
|||||||
require 'test_helper'
|
require 'test_helper'
|
||||||
|
|
||||||
class UserFeedbackControllerTest < ActionController::TestCase
|
class UserFeedbackControllerTest < ActionController::TestCase
|
||||||
# Replace this with your real tests.
|
context "The user feedback controller" do
|
||||||
test "the truth" do
|
setup do
|
||||||
assert true
|
@user = Factory.create(:user)
|
||||||
|
@critic = Factory.create(:privileged_user)
|
||||||
|
CurrentUser.user = @critic
|
||||||
|
CurrentUser.ip_addr = "127.0.0.1"
|
||||||
|
end
|
||||||
|
|
||||||
|
teardown do
|
||||||
|
CurrentUser.user = nil
|
||||||
|
CurrentUser.ip_addr = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
context "new action" do
|
||||||
|
should "render" do
|
||||||
|
get :new, {}, {:user_id => @critic.id}
|
||||||
|
assert_response :success
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "edit action" do
|
||||||
|
setup do
|
||||||
|
@user_feedback = Factory.create(:user_feedback)
|
||||||
|
end
|
||||||
|
|
||||||
|
should "render" do
|
||||||
|
get :edit, {:id => @user_feedback.id}, {:user_id => @critic.id}
|
||||||
|
assert_response :success
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "index action" do
|
||||||
|
setup do
|
||||||
|
@user_feedback = Factory.create(:user_feedback)
|
||||||
|
end
|
||||||
|
|
||||||
|
should "render" do
|
||||||
|
get :index, {}, {:user_id => @user.id}
|
||||||
|
assert_response :success
|
||||||
|
end
|
||||||
|
|
||||||
|
context "with search parameters" do
|
||||||
|
should "render" do
|
||||||
|
get :index, {:search => {:user_id_equals => @user.id}}, {:user_id => @critic.id}
|
||||||
|
assert_response :success
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "create action" do
|
||||||
|
should "create a new feedback" do
|
||||||
|
assert_difference("UserFeedback.count", 1) do
|
||||||
|
post :create, {:user_feedback => {:is_positive => false, :user_name => @user.name, :body => "xxx"}}, {:user_id => @critic.id}
|
||||||
|
assert_not_nil(assigns(:user_feedback))
|
||||||
|
assert_equal([], assigns(:user_feedback).errors.full_messages)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "destroy action" do
|
||||||
|
setup do
|
||||||
|
@user_feedback = Factory.create(:user_feedback)
|
||||||
|
end
|
||||||
|
|
||||||
|
should "delete a feedback" do
|
||||||
|
assert_difference "UserFeedback.count", -1 do
|
||||||
|
post :destroy, {:id => @user_feedback.id}, {:user_id => @critic.id}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user