class TestdroidAPI::FilterBuilder
Public Class Methods
new()
click to toggle source
# File lib/testdroid-api-filter-builder.rb, line 4 def initialize @filters = [] end
Public Instance Methods
after(name, value)
click to toggle source
# File lib/testdroid-api-filter-builder.rb, line 79 def after(name, value) add(name, value, 'after', 'd', true) end
before(name, value)
click to toggle source
# File lib/testdroid-api-filter-builder.rb, line 83 def before(name, value) add(name, value, 'before', 'd', true) end
contains(name, value)
click to toggle source
# File lib/testdroid-api-filter-builder.rb, line 95 def contains(name, value) add(name, value, 'contains', 's') end
empty(name, value)
click to toggle source
# File lib/testdroid-api-filter-builder.rb, line 103 def empty(name, value) nil # TODO (waiting for BE support) end
eq(name, value)
click to toggle source
# File lib/testdroid-api-filter-builder.rb, line 91 def eq(name, value) add(name, value, 'eq', nil) end
gt(name, value)
click to toggle source
# File lib/testdroid-api-filter-builder.rb, line 71 def gt(name, value) add(name, value, 'gt', 'n') end
in(name, value)
click to toggle source
# File lib/testdroid-api-filter-builder.rb, line 111 def in(name, value) add(name, value, 'in', nil, true) end
isnull(name, operand)
click to toggle source
# File lib/testdroid-api-filter-builder.rb, line 107 def isnull(name, operand) add(name, nil, 'isnull', operand) end
like(name, value)
click to toggle source
# File lib/testdroid-api-filter-builder.rb, line 99 def like(name, value) nil # TODO (waiting for BE support) end
lt(name, value)
click to toggle source
# File lib/testdroid-api-filter-builder.rb, line 75 def lt(name, value) add(name, value, 'lt', 'n') end
on(name, value)
click to toggle source
# File lib/testdroid-api-filter-builder.rb, line 87 def on(name, value) add(name, value, 'on', 'd') end
to_s()
click to toggle source
# File lib/testdroid-api-filter-builder.rb, line 116 def to_s parts = [] @filters.each do |filter| val = '' if filter.value.length > 1 or not filter.value.nil? val = '_' + filter.values end parts.push( filter.to_s + val ) end parts.join(';') end
Private Instance Methods
add(name, value, operand, type, check_nil=false)
click to toggle source
# File lib/testdroid-api-filter-builder.rb, line 21 def add(name, value, operand, type, check_nil=false) unless value.is_a? Array value = [value] end if value.length == 0 return self end # auto-convert value.each_with_index do |val, index| if val.is_a? Time value[index] = val.to_i.to_s elsif val.is_a? Fixnum value[index] = val.to_s end end # auto-check type if type.nil? value.each do |val| next if val.nil? type = check_type(val) break end if operand == 'in' type = 'l'+type end end # check nil existence if check_nil is_nil = false value.each do |val| next unless val.nil? is_nil = true end if is_nil value = value.select { |item| !item.nil? } operand += 'ornull' end end # add filter @filters.push(FilterItem.new(name, value, operand, type)) end
check_type(subject)
click to toggle source
# File lib/testdroid-api-filter-builder.rb, line 9 def check_type(subject) if !!subject == subject # check if it's boolean return 'b' elsif (/^[0-9]{13}$/ =~ subject) != nil # check if it's timestamp return 'd' elsif (/^[0-9]+(?:\.[0-9]+)?$/ =~ subject) != nil # check if it's number return 'n' else return 's' end end