fix user feedback controller test
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
class UserFeedbackController < ApplicationController
|
||||
class UserFeedbacksController < 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
|
||||
@user_feedback = UserFeedback.new(params[:user_feedback])
|
||||
respond_with(@user_feedback)
|
||||
end
|
||||
|
||||
@@ -14,10 +14,15 @@ class UserFeedbackController < ApplicationController
|
||||
respond_with(@user_feedback)
|
||||
end
|
||||
|
||||
def show
|
||||
@user_feedback = UserFeedback.find(params[:id])
|
||||
respond_with(@user_feedback)
|
||||
end
|
||||
|
||||
def index
|
||||
@search = UserFeedback.search(params[:search])
|
||||
@user_feedback = @search.paginate(:page => params[:page])
|
||||
respond_with(@user_feedback)
|
||||
@user_feedbacks = @search.paginate(params[:page])
|
||||
respond_with(@user_feedbacks)
|
||||
end
|
||||
|
||||
def create
|
||||
@@ -29,7 +34,7 @@ class UserFeedbackController < ApplicationController
|
||||
@user_feedback = UserFeedback.find(params[:id])
|
||||
check_privilege(@user_feedback)
|
||||
@user_feedback.destroy
|
||||
respond_with(@user_feedback, :location => user_feedback_path)
|
||||
respond_with(@user_feedback)
|
||||
end
|
||||
|
||||
private
|
||||
@@ -3,14 +3,25 @@ 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, :user_name
|
||||
validates_presence_of :user, :creator, :body
|
||||
attr_accessible :body, :user_id, :category, :user_name
|
||||
validates_presence_of :user, :creator, :body, :category
|
||||
validate :creator_is_privileged
|
||||
scope :positive, where("category = ?", "positive")
|
||||
scope :neutral, where("category = ?", "neutral")
|
||||
scope :negative, where("category = ?", "negative")
|
||||
|
||||
def initialize_creator
|
||||
self.creator_id = CurrentUser.id
|
||||
end
|
||||
|
||||
def user_name
|
||||
if user
|
||||
user.name
|
||||
else
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
||||
def user_name=(name)
|
||||
self.user_id = User.name_to_id(name)
|
||||
end
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
<% if @user %>
|
||||
<% content_for("subnavbar") do %>
|
||||
<li><%= link_to "Add", :action => "create", :user_id => @user.id %></li>
|
||||
<li><%= link_to "List for user", :action => "index", :user_id => @user.id %></li>
|
||||
<li><%= link_to "List for all", :action => "index", :user_id => nil %></li>
|
||||
<% end %>
|
||||
<% end %>
|
||||
@@ -1,42 +0,0 @@
|
||||
<div id="user-record">
|
||||
<h4>Record</h4>
|
||||
|
||||
<table width="100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="15%">User</th>
|
||||
<th width="15%">Reporter</th>
|
||||
<th width="15%">When</th>
|
||||
<th width="50%">Body</th>
|
||||
<th width="5%"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @user_records.each do |rec| %>
|
||||
<tr class="<%= rec.is_positive? ? 'positive-record' : 'negative-record' %>" id="record-<%= rec.id %>">
|
||||
<td>
|
||||
<% if @user %>
|
||||
<%= link_to h(rec.user.pretty_name), :controller => "user", :action => "show", :id => rec.user_id %>
|
||||
<% else %>
|
||||
<%= link_to h(rec.user.pretty_name), :action => "index", :user_id => rec.user_id %>
|
||||
<% end %>
|
||||
</td>
|
||||
<td><%= h(rec.reporter.pretty_name) %></td>
|
||||
<td><%= time_ago_in_words(rec.created_at) %> ago</td>
|
||||
<td><%= format_text(rec.body) %></td>
|
||||
<td>
|
||||
<% if @current_user.is_mod_or_higher? || @current_user.id == rec.reported_by %>
|
||||
<%= link_to_function "Delete", "UserRecord.destroy(#{rec.id})" %>
|
||||
<% end %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div id="paginator">
|
||||
<%= will_paginate(@user_records) %>
|
||||
</div>
|
||||
|
||||
<%= render :partial => "footer" %>
|
||||
</div>
|
||||
@@ -1,29 +0,0 @@
|
||||
<h4>Add Record for <%= h(@user.pretty_name) %></h4>
|
||||
|
||||
<div id="preview" style="margin-bottom: 1em;">
|
||||
</div>
|
||||
|
||||
<% form_tag(:action => "create") do %>
|
||||
<%= hidden_field_tag "user_id", @user.id %>
|
||||
<table width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th width="10%"><label>Positive</label></th>
|
||||
<td width="90%"><%= check_box "user_record", "is_positive" %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><label>Reason</label></th>
|
||||
<td><%= text_area "user_record", "body", :size => "20x8" %></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<%= submit_tag "Submit" %>
|
||||
<%= submit_to_remote "preview", "Preview", :url => {:action => "preview"}, :update => "preview", :method => :get %>
|
||||
<%= button_to_function "Cancel", "location.back()" %>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
<% end %>
|
||||
6
app/views/user_feedbacks/_secondary_links.html.erb
Normal file
6
app/views/user_feedbacks/_secondary_links.html.erb
Normal file
@@ -0,0 +1,6 @@
|
||||
<% content_for(:secondary_links) do %>
|
||||
<menu>
|
||||
<li><%= link_to "New", new_user_feedback_path %></li>
|
||||
<li><%= link_to "Listing", user_feedbacks_path %></li>
|
||||
</menu>
|
||||
<% end %>
|
||||
32
app/views/user_feedbacks/index.html.erb
Normal file
32
app/views/user_feedbacks/index.html.erb
Normal file
@@ -0,0 +1,32 @@
|
||||
<div id="c-user-feedbacks">
|
||||
<div id="a-index">
|
||||
<h1>User Feedback</h1>
|
||||
|
||||
<table width="100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="15%">User</th>
|
||||
<th width="15%">Creator</th>
|
||||
<th width="15%">When</th>
|
||||
<th width="55%">Message</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @user_feedbacks.each do |feedback| %>
|
||||
<tr>
|
||||
<td><%= link_to feedback.user_name, user_feedback_path(feedback.user_id) %></td>
|
||||
<td><%= feedback.creator.name %></td>
|
||||
<td><%= time_ago_in_words(feedback.created_at) %> ago</td>
|
||||
<td><%= format_text(feedback.body) %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="paginator">
|
||||
<%= numbered_paginator(@user_feedbacks) %>
|
||||
</div>
|
||||
|
||||
<%= render "secondary_links" %>
|
||||
</div>
|
||||
</div>
|
||||
17
app/views/user_feedbacks/new.html.erb
Normal file
17
app/views/user_feedbacks/new.html.erb
Normal file
@@ -0,0 +1,17 @@
|
||||
<div id="c-user-feedbacks">
|
||||
<div id="a-new">
|
||||
<h1>New User Feedback</h1>
|
||||
|
||||
<div id="preview">
|
||||
</div>
|
||||
|
||||
<%= simple_form_for(@user_feedback) do |f| %>
|
||||
<%= f.input :user_name %>
|
||||
<%= f.input :category, :collection => ["positive", "neutral", "negative"] %>
|
||||
<%= f.input :body %>
|
||||
<%= f.button :submit %>
|
||||
<%= f.button :submit, :value => "Preview" %>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
14
app/views/user_feedbacks/show.html.erb
Normal file
14
app/views/user_feedbacks/show.html.erb
Normal file
@@ -0,0 +1,14 @@
|
||||
<div id="c-user-feedbacks">
|
||||
<div id="a-show">
|
||||
<h1>User Feedback For <%= @user_feedback.user_name %></h1>
|
||||
|
||||
<ul>
|
||||
<li><strong>Creator</strong> <%= @user_feedback.creator.name %></li>
|
||||
<li><strong>Date</strong> <%= @user_feedback.created_at %></li>
|
||||
<li><strong>Category</strong> <%= @user_feedback.category %></li>
|
||||
<li><strong>Message</strong> <%= format_text @user_feedback.body %></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<%= render "secondary_links" %>
|
||||
@@ -2,5 +2,4 @@ ActiveSupport::Inflector.inflections do |inflect|
|
||||
# inflect.plural /^(ox)$/i, '\1en'
|
||||
# inflect.singular /^(ox)en/i, '\1'
|
||||
# inflect.irregular 'person', 'people'
|
||||
inflect.uncountable %w( user_feedback )
|
||||
end
|
||||
|
||||
@@ -90,7 +90,7 @@ Danbooru::Application.routes.draw do
|
||||
resources :tag_subscriptions
|
||||
resources :uploads
|
||||
resources :users
|
||||
resources :user_feedback
|
||||
resources :user_feedbacks
|
||||
resources :wiki_pages do
|
||||
member do
|
||||
put :revert
|
||||
|
||||
@@ -2396,7 +2396,7 @@ CREATE TABLE user_feedback (
|
||||
id integer NOT NULL,
|
||||
user_id integer NOT NULL,
|
||||
creator_id integer NOT NULL,
|
||||
is_positive boolean NOT NULL,
|
||||
category character varying(255) NOT NULL,
|
||||
body text NOT NULL,
|
||||
created_at timestamp without time zone,
|
||||
updated_at timestamp without time zone
|
||||
|
||||
@@ -3,7 +3,7 @@ class CreateUserFeedback < ActiveRecord::Migration
|
||||
create_table :user_feedback do |t|
|
||||
t.column :user_id, :integer, :null => false
|
||||
t.column :creator_id, :integer, :null => false
|
||||
t.column :is_positive, :boolean, :null => false
|
||||
t.column :category, :string, :null => false
|
||||
t.column :body, :text, :null => false
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
Factory.define(:user_feedback) do |f|
|
||||
f.user {|x| x.association(:user)}
|
||||
f.is_positive true
|
||||
f.body {Faker::Lorem.words}
|
||||
f.category "positive"
|
||||
f.body {Faker::Lorem.words.join(" ")}
|
||||
end
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
require 'test_helper'
|
||||
|
||||
class UserFeedbackControllerTest < ActionController::TestCase
|
||||
context "The user feedback controller" do
|
||||
class UserFeedbacksControllerTest < ActionController::TestCase
|
||||
context "The user feedbacks controller" do
|
||||
setup do
|
||||
@user = Factory.create(:user)
|
||||
@critic = Factory.create(:privileged_user)
|
||||
@@ -53,7 +53,7 @@ class UserFeedbackControllerTest < ActionController::TestCase
|
||||
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}
|
||||
post :create, {:user_feedback => {:category => "positive", :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
|
||||
@@ -1,60 +0,0 @@
|
||||
require 'test_helper'
|
||||
|
||||
class UserMaintenanceControllerTest < ActionController::TestCase
|
||||
context "The user maintenance controller" do
|
||||
setup do
|
||||
@user = Factory.create(:user)
|
||||
@blank_email_user = Factory.create(:user, :email => "")
|
||||
CurrentUser.user = nil
|
||||
CurrentUser.ip_addr = "127.0.0.1"
|
||||
ActionMailer::Base.deliveries.clear
|
||||
end
|
||||
|
||||
teardown do
|
||||
CurrentUser.user = nil
|
||||
CurrentUser.ip_addr = nil
|
||||
end
|
||||
|
||||
context "login_reminder action" do
|
||||
should "deliver an email with the login to the user" do
|
||||
post :login_reminder, {:user => {:email => @user.email}}
|
||||
assert_equal(flash[:notice], "Email sent")
|
||||
assert_equal(1, ActionMailer::Base.deliveries.size)
|
||||
end
|
||||
|
||||
context "for a user with a blank email" do
|
||||
should "fail" do
|
||||
post :login_reminder, {:user => {:email => ""}}
|
||||
assert_equal("No matching user record found", flash[:notice])
|
||||
@blank_email_user.reload
|
||||
assert_equal(@blank_email_user.created_at, @blank_email_user.updated_at)
|
||||
assert_equal(0, ActionMailer::Base.deliveries.size)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "reset_password action" do
|
||||
setup do
|
||||
@old_password = @user.password_hash
|
||||
end
|
||||
|
||||
should "reset the user's password and deliver an email to the user" do
|
||||
post :reset_password, {:user => {:email => @user.email, :name => @user.name}}
|
||||
assert_equal("Email sent", flash[:notice])
|
||||
@user.reload
|
||||
assert_not_equal(@old_password, @user.password)
|
||||
assert_equal(1, ActionMailer::Base.deliveries.size)
|
||||
end
|
||||
|
||||
context "for a user with a blank email" do
|
||||
should "fail" do
|
||||
post :reset_password, {:user => {:email => "", :name => @blank_email_user.name}}
|
||||
assert_equal("No matching user record found", flash[:notice])
|
||||
@blank_email_user.reload
|
||||
assert_equal(@blank_email_user.created_at, @blank_email_user.updated_at)
|
||||
assert_equal(0, ActionMailer::Base.deliveries.size)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user