diff options
Diffstat (limited to 'help')
40 files changed, 0 insertions, 1367 deletions
| diff --git a/help/Gemfile b/help/Gemfile deleted file mode 100644 index ad7d29b..0000000 --- a/help/Gemfile +++ /dev/null @@ -1,15 +0,0 @@ -source "https://rubygems.org" - -eval(File.read(File.dirname(__FILE__) + '/../common_dependencies.rb')) -eval(File.read(File.dirname(__FILE__) + '/..//ui_dependencies.rb')) - -# We require leap_web_core from here so we can use the path option. -gem "leap_web_core", :path => '../core' - -# Declare your gem's dependencies in leap_web_users.gemspec. -# Bundler will treat runtime dependencies like base dependencies, and -# development dependencies will be added by default to the :development group. -gemspec - -# To use debugger -# gem 'ruby-debug' diff --git a/help/README.md b/help/README.md deleted file mode 100644 index c9573e6..0000000 --- a/help/README.md +++ /dev/null @@ -1 +0,0 @@ -Implements a simple, clean, and easy to use help ticketing system.
\ No newline at end of file diff --git a/help/Rakefile b/help/Rakefile deleted file mode 100644 index 0e73163..0000000 --- a/help/Rakefile +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env rake - -require 'rake/packagetask' -require 'rubygems/package_task' - -begin -  require 'bundler/setup' -rescue LoadError -  puts 'You must `gem install bundler` and `bundle install` to run rake tasks' -end -begin -  require 'rdoc/task' -rescue LoadError -  require 'rdoc/rdoc' -  require 'rake/rdoctask' -  RDoc::Task = Rake::RDocTask -end - -RDoc::Task.new(:rdoc) do |rdoc| -  rdoc.rdoc_dir = 'rdoc' -  rdoc.title    = 'LeapWebHelp' -  rdoc.options << '--line-numbers' -  rdoc.rdoc_files.include('README.rdoc') -  rdoc.rdoc_files.include('lib/**/*.rb') -end - -spec = eval(File.read('leap_web_help.gemspec')) -Gem::PackageTask.new(spec) do |p| -    p.gem_spec = spec -end - -Bundler::GemHelper.install_tasks - -require 'rake/testtask' - -Rake::TestTask.new(:test) do |t| -  t.libs << 'lib' -  t.libs << 'test' -  t.pattern = 'test/**/*_test.rb' -  t.verbose = false -end - - -task :default => :test diff --git a/help/app/assets/javascripts/tickets.js b/help/app/assets/javascripts/tickets.js deleted file mode 100644 index 18537aa..0000000 --- a/help/app/assets/javascripts/tickets.js +++ /dev/null @@ -1,4 +0,0 @@ -//$(document).ready(function () { -//  $.fn.editable.defaults.mode = 'inline'; -//  $('#subject').editable(); -//});
\ No newline at end of file diff --git a/help/app/controllers/tickets_controller.rb b/help/app/controllers/tickets_controller.rb deleted file mode 100644 index d65ee43..0000000 --- a/help/app/controllers/tickets_controller.rb +++ /dev/null @@ -1,153 +0,0 @@ -class TicketsController < ApplicationController -  include AutoTicketsPathHelper - -  respond_to :html, :json -  #has_scope :open, :type => boolean - -  before_filter :require_login, :only => [:index] -  before_filter :fetch_ticket, :only => [:show, :update, :destroy] # don't now have an edit method -  before_filter :fetch_user -  before_filter :set_title - -  def new -    @ticket = Ticket.new -    @ticket.comments.build -  end - -  def create -    @ticket = Ticket.new(params[:ticket]) - -    @ticket.comments.last.posted_by = (logged_in? ? current_user.id : nil) #protecting posted_by isn't working, so this should protect it. -    @ticket.comments.last.private = false unless admin? -    @ticket.created_by = current_user.id if logged_in? -    @ticket.email = current_user.email_address if logged_in? and current_user.email_address - -    if @ticket.save -      flash[:notice] = t(:thing_was_successfully_created, :thing => t(:ticket)) -    end - -    # cannot set this until ticket has been saved, as @ticket.id will not be set -    if !logged_in? and flash[:notice] -      flash[:notice] += " " + t(:access_ticket_text, :full_url => ticket_url(@ticket.id)) -    end -    respond_with(@ticket, :location => auto_ticket_path(@ticket)) -  end - -  def show -    @comment = TicketComment.new -    if !@ticket -      redirect_to auto_tickets_path, :alert => t(:no_such_thing, :thing => t(:ticket)) -      return -    end -  end - -  def update -    if params[:commit] == 'close' -      @ticket.is_open = false -      @ticket.save -      redirect_to_tickets -    elsif params[:commit] == 'open' -      @ticket.is_open = true -      @ticket.save -      redirect_to auto_ticket_path(@ticket) -    else -      @ticket.attributes = cleanup_ticket_params(params[:ticket]) - -      if params[:commit] == 'reply_and_close' -        @ticket.close -      end - -      if @ticket.comments_changed? -        @ticket.comments.last.posted_by = (current_user ? current_user.id : nil) -        @ticket.comments.last.private = false unless admin? -      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 -  end - -  def index -    @all_tickets = Ticket.search(search_options(params)) -    @tickets = @all_tickets.page(params[:page]).per(APP_CONFIG[:pagination_size]) -  end - -  def destroy -    # should we allow non-admins to delete their own tickets? i don't think necessary. -    @ticket.destroy if admin? -    redirect_to auto_tickets_path -  end - -  protected - -  def set_title -    @title = t(:tickets) -  end - -  private - -  # -  # redirects to ticket index, if appropriate. -  # otherwise, just redirects to @ticket -  # -  def redirect_to_tickets -    if logged_in? -      if params[:commit] == t(:reply_and_close) -        redirect_to auto_tickets_path -      else -        redirect_to auto_ticket_path(@ticket) -      end -    else -      # if we are not logged in, there is no index to view -      redirect_to auto_ticket_path(@ticket) -    end -  end - -  # -  # unset comments hash if no new comment was typed -  # -  def cleanup_ticket_params(ticket) -    if ticket && ticket[:comments_attributes] -      if ticket[:comments_attributes].values.first[:body].blank? -        ticket[:comments_attributes] = nil -      end -    end -    return ticket -  end - -  def ticket_access? -    @ticket and (admin? or !@ticket.created_by or (current_user and current_user.id == @ticket.created_by)) -  end - -  def fetch_ticket -    @ticket = Ticket.find(params[:id]) -    if !@ticket and admin? -      redirect_to auto_tickets_path, :alert => t(:no_such_thing, :thing => 'ticket') -      return -    end -    access_denied unless ticket_access? -  end - -  def fetch_user -    if params[:user_id] -      @user = User.find(params[:user_id]) -    end -  end - -  # -  # clean up params for ticket search -  # -  def search_options(params) -    params.merge( -      :admin_status => params[:user_id] ? 'mine' : 'all', -      :user_id      => @user ? @user.id : current_user.id, -      :is_admin     => admin? -    ) -  end - -end diff --git a/help/app/designs/ticket/by_includes_post_by.js b/help/app/designs/ticket/by_includes_post_by.js deleted file mode 100644 index 2eeac89..0000000 --- a/help/app/designs/ticket/by_includes_post_by.js +++ /dev/null @@ -1,13 +0,0 @@ -// TODO: This view is only used in tests--should we keep it? -function(doc) { -  var arr = {} -  if (doc['type'] == 'Ticket' && doc.comments) { -    doc.comments.forEach(function(comment){ -      if (comment.posted_by && !arr[comment.posted_by]) { -        //don't add duplicates -        arr[comment.posted_by] = true; -        emit(comment.posted_by, 1); -      } -    }); -  } -} diff --git a/help/app/designs/ticket/by_includes_post_by_and_created_at.js b/help/app/designs/ticket/by_includes_post_by_and_created_at.js deleted file mode 100644 index 72169b0..0000000 --- a/help/app/designs/ticket/by_includes_post_by_and_created_at.js +++ /dev/null @@ -1,12 +0,0 @@ -function(doc) { -  var arr = {} -  if (doc['type'] == 'Ticket' && doc.comments) { -    doc.comments.forEach(function(comment){ -      if (comment.posted_by && !arr[comment.posted_by]) { -        //don't add duplicates -        arr[comment.posted_by] = true; -        emit([comment.posted_by, doc.created_at], 1); -      } -    }); -  } -} diff --git a/help/app/designs/ticket/by_includes_post_by_and_is_open_and_created_at.js b/help/app/designs/ticket/by_includes_post_by_and_is_open_and_created_at.js deleted file mode 100644 index 33dfe0b..0000000 --- a/help/app/designs/ticket/by_includes_post_by_and_is_open_and_created_at.js +++ /dev/null @@ -1,12 +0,0 @@ -function(doc) { -  var arr = {} -  if (doc['type'] == 'Ticket' && doc.comments) { -    doc.comments.forEach(function(comment){ -      if (comment.posted_by && !arr[comment.posted_by]) { -        //don't add duplicates -        arr[comment.posted_by] = true; -        emit([comment.posted_by, doc.is_open, doc.created_at], 1); -      } -    }); -  } -} diff --git a/help/app/designs/ticket/by_includes_post_by_and_is_open_and_updated_at.js b/help/app/designs/ticket/by_includes_post_by_and_is_open_and_updated_at.js deleted file mode 100644 index 3bd2a74..0000000 --- a/help/app/designs/ticket/by_includes_post_by_and_is_open_and_updated_at.js +++ /dev/null @@ -1,12 +0,0 @@ -function(doc) { -  var arr = {} -  if (doc['type'] == 'Ticket' && doc.comments) { -    doc.comments.forEach(function(comment){ -      if (comment.posted_by && !arr[comment.posted_by]) { -        //don't add duplicates -        arr[comment.posted_by] = true; -        emit([comment.posted_by, doc.is_open, doc.updated_at], 1); -      } -    }); -  } -} diff --git a/help/app/designs/ticket/by_includes_post_by_and_updated_at.js b/help/app/designs/ticket/by_includes_post_by_and_updated_at.js deleted file mode 100644 index 2b4304f..0000000 --- a/help/app/designs/ticket/by_includes_post_by_and_updated_at.js +++ /dev/null @@ -1,12 +0,0 @@ -function(doc) { -  var arr = {} -  if (doc['type'] == 'Ticket' && doc.comments) { -    doc.comments.forEach(function(comment){ -      if (comment.posted_by && !arr[comment.posted_by]) { -        //don't add duplicates -        arr[comment.posted_by] = true; -        emit([comment.posted_by, doc.updated_at], 1); -      } -    }); -  } -} diff --git a/help/app/helpers/auto_tickets_path_helper.rb b/help/app/helpers/auto_tickets_path_helper.rb deleted file mode 100644 index 93f3cb9..0000000 --- a/help/app/helpers/auto_tickets_path_helper.rb +++ /dev/null @@ -1,53 +0,0 @@ -# -# These "auto" forms of the normal ticket path route helpers allow us to do two things automatically: -# -# (1) include the user in the path if appropriate. -# (2) retain the sort params, if appropriate. -# -# Tickets views with a user_id are limited to that user. For admins, they don't need a user_id for any ticket action. -# -# This is available both to the views and the tickets_controller. -# -module AutoTicketsPathHelper - -  protected - -  def auto_tickets_path(options={}) -    return unless options.class == Hash -    options = ticket_view_options.merge options -    if @user -      user_tickets_path(@user, options) -    else -      tickets_path(options) -    end -  end - -  def auto_ticket_path(ticket, options={}) -    options = ticket_view_options.merge options -    if @user -      user_ticket_path(@user, ticket, options) -    else -      ticket_path(ticket, options) -    end -  end - -  def auto_new_ticket_path(options={}) -    return unless options.class == Hash -    options = ticket_view_options.merge options -    if @user -      new_user_ticket_path(@user, options) -    else -      new_ticket_path(options) -    end -  end - -  private - -  def ticket_view_options -    hsh = {} -    hsh[:open_status] = params[:open_status] if params[:open_status] && !params[:open_status].empty? -    hsh[:sort_order]  = params[:sort_order]  if params[:sort_order]  && !params[:sort_order].empty? -    hsh -  end - -end
\ No newline at end of file diff --git a/help/app/helpers/tickets_helper.rb b/help/app/helpers/tickets_helper.rb deleted file mode 100644 index 7af50d6..0000000 --- a/help/app/helpers/tickets_helper.rb +++ /dev/null @@ -1,76 +0,0 @@ -module TicketsHelper -  # -  # FORM HELPERS -  # - -  # -  # hidden fields that should be added to ever ticket form. -  # these are use for proper redirection after successful actions. -  # -  def hidden_ticket_fields -    haml_concat hidden_field_tag('open_status', params[:open_status]) -    haml_concat hidden_field_tag('sort_order', params[:sort_order]) -    haml_concat hidden_field_tag('user_id', params[:user_id]) -    "" -  end - -  # -  # PARAM HELPERS -  # - -  def search_status -    if action?(:index) -      params[:open_status] || 'open' -    else -      nil -    end -  end - -  def search_order -    params[:sort_order] || 'updated_at_desc' -  end - -  # -  # LINK HELPERS -  # - -  def link_to_status(new_status) -    if new_status == "open" -      label = t(:open_tickets) -    elsif new_status == "closed" -      label = t(:closed_tickets) -    elsif new_status == "all" -      label = t(:all_tickets) -    end -    link_to label, auto_tickets_path(:open_status => new_status, :sort_order => search_order) -  end - -  def link_to_order(order_field) -    if search_order.start_with?(order_field) -      # link for currently-filtered field. Link to other direction of this field. -      if search_order.end_with? 'asc' -        direction = 'desc' -        icon_direction = 'up' -      else -        direction = 'asc' -        icon_direction = 'down' -      end -      arrow = content_tag(:i, '', class: 'icon-arrow-'+ icon_direction) -    else -      # for not-currently-filtered field, don't display an arrow, and link to descending direction -      arrow = '' -      direction = 'desc' -    end - -    if order_field == 'updated' -      label = t(:updated) -    elsif order_field == 'created' -      label = t(:created) -    end - -    link_to auto_tickets_path(:sort_order => order_field + '_at_' + direction, :open_status => search_status) do -      arrow + label -    end -  end - -end diff --git a/help/app/models/account_extension/tickets.rb b/help/app/models/account_extension/tickets.rb deleted file mode 100644 index f898b56..0000000 --- a/help/app/models/account_extension/tickets.rb +++ /dev/null @@ -1,13 +0,0 @@ -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 deleted file mode 100644 index cd22758..0000000 --- a/help/app/models/ticket.rb +++ /dev/null @@ -1,105 +0,0 @@ -# -# TODO: thought i should reverse keys for descending, but that didn't work. -# look into whether that should be tweaked, and whether it works okay with -# pagination (seems to now...) -# -# TODO: better validation of email -# -# TODO: don't hardcode strings 'unknown user' and 'unauthenticated user' -# -class Ticket < CouchRest::Model::Base -  use_database "tickets" - -  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 :subject,        String -  property :email,          String -  property :is_open,        TrueClass, :default => true -  property :comments,       [TicketComment] - -  timestamps! - -  before_validation :set_email, :set_regarding_user, :on => :create - -  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 - -    own_path = Pathname.new(File.dirname(__FILE__)) -    load_views(own_path.join('..', 'designs', 'ticket')) -  end - -  validates :subject, :presence => true -  validates :email, :allow_blank => true, :format => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/ - -  def self.search(options = {}) -    @selection = TicketSelection.new(options) -    @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 - -  def set_email -    self.email = nil if self.email == "" -  end - -  def set_regarding_user -    self.regarding_user = nil if self.regarding_user == "" -  end - -  def close -    self.is_open = false -  end - -  def reopen -    self.is_open = true -  end - -  def commenters -    commenters = [] -    self.comments.each do |comment| -      if comment.posted_by -        if user = User.find(comment.posted_by) -          commenters << user.login if user and !commenters.include?(user.login) -        else -          commenters << 'unknown user' if !commenters.include?('unknown user') -        end -      else -        commenters << 'unauthenticated user' if !commenters.include?('unauthenticated user') -      end -    end -    commenters.join(', ') -  end - -  # -  # update comments. User should be set by controller. -  # -  def comments_attributes=(attributes) -    if attributes -      comment = TicketComment.new(attributes.values.first) -      comment.posted_at = Time.now -      comments << comment -    end -  end - -  def created_by_user -    User.find(self.created_by) -  end - -  def regarding_user_actual_user -    User.find_by_login(self.regarding_user) -  end - -end diff --git a/help/app/models/ticket_comment.rb b/help/app/models/ticket_comment.rb deleted file mode 100644 index bed5237..0000000 --- a/help/app/models/ticket_comment.rb +++ /dev/null @@ -1,43 +0,0 @@ -class TicketComment -  include CouchRest::Model::Embeddable - -  #belongs_to :ticket #is this best way to do it? will want to access all of a tickets comments, so maybe this isn't the way? -  property :posted_by, String#, :protected => true #Integer#this should be current_user if that is set, meaning the user is logged in  #cannot have it be protected and set via comments_attributes=. also, if it is protected and we set in the tickets_controller, it gets unset. TODO---is this okay to have it not protected and manually check it? We do not users to be able to set this. -  # if the current user is not set, then we could just say the comment comes from an 'unauthenticated user', which would be somebody with the secret URL -  property :posted_at, Time#, :protected => true -  #property :posted_verified, TrueClass, :protected => true #should be true if current_user is set when the comment is created -  property :body, String -  property :private, TrueClass # private comments are only viewable by admins  #this is checked when set, to make sure it was set by an admin - -  # ? timestamps! -  validates :body, :presence => true -  #before_validation :set_time#, :set_posted_by - -  #design do -  #  view :by_posted_at -  #  view :by_body -  #end - -  def is_comment_validated? -    !!posted_by -  end - -  def posted_by_user -    User.find(posted_by) if posted_by -  end - -=begin -  #TODO. -  #this is resetting all comments associated with the ticket: -  def set_time -    self.posted_at = Time.now -  end -=end - -=begin -  def set_posted_by -    self.posted_by = User.current if User.current -  end -=end - -end diff --git a/help/app/models/ticket_selection.rb b/help/app/models/ticket_selection.rb deleted file mode 100644 index 74d5b78..0000000 --- a/help/app/models/ticket_selection.rb +++ /dev/null @@ -1,71 +0,0 @@ -class TicketSelection - -  # -  # supported options: -  # -  # user_id:      id of the user (uuid string) -  # open_status:  open | closed | all -  # sort_order:   updated_at_desc | updated_at_asc | created_at_desc | created_at_asc -  # admin_status: mine | all -  # is_admin:     true | false -  # -  def initialize(options = {}) -    @user_id      = options[:user_id].gsub /[^a-z0-9]/, '' -    @open_status  = allow options[:open_status],  'open', 'closed', 'all' -    @sort_order   = allow options[:sort_order],   'updated_at_desc', 'updated_at_asc', 'created_at_desc', 'created_at_asc' -    @admin_status = allow options[:admin_status], 'mine', 'all' -    @is_admin     = allow options[:is_admin],     false, true -  end - -  def tickets -    Ticket.send(finder_method).startkey(startkey).endkey(endkey).send(order) -  end - -  protected - -  def allow(source, *allowed) -    if allowed.include?(source) -      source -    else -      allowed.first -    end -  end - -  def finder_method -    method = 'by_' -    method += 'includes_post_by_and_' if only_mine? -    method += 'is_open_and_' if @open_status != 'all' -    method += @sort_order.sub(/_(de|a)sc$/, '') -  end - -  def startkey -    startkeys = [] -    startkeys << @user_id if only_mine? -    startkeys << (@open_status == 'open') if @open_status != 'all' -    startkeys << 0 -    startkeys = startkeys.join if startkeys.length == 1 # want string not array if just one thing in array -    startkeys -  end - -  def endkey -    endtime = Time.now + 2.days # TODO. this obviously isn't ideal -    if self.startkey.is_a?(Array) -      endkeys = self.startkey -      endkeys.pop -      endkeys << endtime -    else -      endtime -    end -  end - -  def order -    # we have defined the ascending method to return the view itself: -    (@sort_order.end_with? 'desc') ? 'descending' : 'ascending' -  end - - -  def only_mine? -    !@is_admin || @admin_status == 'mine' -  end - -end diff --git a/help/app/views/tickets/_comment.html.haml b/help/app/views/tickets/_comment.html.haml deleted file mode 100644 index 778ca13..0000000 --- a/help/app/views/tickets/_comment.html.haml +++ /dev/null @@ -1,20 +0,0 @@ -- if admin? or !comment.private # only show comment if user is admin or comment is not private -  %tr -    %td.user -      %div -        %strong -          - if comment.posted_by_user -            = comment.posted_by_user.login -          - else -            = t(:anonymous) -      %div= comment.posted_at.to_s(:short) -      - if comment.posted_by_user && comment.posted_by_user.is_admin? -        %div -          %span.label.label-inverse -            = t(:admin) -      - if comment.private -        %div -          %span.label.label-important -            = t(:private) -    %td.comment -      = simple_format(comment.body)
\ No newline at end of file diff --git a/help/app/views/tickets/_edit_form.html.haml b/help/app/views/tickets/_edit_form.html.haml deleted file mode 100644 index 714f8ff..0000000 --- a/help/app/views/tickets/_edit_form.html.haml +++ /dev/null @@ -1,48 +0,0 @@ -:ruby -  # created by user link -  if @ticket.created_by_user -    created_by = link_to @ticket.created_by_user.login, @ticket.created_by_user -  else -    created_by = t(:anonymous) -  end - -  # regarding user link -  if admin? -    if @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 -  else -    regarding_user_link = '' -  end - -= form_for @ticket do |f| -  = hidden_ticket_fields -  %p.first -    - if @ticket.is_open? -      %span.label.label-info= t(:open) -    - else -      %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 :subject, :class => 'large full-width' -  .row-fluid -    .span4 -      %div= t(:status) -      = f.select :is_open, [[t(:open), "true"], [t(:closed), "false"]] -    .span4 -      %div= t(:email) -      = f.text_field :email -    .span4 -      %div -        = t(:regarding_account) -        = regarding_user_link -      = f.text_field :regarding_user -  = f.button t(:save), :name => 'commit', :class => 'btn', :type => 'submit', :value => 'save' -  - if @ticket.is_open? -    = f.button t(:close), :name => 'commit', :class => 'btn', :type => 'submit', :value => 'close' -  - else -    = f.button t(:open), :name => 'commit', :class => 'btn', :type => 'submit', :value => 'open' -  - if admin? -    = link_to t(:destroy), auto_ticket_path(@ticket),  :confirm => t(:are_you_sure), :method => :delete, :class => 'btn' diff --git a/help/app/views/tickets/_new_comment_form.html.haml b/help/app/views/tickets/_new_comment_form.html.haml deleted file mode 100644 index 8418e01..0000000 --- a/help/app/views/tickets/_new_comment_form.html.haml +++ /dev/null @@ -1,13 +0,0 @@ --# --# for posting a new comment to an existing ticket. --# -= simple_form_for @ticket, :html => {:class => 'slim'}  do |f| -  = hidden_ticket_fields -  = f.simple_fields_for :comments, @comment, :wrapper => :none, :html => {:class => 'slim'} do |c| -    = c.input :body, :label => false, :as => :text, :input_html => {:class => "full-width", :rows=> 5} -    - if admin? -      = c.input :private, :as => :boolean, :label => false, :inline_label => true -  = f.button :button, t(:post_reply), :name => 'commit', :class => 'btn-primary', :type => 'submit', :value => 'post_reply' -  - if logged_in? && @ticket.is_open -    = f.button :button, t(:reply_and_close), :name => 'commit', :class => 'btn', :type => 'submit', :value => 'reply_and_close' -    = link_to t(:cancel), auto_tickets_path, :class => :btn diff --git a/help/app/views/tickets/_tabs.html.haml b/help/app/views/tickets/_tabs.html.haml deleted file mode 100644 index b7b5d3a..0000000 --- a/help/app/views/tickets/_tabs.html.haml +++ /dev/null @@ -1,23 +0,0 @@ --# --# SORT ORDER TABS --# -- unless action?(:new) -  %ul.nav.nav-pills.pull-right.slim -    %li{:class=> ("active" if search_order.start_with? 'created_at')} -      = link_to_order('created') -    %li{:class=> ("active" if search_order.start_with? 'updated_at')} -      = link_to_order('updated') - --# --# STATUS FILTER TABS --# -%ul.nav.nav-tabs -  - if logged_in? -    %li{:class => ("active" if search_status == 'open')} -      = link_to_status 'open' -    %li{:class => ("active" if search_status == 'closed')} -      = link_to_status 'closed' -    %li{:class => ("active" if search_status == 'all')} -      = link_to_status 'all' -  %li{:class => ("active" if action?(:new))} -    = link_to icon(:plus, :black) + t(:new_ticket), auto_new_ticket_path diff --git a/help/app/views/tickets/_ticket.html.haml b/help/app/views/tickets/_ticket.html.haml deleted file mode 100644 index 5bc33c8..0000000 --- a/help/app/views/tickets/_ticket.html.haml +++ /dev/null @@ -1,6 +0,0 @@ -- url = auto_ticket_path(ticket) -%tr -  %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/index.html.haml b/help/app/views/tickets/index.html.haml deleted file mode 100644 index c02a326..0000000 --- a/help/app/views/tickets/index.html.haml +++ /dev/null @@ -1,19 +0,0 @@ -- @show_navigation = !params[:user_id].nil? - -= render 'tickets/tabs' - -%table.table.table-striped.table-bordered -  %thead -    %tr -      %th= t(:subject) -      %th= t(:created) -      %th= t(:updated) -      %th= t(:voices) -  %tbody -    - if @tickets.any? -      = render @tickets.all -    - else -      %tr -        %td{:colspan=>4}= t(:none) - -= paginate @tickets diff --git a/help/app/views/tickets/new.html.haml b/help/app/views/tickets/new.html.haml deleted file mode 100644 index 8f217a5..0000000 --- a/help/app/views/tickets/new.html.haml +++ /dev/null @@ -1,30 +0,0 @@ -- @show_navigation = !params[:user_id].nil? - -= render 'tickets/tabs' - -- if admin? && @user -  - email = @user.email_address -  - regarding = @user.login -- elsif logged_in? -  - email = current_user.email_address -  - regarding = current_user.login - -= simple_form_for @ticket, :validate => true, :html => {:class => 'form-horizontal'} do |f| -  = hidden_ticket_fields -  = f.input :subject -  - if logged_in? -    = f.input :email, input_html: {value: email} -    = f.input :regarding_user, input_html: {value: regarding} -  - else -    = f.input :email -    = f.input :regarding_user -  = f.simple_fields_for :comments, @comment do |c| -    = c.input :body, :label => t(:description), :as => :text, :input_html => {:class => "full-width", :rows=> 5} -    - if admin? -      = c.input :private, :as => :boolean, :label => false, :inline_label => true -  .form-actions -    = f.button :submit, :class => 'btn-primary', :value => t(:create_thing, :thing => t(:ticket)) -    - if logged_in? -      = link_to t(:cancel), auto_tickets_path, :class => :btn -    - else -      = link_to t(:cancel), home_path, :class => 'btn'
\ No newline at end of file diff --git a/help/app/views/tickets/show.html.haml b/help/app/views/tickets/show.html.haml deleted file mode 100644 index bfdb773..0000000 --- a/help/app/views/tickets/show.html.haml +++ /dev/null @@ -1,12 +0,0 @@ -- @show_navigation = !params[:user_id].nil? - -.ticket -  = render 'tickets/edit_form' -  %table.table.table-striped.table-bordered -    %tbody -      = render :partial => 'tickets/comment', :collection => @ticket.comments -      %tr -        %td.user -          = logged_in? ? current_user.login : t(:anonymous) -        %td.comment -          = render 'tickets/new_comment_form'
\ No newline at end of file diff --git a/help/config/initializers/account_lifecycle.rb b/help/config/initializers/account_lifecycle.rb deleted file mode 100644 index d9f04c1..0000000 --- a/help/config/initializers/account_lifecycle.rb +++ /dev/null @@ -1,3 +0,0 @@ -ActiveSupport.on_load(:account) do -  include AccountExtension::Tickets -end diff --git a/help/config/locales/en.yml b/help/config/locales/en.yml deleted file mode 100644 index 342adea..0000000 --- a/help/config/locales/en.yml +++ /dev/null @@ -1,22 +0,0 @@ -en: -  access_ticket_text: > -    You can later access this ticket at the URL %{full_url}. You might want to bookmark this page to find it again. -    Anybody with this URL will be able to access this ticket, so if you are on a shared computer you might want to -    remove it from the browser history. -  support_tickets: "Support Tickets" -  all_tickets: "All Tickets" -  my_tickets: "My Tickets" -  open_tickets: "Open Tickets" -  closed_tickets: "Closed Tickets" -  new_ticket: "New Ticket" -  tickets: "Tickets" -  subject: "Subject" -  destroy: "Destroy" -  open: "Open" -  closed: "Closed" -  close: "Close" -  post_reply: "Post Reply" -  reply_and_close: "Reply and Close" -  description: "Description" -  ticket: "Ticket" -  regarding_account: "Regarding Account"
\ No newline at end of file diff --git a/help/config/routes.rb b/help/config/routes.rb deleted file mode 100644 index 23e0c11..0000000 --- a/help/config/routes.rb +++ /dev/null @@ -1,8 +0,0 @@ -Rails.application.routes.draw do -  scope "(:locale)", :locale => MATCH_LOCALE do -    resources :tickets, :except => :edit -    resources :users do -      resources :tickets, :except => :edit -    end -  end -end diff --git a/help/leap_web_help.gemspec b/help/leap_web_help.gemspec deleted file mode 100644 index 4914694..0000000 --- a/help/leap_web_help.gemspec +++ /dev/null @@ -1,19 +0,0 @@ -$:.push File.expand_path("../lib", __FILE__) - -require File.expand_path('../../lib/leap_web/version.rb', __FILE__) - -# Describe your gem and declare its dependencies: -Gem::Specification.new do |s| -  s.name        = "leap_web_help" -  s.version     = LeapWeb::VERSION -  s.authors     = ["Jessib"] -  s.email       = ["jessib@leap.se"] -  s.homepage    = "http://www.leap.se" -  s.summary     = "Help Desk for LeapWeb" -  s.description = "Managing Tickets for a Leap provider" - -  s.files = Dir["{app,config,db,lib}/**/*"] + ["Rakefile", "README.md"] -  s.test_files = Dir["test/**/*"] - -  s.add_dependency "leap_web_core", LeapWeb::VERSION -end diff --git a/help/lib/leap_web_help.rb b/help/lib/leap_web_help.rb deleted file mode 100644 index f5b04aa..0000000 --- a/help/lib/leap_web_help.rb +++ /dev/null @@ -1,4 +0,0 @@ -require "leap_web_help/engine" - -module LeapWebHelp -end diff --git a/help/lib/leap_web_help/engine.rb b/help/lib/leap_web_help/engine.rb deleted file mode 100644 index 4146dfc..0000000 --- a/help/lib/leap_web_help/engine.rb +++ /dev/null @@ -1,8 +0,0 @@ -# thou shall require all your dependencies in an engine. -require "leap_web_core" -require "leap_web_core/ui_dependencies" - -module LeapWebHelp -  class Engine < ::Rails::Engine -  end -end diff --git a/help/lib/tasks/leap_web_help_tasks.rake b/help/lib/tasks/leap_web_help_tasks.rake deleted file mode 100644 index 1f38982..0000000 --- a/help/lib/tasks/leap_web_help_tasks.rake +++ /dev/null @@ -1,4 +0,0 @@ -# desc "Explaining what the task does" -# task :leap_web_help do -#   # Task goes here -# end diff --git a/help/script/rails b/help/script/rails deleted file mode 100755 index 5676ab9..0000000 --- a/help/script/rails +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env ruby -# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application. - -ENGINE_ROOT = File.expand_path('../..', __FILE__) -ENGINE_PATH = File.expand_path('../../lib/leap_web_help/engine', __FILE__) - -require 'rails/all' -require 'rails/engine/commands' diff --git a/help/test/factories.rb b/help/test/factories.rb deleted file mode 100644 index be04f15..0000000 --- a/help/test/factories.rb +++ /dev/null @@ -1,18 +0,0 @@ -FactoryGirl.define do - -  factory :ticket do -    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 - -end diff --git a/help/test/functional/tickets_controller_test.rb b/help/test/functional/tickets_controller_test.rb deleted file mode 100644 index 416fb73..0000000 --- a/help/test/functional/tickets_controller_test.rb +++ /dev/null @@ -1,273 +0,0 @@ -require 'test_helper' - -class TicketsControllerTest < ActionController::TestCase - -  teardown do -    # destroy all tickets that were created during the test -    Ticket.all.each{|t| t.destroy} -  end - -  test "should get index if logged in" do -    login -    get :index -    assert_response :success -    assert_not_nil assigns(:tickets) -  end - -  test "no index if not logged in" do -    get :index -    assert_response :redirect -    assert_nil assigns(:tickets) -  end - -  test "should get new" do -    get :new -    assert_equal Ticket, assigns(:ticket).class -    assert_response :success -  end - -  test "unauthenticated tickets are visible" do -    ticket = find_record :ticket, :created_by => nil -    get :show, :id => ticket.id -    assert_response :success -  end - -  test "user tickets are not visible without login" do -    user = find_record :user -    ticket = find_record :ticket, :created_by => user.id -    get :show, :id => ticket.id -    assert_response :redirect -    assert_redirected_to login_url -  end - -  test "user tickets are visible to creator" do -    user = find_record :user -    ticket = find_record :ticket, :created_by => user.id -    login user -    get :show, :id => ticket.id -    assert_response :success -  end - -  test "other users tickets are not visible" do -    other_user = find_record :user -    ticket = find_record :ticket, :created_by => other_user.id -    login -    get :show, :id => ticket.id -    assert_response :redirect -    assert_redirected_to home_url -  end - -  test "should create unauthenticated ticket" do -    params = {:subject => "unauth ticket test subject", :comments_attributes => {"0" => {"body" =>"body of test ticket"}}} - -    assert_difference('Ticket.count') do -      post :create, :ticket => params -    end - -    assert_response :redirect -    assert_nil assigns(:ticket).created_by - -    assert_equal 1, assigns(:ticket).comments.count -    assert_nil assigns(:ticket).comments.first.posted_by - -  end - -  test "should create authenticated ticket" do - -    params = {:subject => "auth ticket test subject", :comments_attributes => {"0" => {"body" =>"body of test ticket"}}} - -    login - -    assert_difference('Ticket.count') do -      post :create, :ticket => params -    end - -    assert_response :redirect - -    assert_not_nil assigns(:ticket).created_by -    assert_equal assigns(:ticket).created_by, @current_user.id -    assert_equal assigns(:ticket).email, @current_user.email_address - -    assert_equal 1, assigns(:ticket).comments.count -    assert_not_nil assigns(:ticket).comments.first.posted_by -    assert_equal assigns(:ticket).comments.first.posted_by, @current_user.id -  end - -  test "add comment to unauthenticated ticket" do -    ticket = FactoryGirl.create :ticket, :created_by => nil - -    assert_difference('Ticket.find(ticket.id).comments.count') do -      put :update, :id => ticket.id, -        :ticket => {:comments_attributes => {"0" => {"body" =>"NEWER comment"}} } -    end - -    assert_equal ticket, assigns(:ticket) # still same ticket, with different comments -    assert_not_equal ticket.comments, assigns(:ticket).comments # ticket == assigns(:ticket), but they have different comments (which we want) - -  end - - -  test "add comment to own authenticated ticket" do - -    login -    ticket = FactoryGirl.create :ticket, :created_by => @current_user.id - -    #they should be able to comment if it is their ticket: -    assert_difference('Ticket.find(ticket.id).comments.count') do -      put :update, :id => ticket.id, -        :ticket => {:comments_attributes => {"0" => {"body" =>"NEWER comment"}} } -    end -    assert_not_equal ticket.comments, assigns(:ticket).comments -    assert_not_nil assigns(:ticket).comments.last.posted_by -    assert_equal assigns(:ticket).comments.last.posted_by, @current_user.id - -  end - - -  test "cannot comment if it is not your ticket" do - -    other_user = find_record :user -    login :is_admin? => false, :email => nil -    ticket = FactoryGirl.create :ticket, :created_by => other_user.id -    # they should *not* be able to comment if it is not their ticket -    put :update, :id => ticket.id, :ticket => {:comments_attributes => {"0" => {"body" =>"not allowed comment"}} } -    assert_response :redirect -    assert_access_denied - -    assert_equal ticket.comments.map(&:body), assigns(:ticket).comments.map(&:body) - -  end - - -  test "admin add comment to authenticated ticket" do - -    other_user = find_record :user -    login :is_admin? => true - -    ticket = FactoryGirl.create :ticket, :created_by => other_user.id - -    #admin should be able to comment: -    assert_difference('Ticket.find(ticket.id).comments.count') do -      put :update, :id => ticket.id, -        :ticket => {:comments_attributes => {"0" => {"body" =>"NEWER comment"}} } -    end -    assert_not_equal ticket.comments, assigns(:ticket).comments -    assert_not_nil assigns(:ticket).comments.last.posted_by -    assert_equal assigns(:ticket).comments.last.posted_by, @current_user.id -  end - -  test "tickets by admin" do -      other_user = find_record :user -      ticket = FactoryGirl.create :ticket, :created_by => other_user.id - -      login :is_admin? => true - -      get :index, {:admin_status => "all", :open_status => "open"} -      assert assigns(:all_tickets).count > 0 - -      # if we close one ticket, the admin should have 1 less open ticket -      assert_difference('assigns[:all_tickets].count', -1) do -        assigns(:tickets).first.close -        assigns(:tickets).first.save -        get :index, {:admin_status => "all", :open_status => "open"} -      end -  end - - -  test "admin_status mine vs all" do -    testticket = FactoryGirl.create :ticket -    user = find_record :user -    login :is_admin? => true, :email => nil - -    get :index, {:open_status => "open"} -    assert assigns(:all_tickets).include?(testticket) -    get :index, {:user_id => user.id, :open_status => "open"} -    assert !assigns(:all_tickets).include?(testticket) -  end - -  test "commenting on a ticket adds to tickets that are mine" do -    testticket = FactoryGirl.create :ticket -    user = find_record :admin_user -    login user -    get :index, {:user_id => user.id, :open_status => "open"} -    assert_difference('assigns[:all_tickets].count') do -      put :update, :id => testticket.id, :ticket => {:comments_attributes => {"0" => {"body" =>"NEWER comment"}}} -      get :index, {:user_id => user.id, :open_status => "open"} -    end - -    assert assigns(:all_tickets).include?(assigns(:ticket)) -    assert_not_nil assigns(:ticket).comments.last.posted_by -    assert_equal assigns(:ticket).comments.last.posted_by, @current_user.id -  end - -  test "admin ticket ordering" do -    tickets = FactoryGirl.create_list :ticket, 2 - -    login :is_admin? => true, :email => nil -    get :index, {:admin_status => "all", :open_status => "open", :sort_order => 'created_at_desc'} - -    # this will consider all tickets, not just those on first page -    first_tick = assigns(:all_tickets).all.first -    last_tick = assigns(:all_tickets).all.last -    assert first_tick.created_at > last_tick.created_at - -    # and now reverse order: -    get :index, {:admin_status => "all", :open_status => "open", :sort_order => 'created_at_asc'} - -    assert_equal first_tick, assigns(:all_tickets).last -    assert_equal last_tick, assigns(:all_tickets).first - -    assert_not_equal first_tick, assigns(:all_tickets).first -    assert_not_equal last_tick, assigns(:all_tickets).last - -  end - -  test "tickets for regular user" do -    login -    ticket = FactoryGirl.create :ticket -    other_ticket = FactoryGirl.create :ticket - -    put :update, :id => ticket.id, -      :ticket => {:comments_attributes => {"0" => {"body" =>"NEWER comment"}} } -    assert_not_nil assigns(:ticket).comments.last.posted_by -    assert_equal assigns(:ticket).comments.last.posted_by, @current_user.id - -    get :index, {:open_status => "open"} -    assert assigns(:all_tickets).count > 0 -    assert assigns(:all_tickets).include?(ticket) -    assert !assigns(:all_tickets).include?(other_ticket) - -    # user should have one more ticket if a new tick gets a comment by this user -    assert_difference('assigns[:all_tickets].count') do -      put :update, :id => other_ticket.id, :ticket => {:comments_attributes => {"0" => {"body" =>"NEWER comment"}}} -      get :index, {:open_status => "open"} -    end -    assert assigns(:all_tickets).include?(other_ticket) - -   # if we close one ticket, the user should have 1 less open ticket -    assert_difference('assigns[:all_tickets].count', -1) do -      other_ticket.reload -      other_ticket.close -      other_ticket.save -      get :index, {:open_status => "open"} -    end - -    number_open_tickets = assigns(:all_tickets).count - -    # look at closed tickets: -    get :index, {:open_status => "closed"} -    assert !assigns(:all_tickets).include?(ticket) -    assert assigns(:all_tickets).include?(other_ticket) -    number_closed_tickets = assigns(:all_tickets).count - -    # all tickets should equal closed + open -    get :index, {:open_status => "all"} -    assert assigns(:all_tickets).include?(ticket) -    assert assigns(:all_tickets).include?(other_ticket) -    assert_equal assigns(:all_tickets).count, number_closed_tickets + number_open_tickets - - -  end - -end - diff --git a/help/test/integration/navigation_test.rb b/help/test/integration/navigation_test.rb deleted file mode 100644 index eec8c0e..0000000 --- a/help/test/integration/navigation_test.rb +++ /dev/null @@ -1,9 +0,0 @@ -require 'test_helper' - -class NavigationTest < ActionDispatch::IntegrationTest - -  # test "the truth" do -  #   assert true -  # end -end - diff --git a/help/test/leap_web_help_test.rb b/help/test/leap_web_help_test.rb deleted file mode 100644 index d74c087..0000000 --- a/help/test/leap_web_help_test.rb +++ /dev/null @@ -1,7 +0,0 @@ -require 'test_helper' - -class LeapWebHelpTest < ActiveSupport::TestCase -  test "truth" do -    assert_kind_of Module, LeapWebHelp -  end -end diff --git a/help/test/test_helper.rb b/help/test/test_helper.rb deleted file mode 100644 index 3381f44..0000000 --- a/help/test/test_helper.rb +++ /dev/null @@ -1,15 +0,0 @@ -# Configure Rails Environment -ENV["RAILS_ENV"] = "test" - -require File.expand_path('../../../test/dummy/config/environment', __FILE__) -require "rails/test_help" - -Rails.backtrace_cleaner.remove_silencers! - -# Load support files -Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f } - -# Load fixtures from the engine -if ActiveSupport::TestCase.method_defined?(:fixture_path=) -  ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__) -end diff --git a/help/test/unit/account_extension_test.rb b/help/test/unit/account_extension_test.rb deleted file mode 100644 index aba162c..0000000 --- a/help/test/unit/account_extension_test.rb +++ /dev/null @@ -1,12 +0,0 @@ -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 deleted file mode 100644 index fe8cc95..0000000 --- a/help/test/unit/ticket_comment_test.rb +++ /dev/null @@ -1,59 +0,0 @@ -require 'test_helper' - -class TicketCommentTest < ActiveSupport::TestCase -  # test "the truth" do -  #   assert true -  # end - -=begin -  setup do -    @sample_ticket = Ticket.create :title => 'test ticket' -    @sample_ticket.save -  end -=end - -  test "create" do - -    comment2 = TicketComment.new :body => "help my email is broken!" -    assert comment2.valid? -    #assert_not_nil comment2.posted_at #? -    #assert_nil comment2.posted_by #if not logged in #TODO - -    #comment.ticket = testticket #Ticket.find_by_title("testing") -    #assert_equal testticket.title, comment.ticket.title - -    #tc.ticket = Ticket.find_by_title("test title") -    #tc.ticket.title -  end - -=begin -  test "create authenticated comment" do -    User.current = 4 -    comment2 = TicketComment.new :body => "help my email is broken!" -    comment2.valid? #save # should not save comment -    assert_not_nil comment2.posted_by -  end -=end - -  test "add comments" do -    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 -    #assert_not_nil comment.posted_at - -    testticket.comments << comment -    assert_equal testticket.comments.count, 1 -    sleep(1) # so first comment has earlier posted_at time -    comment2 = TicketComment.new :body => "my email broke" -    testticket.comments << comment2 #this should validate comment2 -    testticket.valid? -    assert_equal testticket.comments.count, 2 -    testticket.reload.destroy -    # where should posted_at be set? -    #assert_not_nil comment.posted_at -    #assert_not_nil testticket.comments.last.posted_at -    #assert testticket.comments.first.posted_at < testticket.comments.last.posted_at -  end - -end diff --git a/help/test/unit/ticket_test.rb b/help/test/unit/ticket_test.rb deleted file mode 100644 index f5e6ea7..0000000 --- a/help/test/unit/ticket_test.rb +++ /dev/null @@ -1,88 +0,0 @@ -require 'test_helper' - -class TicketTest < ActiveSupport::TestCase - -  test "ticket with default attribs is valid" do -    t = FactoryGirl.build :ticket -    assert t.valid? -  end - -  test "ticket without email is valid" do -    t = FactoryGirl.build :ticket, email: "" -    assert t.valid? -  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 -  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 :subject => 'test title' -    assert_not_nil t1.code -    assert_nil t1.created_by - -    User.current_test = 4 -    t2 = Ticket.create :subject => 'test title' -    assert_nil t2.code -    assert_not_nil t2.created_by -  end -=end - - -  test "find tickets user commented on" do - -    # clear old tickets just in case -    # this will cause RestClient::ResourceNotFound errors if there are multiple copies of the same ticket returned -    Ticket.by_includes_post_by.key('123').each {|t| t.destroy} -    # 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 :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 - -    testticket.comments << comment -    testticket.save -    assert_equal 1, testticket.reload.comments.count -    assert_equal [testticket], Ticket.by_includes_post_by.key('123').all - -    comment = TicketComment.new :body => "another comment", :posted_by => "123" -    testticket.comments << comment -    testticket.save - -    # this will ensure that the ticket is only included once, even though the user has commented on the ticket twice: -    assert_equal [testticket], Ticket.by_includes_post_by.key('123').all - -    testticket.destroy -    assert_equal [], Ticket.by_includes_post_by.key('123').all; -  end - -end | 
