Sha256: 49b598d8ba94ff136f8bc49f265685d607485e3446d80e5e8b7fa433c94fd400

Contents?: true

Size: 1.85 KB

Versions: 5

Compression:

Stored size: 1.85 KB

Contents

class Zendesk2::Client::UpdateView < Zendesk2::Client::Request
  request_method :put
  request_path { |r| "/views/#{r.view_id}.json"  }
  request_body { |r| { "view" => r.view_params } }

  def self.accepted_attributes
    Zendesk2::Client::Createview.accepted_attributes
  end

  def view_params
    @_view_params ||= Cistern::Hash.slice(params.fetch("view"), *self.class.accepted_attributes)
  end

  def view_id
    params.fetch("view").fetch("id")
  end

  def mock
    body = self.find!(:views, view_id)

    update_params = view_params.dup

    output = params.delete("output") || {}
    columns = (output["columns"] || []).inject([]) { |r,c| r << {"id" => c, "name" => Zendesk2::Client::CreateView.view_columns.fetch(c)} }

    body.merge!("updated_at" => Time.now.iso8601)

    if columns.any?
      body.merge!(
        "execution"        => {
          "columns"       => columns,
          "fields"        => columns,
          "custom_fields" => [],
        }
      )
    end

    body["execution"]["conditions"].merge!(Cistern::Hash.slice(body, "any", "all"))

    group_params = Cistern::Hash.slice(body, "group_by", "group_order").merge(Cistern::Hash.slice(update_params, "group_by", "group_order"))

    body.merge!(group_params).merge!(
      "group" => {
        "id"    => group_params["group_by"],
        "order" => group_params["group_order"],
        "title" => (group_params["group_by"] && group_params["group_by"].to_s.upcase),
      },
    )

    sort_params = Cistern::Hash.slice(body, "sort_by", "sort_order").merge(Cistern::Hash.slice(update_params, "sort_by", "sort_order"))

    body.merge!(sort_params).merge!(
      "sort" => {
        "id"    => sort_params["sort_by"],
        "order" => sort_params["sort_order"],
        "title" => (sort_params["sort_by"] && sort_params["sort_by"].to_s.upcase),
      },
    )

    mock_response("view" => body)
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
zendesk2-1.7.5 lib/zendesk2/client/requests/update_view.rb
zendesk2-1.7.4 lib/zendesk2/client/requests/update_view.rb
zendesk2-1.7.2 lib/zendesk2/client/requests/update_view.rb
zendesk2-1.7.1 lib/zendesk2/client/requests/update_view.rb
zendesk2-1.7.0 lib/zendesk2/client/requests/update_view.rb