class QTest::REST::QueryBuilder
Constants
- RESOURCES
Public Class Methods
new(*opts)
click to toggle source
# File lib/qtest/rest/query_builder.rb, line 17 def initialize(*opts) RESOURCES.each do |resource| define_resource(resource) define_resources(resource) end @options = opts @path = [] @body = {} @query = {} @headers = {} @parent = {} end
Public Instance Methods
build()
click to toggle source
# File lib/qtest/rest/query_builder.rb, line 90 def build unless @options.include?(:without_api_path) @path = [QTest::REST::API::BASE_PATH, @path].flatten end @query.merge!(@parent) sanitize_params! sanitize_body! encode_body! { path: @path.join('/'), query: @query, headers: @headers, body: @body } end
data(params = {})
click to toggle source
# File lib/qtest/rest/query_builder.rb, line 65 def data(params = {}) @body.merge!(params) self end
Also aliased as: body
determine_parent!(opts = {})
click to toggle source
# File lib/qtest/rest/query_builder.rb, line 78 def determine_parent!(opts = {}) if opts[:release] parent(release: opts[:release]) elsif opts[:test_suite] parent(test_suite: opts[:test_suite]) elsif opts[:test_cycle] parent(test_cycle: opts[:test_cycle]) end self end
header(key, value)
click to toggle source
# File lib/qtest/rest/query_builder.rb, line 58 def header(key, value) key = encode_for_header(key) @headers[key] = value self end
options(*opts)
click to toggle source
# File lib/qtest/rest/query_builder.rb, line 32 def options(*opts) opts.each do |opt| @options << opt unless @options.include?(opt) end self end
param(key, value)
click to toggle source
# File lib/qtest/rest/query_builder.rb, line 72 def param(key, value) @query[key.to_s] = value self end
parent(value)
click to toggle source
# File lib/qtest/rest/query_builder.rb, line 47 def parent(value) key = value.keys[0] @parent = { 'parentType' => key.to_s.dasherize, 'parentId' => value[key] } self end
Also aliased as: under
with(*paths)
click to toggle source
# File lib/qtest/rest/query_builder.rb, line 40 def with(*paths) paths.map! { |path| path.to_s.tr('_', '-') } @path << paths self end
Private Instance Methods
define_resource(resource)
click to toggle source
# File lib/qtest/rest/query_builder.rb, line 110 def define_resource(resource) self.class.send(:define_method, resource) do |value| value = case value when Integer value.to_s when String value else value.id if value.respond_to?(:id) end @path << encode_for_path(resource) @path << value self end end
define_resources(resource)
click to toggle source
# File lib/qtest/rest/query_builder.rb, line 128 def define_resources(resource) self.class.send(:define_method, resource.to_s.pluralize) do @path << encode_for_path(resource) self end end
encode_body!()
click to toggle source
# File lib/qtest/rest/query_builder.rb, line 147 def encode_body! if @options.include?(:json) header(:content_type, 'application/json') @body = @body.to_json if @options.include?(:json) end end
encode_for_header(key)
click to toggle source
# File lib/qtest/rest/query_builder.rb, line 139 def encode_for_header(key) key.to_s.titleize.gsub(/\s+/, '-') end
encode_for_path(resource)
click to toggle source
# File lib/qtest/rest/query_builder.rb, line 135 def encode_for_path(resource) resource.to_s.pluralize.dasherize end
sanitize_body!()
click to toggle source
# File lib/qtest/rest/query_builder.rb, line 143 def sanitize_body! @body.reject! { |_k, v| v.nil? } end
sanitize_params!()
click to toggle source
# File lib/qtest/rest/query_builder.rb, line 154 def sanitize_params! @query.reject! { |_k, v| v.nil? } end