lib/zendesk2/create_view.rb in zendesk2-1.9.0 vs lib/zendesk2/create_view.rb in zendesk2-1.10.0
- old
+ new
@@ -1,98 +1,98 @@
+# frozen_string_literal: true
class Zendesk2::CreateView
include Zendesk2::Request
request_method :post
- request_path { |_| "/views.json" }
- request_body { |r| { "view" => r.view_params } }
+ request_path { |_| '/views.json' }
+ request_body { |r| { 'view' => r.view_params } }
def self.accepted_attributes
- %w[title all any active output restriction]
+ %w(title all any active output restriction)
end
def self.view_columns
@_view_columns ||= {
- "assigned" => "Assigned date",
- "assignee" => "Assignee",
- "brand" => "Brand",
- "created" => "Request date",
- "description" => "Subject",
- "due_date" => "Due Date",
- "group" => "Group",
- "locale_id" => "Requester language",
- "nice_id" => "ID",
- "organization" => "Organization",
- "priority" => "Priority",
- "requester" => "Requester",
- "satisfaction_score" => "Satisfaction",
- "score" => "Score",
- "solved" => "Solved date",
- "status" => "Status",
- "submitter" => "Submitter",
- "ticket_form" => "Ticket form",
- "type" => "Ticket type",
- "updated" => "Latest update",
- "updated_assignee" => "Latest update by assignee",
- "updated_by_type" => "Latest updater type (agent/end-user)",
- "updated_requester" => "Latest update by requester",
+ 'assigned' => 'Assigned date',
+ 'assignee' => 'Assignee',
+ 'brand' => 'Brand',
+ 'created' => 'Request date',
+ 'description' => 'Subject',
+ 'due_date' => 'Due Date',
+ 'group' => 'Group',
+ 'locale_id' => 'Requester language',
+ 'nice_id' => 'ID',
+ 'organization' => 'Organization',
+ 'priority' => 'Priority',
+ 'requester' => 'Requester',
+ 'satisfaction_score' => 'Satisfaction',
+ 'score' => 'Score',
+ 'solved' => 'Solved date',
+ 'status' => 'Status',
+ 'submitter' => 'Submitter',
+ 'ticket_form' => 'Ticket form',
+ 'type' => 'Ticket type',
+ 'updated' => 'Latest update',
+ 'updated_assignee' => 'Latest update by assignee',
+ 'updated_by_type' => 'Latest updater type (agent/end-user)',
+ 'updated_requester' => 'Latest update by requester',
}.freeze
end
def view_params
- @_view_params ||= Cistern::Hash.slice(params.fetch("view"), *self.class.accepted_attributes)
+ Cistern::Hash.slice(params.fetch('view'), *self.class.accepted_attributes)
end
- # {:status=>422, :headers=>{"server"=>"nginx", "date"=>"Fri, 10 Jul 2015 18:58:50 GMT", "content-type"=>"application/json; charset=UTF-8", "content-length"=>"262", "connection"=>"close", "status"=>"422 Unprocessable Entity", "x-zendesk-api-version"=>"v2", "x-frame-options"=>"SAMEORIGIN", "strict-transport-security"=>"max-age=31536000;", "x-ua-compatible"=>"IE=Edge,chrome=1", "cache-control"=>"no-cache", "x-zendesk-origin-server"=>"app5.pod5.iad1.zdsys.com", "x-request-id"=>"8dec47a7-f80d-4823-c8e2-b8ca3a6b1aa9", "x-runtime"=>"0.106400", "x-rack-cache"=>"invalidate, pass", "x-zendesk-request-id"=>"6efea4cc3c46093df8b1"}, :body=>{"error"=>"RecordInvalid", "description"=>"Record validation errors", "details"=>{"base"=>[{"description"=>"View must test for at least <strong>one</strong> of the following ticket properties in the ALL conditions section: Status, Type, Group, Assignee, Requester."}]}}}
- # {:status=>400, :headers=>{"server"=>"nginx", "date"=>"Fri, 10 Jul 2015 18:58:39 GMT", "content-type"=>"application/json; charset=UTF-8", "content-length"=>"142", "connection"=>"close", "status"=>"400 Bad Request", "x-zendesk-api-version"=>"v2", "strict-transport-security"=>"max-age=31536000;", "x-ua-compatible"=>"IE=Edge,chrome=1", "cache-control"=>"no-cache", "x-zendesk-origin-server"=>"app5.pod5.iad1.zdsys.com", "x-request-id"=>"55216728-1c4b-49ce-c988-b8ca3a6b1a09", "x-runtime"=>"0.077761", "x-rack-cache"=>"invalidate, pass", "x-zendesk-request-id"=>"a49e204bdb7ceb6d22b2"}, :body=>{"error"=>{"title"=>"Invalid attribute", "message"=>"You passed an invalid value for the value attribute. must be a string"}}}
- # {:status=>422, :headers=>{"server"=>"nginx", "date"=>"Fri, 10 Jul 2015 18:57:38 GMT", "content-type"=>"application/json; charset=UTF-8", "content-length"=>"326", "connection"=>"close", "status"=>"422 Unprocessable Entity", "x-zendesk-api-version"=>"v2", "x-frame-options"=>"SAMEORIGIN", "strict-transport-security"=>"max-age=31536000;", "x-ua-compatible"=>"IE=Edge,chrome=1", "cache-control"=>"no-cache", "x-zendesk-origin-server"=>"app19.pod5.iad1.zdsys.com", "x-request-id"=>"577927e1-1a98-4642-c636-b8ca3a6bdb18", "x-runtime"=>"0.114688", "x-rack-cache"=>"invalidate, pass", "x-zendesk-request-id"=>"6f646a8ab4e30717d593"}, :body=>{"error"=>"RecordInvalid", "description"=>"Record validation errors", "details"=>{"base"=>[{"description"=>"Organization 1 was deleted and cannot be used"}, {"description"=>"View must test for at least <strong>one</strong> of the following ticket properties in the ALL conditions section: Status, Type, Group, Assignee, Requester."}]}}}
def mock
- create_params = view_params.dup
+ create_params = view_params
- if create_params["title"].nil? || create_params["title"] == ""
- error!(:invalid, :details => {"base" => [{"title" => "Title: cannot be blank"}]})
+ if Zendesk2.blank?(create_params['title'])
+ error!(:invalid, details: { 'base' => [{ 'title' => 'Title: cannot be blank' }] })
end
- if Array(create_params["any"]).empty? && Array(create_params["all"]).empty?
- error!(:invalid, :details => {"base" => ["Invalid conditions: You must select at least one condition"]})
+ if Array(create_params['any']).empty? && Array(create_params['all']).empty?
+ error!(:invalid, details: { 'base' => ['Invalid conditions: You must select at least one condition'] })
end
identity = cistern.serial_id
- output = view_params.delete("output") || {}
- columns = (output["columns"] || []).inject([]) { |r,c| r << {"id" => c, "name" => self.class.view_columns.fetch(c)} }
+ output = view_params.delete('output') || {}
+ columns = (output['columns'] || []).inject([]) do |a, e|
+ a << { 'id' => e, 'name' => self.class.view_columns.fetch(e) }
+ end
record = {
- "id" => identity,
- "url" => url_for("/views/#{identity}.json"),
- "created_at" => Time.now.iso8601,
- "updated_at" => Time.now.iso8601,
- "active" => true,
- "execution" => {
- "columns" => columns,
- "fields" => columns,
- "custom_fields" => [],
- "group_by" => create_params["group_by"],
- "group_order" => create_params["group_order"],
- "sort_by" => create_params["sort_by"],
- "sort_order" => create_params["sort_order"],
- "sort" => {
- "id" => create_params["sort_by"],
- "order" => create_params["sort_order"],
- "title" => (create_params["sort_by"] && create_params["sort_by"].to_s.upcase),
+ 'id' => identity,
+ 'url' => url_for("/views/#{identity}.json"),
+ 'created_at' => Time.now.iso8601,
+ 'updated_at' => Time.now.iso8601,
+ 'active' => true,
+ 'execution' => {
+ 'columns' => columns,
+ 'fields' => columns,
+ 'custom_fields' => [],
+ 'group_by' => create_params['group_by'],
+ 'group_order' => create_params['group_order'],
+ 'sort_by' => create_params['sort_by'],
+ 'sort_order' => create_params['sort_order'],
+ 'sort' => {
+ 'id' => create_params['sort_by'],
+ 'order' => create_params['sort_order'],
+ 'title' => (create_params['sort_by'] && create_params['sort_by'].to_s.upcase),
},
- "group" => {
- "id" => create_params["group_by"],
- "order" => create_params["group_order"],
- "title" => (create_params["group_by"] && create_params["group_by"].to_s.upcase),
+ 'group' => {
+ 'id' => create_params['group_by'],
+ 'order' => create_params['group_order'],
+ 'title' => (create_params['group_by'] && create_params['group_by'].to_s.upcase),
},
},
- "conditions" => {
- "any" => Array(create_params["any"]),
- "all" => Array(create_params["all"]),
+ 'conditions' => {
+ 'any' => Array(create_params['any']),
+ 'all' => Array(create_params['all']),
},
}.merge(create_params)
cistern.data[:views][identity] = record
- mock_response("view" => record)
+ mock_response('view' => record)
end
end