summaryrefslogtreecommitdiff
path: root/help
diff options
context:
space:
mode:
Diffstat (limited to 'help')
-rw-r--r--help/Gemfile2
-rw-r--r--help/app/assets/javascripts/tickets.js2
-rw-r--r--help/app/controllers/tickets_controller.rb11
-rw-r--r--help/app/models/account_extension/tickets.rb13
-rw-r--r--help/app/models/ticket.rb11
-rw-r--r--help/app/views/tickets/_edit_form.html.haml6
-rw-r--r--help/app/views/tickets/_ticket.html.haml2
-rw-r--r--help/app/views/tickets/new.html.haml2
-rw-r--r--help/config/initializers/account_lifecycle.rb3
-rw-r--r--help/test/factories.rb14
-rw-r--r--help/test/functional/tickets_controller_test.rb4
-rw-r--r--help/test/unit/account_extension_test.rb12
-rw-r--r--help/test/unit/ticket_comment_test.rb2
-rw-r--r--help/test/unit/ticket_test.rb48
14 files changed, 85 insertions, 47 deletions
diff --git a/help/Gemfile b/help/Gemfile
index 5e895e9..ad7d29b 100644
--- a/help/Gemfile
+++ b/help/Gemfile
@@ -1,4 +1,4 @@
-source "http://rubygems.org"
+source "https://rubygems.org"
eval(File.read(File.dirname(__FILE__) + '/../common_dependencies.rb'))
eval(File.read(File.dirname(__FILE__) + '/..//ui_dependencies.rb'))
diff --git a/help/app/assets/javascripts/tickets.js b/help/app/assets/javascripts/tickets.js
index bf7965c..18537aa 100644
--- a/help/app/assets/javascripts/tickets.js
+++ b/help/app/assets/javascripts/tickets.js
@@ -1,4 +1,4 @@
//$(document).ready(function () {
// $.fn.editable.defaults.mode = 'inline';
-// $('#title').editable();
+// $('#subject').editable();
//}); \ No newline at end of file
diff --git a/help/app/controllers/tickets_controller.rb b/help/app/controllers/tickets_controller.rb
index a669e19..c193ff4 100644
--- a/help/app/controllers/tickets_controller.rb
+++ b/help/app/controllers/tickets_controller.rb
@@ -62,14 +62,11 @@ class TicketsController < ApplicationController
@ticket.comments.last.private = false unless admin?
end
- if @ticket.changed?
- if @ticket.save
- flash[:notice] = t(:changes_saved)
- redirect_to_tickets
- else
- respond_with @ticket
- end
+ if @ticket.changed? and @ticket.save
+ flash[:notice] = t(:changes_saved)
+ redirect_to_tickets
else
+ flash[:error] = @ticket.errors.full_messages.join(". ") if @ticket.changed?
redirect_to auto_ticket_path(@ticket)
end
end
diff --git a/help/app/models/account_extension/tickets.rb b/help/app/models/account_extension/tickets.rb
new file mode 100644
index 0000000..f898b56
--- /dev/null
+++ b/help/app/models/account_extension/tickets.rb
@@ -0,0 +1,13 @@
+module AccountExtension::Tickets
+ extend ActiveSupport::Concern
+
+ def destroy_with_tickets
+ Ticket.destroy_all_from(self.user)
+ destroy_without_tickets
+ end
+
+ included do
+ alias_method_chain :destroy, :tickets
+ end
+
+end
diff --git a/help/app/models/ticket.rb b/help/app/models/ticket.rb
index 8066d0d..cd22758 100644
--- a/help/app/models/ticket.rb
+++ b/help/app/models/ticket.rb
@@ -12,7 +12,7 @@ class Ticket < CouchRest::Model::Base
property :created_by, String, :protected => true # nil for anonymous tickets, should never be changed
property :regarding_user, String # may be nil or valid username
- property :title, String
+ property :subject, String
property :email, String
property :is_open, TrueClass, :default => true
property :comments, [TicketComment]
@@ -24,6 +24,7 @@ class Ticket < CouchRest::Model::Base
design do
view :by_updated_at
view :by_created_at
+ view :by_created_by
view :by_is_open_and_created_at
view :by_is_open_and_updated_at
@@ -32,7 +33,7 @@ class Ticket < CouchRest::Model::Base
load_views(own_path.join('..', 'designs', 'ticket'))
end
- validates :title, :presence => true
+ validates :subject, :presence => true
validates :email, :allow_blank => true, :format => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/
def self.search(options = {})
@@ -40,6 +41,12 @@ class Ticket < CouchRest::Model::Base
@selection.tickets
end
+ def self.destroy_all_from(user)
+ self.by_created_by.key(user.id).each do |ticket|
+ ticket.destroy
+ end
+ end
+
def is_creator_validated?
!!created_by
end
diff --git a/help/app/views/tickets/_edit_form.html.haml b/help/app/views/tickets/_edit_form.html.haml
index 5252c2e..714f8ff 100644
--- a/help/app/views/tickets/_edit_form.html.haml
+++ b/help/app/views/tickets/_edit_form.html.haml
@@ -1,7 +1,7 @@
:ruby
# created by user link
if @ticket.created_by_user
- created_by = link_to(@ticket.created_by_user.login, user_overview_path(@ticket.created_by_user))
+ created_by = link_to @ticket.created_by_user.login, @ticket.created_by_user
else
created_by = t(:anonymous)
end
@@ -9,7 +9,7 @@
# regarding user link
if admin?
if @ticket.regarding_user_actual_user
- regarding_user_link = link_to @ticket.regarding_user_actual_user.login, user_overview_path(@ticket.regarding_user_actual_user)
+ regarding_user_link = link_to @ticket.regarding_user_actual_user.login, @ticket.regarding_user_actual_user
else
regarding_user_link = "(#{t(:unknown)})"
end
@@ -26,7 +26,7 @@
%span.label.label-success= t(:closed)
%span.label.label-clear= t(:created_by_on, :user => created_by, :time => @ticket.created_at.to_s(:short)).html_safe
%div= t(:subject)
- = f.text_field :title, :class => 'large full-width'
+ = f.text_field :subject, :class => 'large full-width'
.row-fluid
.span4
%div= t(:status)
diff --git a/help/app/views/tickets/_ticket.html.haml b/help/app/views/tickets/_ticket.html.haml
index a064c4e..5bc33c8 100644
--- a/help/app/views/tickets/_ticket.html.haml
+++ b/help/app/views/tickets/_ticket.html.haml
@@ -1,6 +1,6 @@
- url = auto_ticket_path(ticket)
%tr
- %td= link_to ticket.title, url
+ %td= link_to ticket.subject, url
%td= link_to ticket.created_at.to_s(:short), url
%td= link_to ticket.updated_at.to_s(:short), url
%td= ticket.commenters
diff --git a/help/app/views/tickets/new.html.haml b/help/app/views/tickets/new.html.haml
index c0a343d..393e5d6 100644
--- a/help/app/views/tickets/new.html.haml
+++ b/help/app/views/tickets/new.html.haml
@@ -11,7 +11,7 @@
= simple_form_for @ticket, :validate => true, :html => {:class => 'form-horizontal'} do |f|
= hidden_ticket_fields
- = f.input :title, :label => t(:subject)
+ = f.input :subject
- if logged_in?
= f.input :email, input_html: {value: email}
= f.input :regarding_user, input_html: {value: regarding}
diff --git a/help/config/initializers/account_lifecycle.rb b/help/config/initializers/account_lifecycle.rb
new file mode 100644
index 0000000..d9f04c1
--- /dev/null
+++ b/help/config/initializers/account_lifecycle.rb
@@ -0,0 +1,3 @@
+ActiveSupport.on_load(:account) do
+ include AccountExtension::Tickets
+end
diff --git a/help/test/factories.rb b/help/test/factories.rb
index 5b38952..be04f15 100644
--- a/help/test/factories.rb
+++ b/help/test/factories.rb
@@ -1,9 +1,17 @@
FactoryGirl.define do
factory :ticket do
- title { Faker::Lorem.sentence }
- comments_attributes do
- { "0" => { "body" => Faker::Lorem.sentences.join(" ") } }
+ subject { Faker::Lorem.sentence }
+ email { Faker::Internet.email }
+
+ factory :ticket_with_comment do
+ comments_attributes do
+ { "0" => { "body" => Faker::Lorem.sentences.join(" ") } }
+ end
+ end
+
+ factory :ticket_with_creator do
+ created_by { FactoryGirl.create(:user).id }
end
end
diff --git a/help/test/functional/tickets_controller_test.rb b/help/test/functional/tickets_controller_test.rb
index 3747ad0..0f56e6e 100644
--- a/help/test/functional/tickets_controller_test.rb
+++ b/help/test/functional/tickets_controller_test.rb
@@ -53,7 +53,7 @@ class TicketsControllerTest < ActionController::TestCase
end
test "should create unauthenticated ticket" do
- params = {:title => "unauth ticket test title", :comments_attributes => {"0" => {"body" =>"body of test ticket"}}}
+ params = {:subject => "unauth ticket test subject", :comments_attributes => {"0" => {"body" =>"body of test ticket"}}}
assert_difference('Ticket.count') do
post :create, :ticket => params
@@ -70,7 +70,7 @@ class TicketsControllerTest < ActionController::TestCase
test "should create authenticated ticket" do
- params = {:title => "auth ticket test title", :comments_attributes => {"0" => {"body" =>"body of test ticket"}}}
+ params = {:subject => "auth ticket test subject", :comments_attributes => {"0" => {"body" =>"body of test ticket"}}}
login
diff --git a/help/test/unit/account_extension_test.rb b/help/test/unit/account_extension_test.rb
new file mode 100644
index 0000000..aba162c
--- /dev/null
+++ b/help/test/unit/account_extension_test.rb
@@ -0,0 +1,12 @@
+require 'test_helper'
+
+class AccountExtensionTest < ActiveSupport::TestCase
+
+ test "destroying an account triggers ticket destruction" do
+ t = FactoryGirl.create :ticket_with_creator
+ u = t.created_by_user
+ Account.new(u).destroy
+ assert_equal nil, Ticket.find(t.id)
+ end
+
+end
diff --git a/help/test/unit/ticket_comment_test.rb b/help/test/unit/ticket_comment_test.rb
index 44865ed..fe8cc95 100644
--- a/help/test/unit/ticket_comment_test.rb
+++ b/help/test/unit/ticket_comment_test.rb
@@ -36,7 +36,7 @@ class TicketCommentTest < ActiveSupport::TestCase
=end
test "add comments" do
- testticket = Ticket.create :title => "testing"
+ testticket = Ticket.create :subject => "testing"
assert_equal testticket.comments.count, 0
comment = TicketComment.new :body => "my email broke"
#assert comment.valid? #validating or saving necessary for setting posted_at
diff --git a/help/test/unit/ticket_test.rb b/help/test/unit/ticket_test.rb
index ce35e1d..f5e6ea7 100644
--- a/help/test/unit/ticket_test.rb
+++ b/help/test/unit/ticket_test.rb
@@ -1,57 +1,55 @@
require 'test_helper'
class TicketTest < ActiveSupport::TestCase
- #test "the truth" do
- # assert true
- #end
- setup do
- @sample = Ticket.new
+ test "ticket with default attribs is valid" do
+ t = FactoryGirl.build :ticket
+ assert t.valid?
end
- test "validity" do
- t = Ticket.create :title => 'test title', :email => 'blah@blah.com'
+ test "ticket without email is valid" do
+ t = FactoryGirl.build :ticket, email: ""
assert t.valid?
- assert_equal t.title, 'test title'
+ end
+ test "ticket validates email format" do
+ t = FactoryGirl.build :ticket, email: "aswerssfd"
+ assert !t.valid?
+ end
+
+ test "ticket open states" do
+ t = FactoryGirl.build :ticket
assert t.is_open
t.close
assert !t.is_open
t.reopen
assert t.is_open
- #user = LeapWebHelp::User.new(User.valid_attributes_hash)
- #user = LeapWebUsers::User.create
-
- #t.user = user
-
- #t.email = '' #invalid
- #assert !t.valid?
- #t.email = 'blah@blah.com, bb@jjj.org'
- #assert t.valid?
- t.email = 'bdlfjlkasfjklasjf' #invalid
- #p t.email_address
- #p t.email_address.strip =~ RFC822::EmailAddress
- assert !t.valid?
- t.reload.destroy
end
test "creation validated" do
+ @sample = Ticket.new
assert !@sample.is_creator_validated?
#p current_user
@sample.created_by = 22 #current_user
assert @sample.is_creator_validated?
end
+ test "destroy all tickets from a user" do
+ t = FactoryGirl.create :ticket_with_creator
+ u = t.created_by_user
+ Ticket.destroy_all_from(u)
+ assert_equal nil, Ticket.find(t.id)
+ end
=begin
# TODO: do once have current_user stuff in order
test "code if & only if not creator-validated" do
User.current_test = nil
- t1 = Ticket.create :title => 'test title'
+ t1 = Ticket.create :subject => 'test title'
assert_not_nil t1.code
assert_nil t1.created_by
User.current_test = 4
- t2 = Ticket.create :title => 'test title'
+ t2 = Ticket.create :subject => 'test title'
assert_nil t2.code
assert_not_nil t2.created_by
end
@@ -66,7 +64,7 @@ class TicketTest < ActiveSupport::TestCase
# TODO: the by_includes_post_by view is only used for tests. Maybe we should get rid of it and change the test to including ordering?
- testticket = Ticket.create :title => "test retrieving commented tickets"
+ testticket = Ticket.create :subject => "test retrieving commented tickets"
comment = TicketComment.new :body => "my email broke", :posted_by => "123"
assert_equal 0, testticket.comments.count
assert_equal [], Ticket.by_includes_post_by.key('123').all