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
|
||||
log/*.log
|
||||
tmp/**/*
|
||||
tmp/upload_*
|
||||
public/data
|
||||
vendor/cache/*.gem
|
||||
.sass-cache
|
||||
|
@ -10,7 +10,7 @@ class ApplicationController < ActionController::Base
|
||||
|
||||
protected
|
||||
def access_denied
|
||||
previous_url = params[:url] || request.request_uri
|
||||
previous_url = params[:url] || request.fullpath
|
||||
|
||||
respond_to do |fmt|
|
||||
fmt.html do
|
||||
|
@ -1,19 +1,39 @@
|
||||
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
|
||||
@user_feedback = UserFeedback.new
|
||||
respond_with(@user_feedback)
|
||||
end
|
||||
|
||||
def edit
|
||||
@user_feedback = UserFeedback.find(params[:id])
|
||||
check_privilege(@user_feedback)
|
||||
respond_with(@user_feedback)
|
||||
end
|
||||
|
||||
def index
|
||||
@search = UserFeedback.search(params[:search])
|
||||
@user_feedback = @search.paginate(:page => params[:page])
|
||||
respond_with(@user_feedback)
|
||||
end
|
||||
|
||||
def create
|
||||
end
|
||||
|
||||
def update
|
||||
@user_feedback = UserFeedback.create(params[:user_feedback])
|
||||
respond_with(@user_feedback)
|
||||
end
|
||||
|
||||
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
|
||||
|
@ -232,7 +232,7 @@ class Upload < ActiveRecord::Base
|
||||
end
|
||||
|
||||
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
|
||||
|
||||
|
@ -3,7 +3,7 @@ class UserFeedback < ActiveRecord::Base
|
||||
belongs_to :user
|
||||
belongs_to :creator, :class_name => "User"
|
||||
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
|
||||
validate :creator_is_privileged
|
||||
|
||||
@ -11,6 +11,10 @@ class UserFeedback < ActiveRecord::Base
|
||||
self.creator_id = CurrentUser.id
|
||||
end
|
||||
|
||||
def user_name=(name)
|
||||
self.user_id = User.name_to_id(name)
|
||||
end
|
||||
|
||||
def creator_is_privileged
|
||||
if !creator.is_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
|
||||
|
||||
add_index :user_feedback, :user_id
|
||||
add_index :user_feedback, :creator_id
|
||||
end
|
||||
|
||||
def self.down
|
||||
|
@ -1,4 +1,5 @@
|
||||
Factory.define(:user_feedback) do |f|
|
||||
f.user {|x| x.association(:user)}
|
||||
f.is_positive true
|
||||
f.body {Faker::Lorem.words}
|
||||
end
|
||||
|
@ -1,8 +1,75 @@
|
||||
require 'test_helper'
|
||||
|
||||
class UserFeedbackControllerTest < ActionController::TestCase
|
||||
# Replace this with your real tests.
|
||||
test "the truth" do
|
||||
assert true
|
||||
context "The user feedback controller" do
|
||||
setup do
|
||||
@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
|
||||
|
Loading…
Reference in New Issue
Block a user