class Cassie::Testing::Fake::Result

Attributes

opts[R]
rows[R]
statement[R]

Public Class Methods

new(statement, execution_opts={}) click to toggle source
# File lib/cassie/testing/fake/result.rb, line 8
def initialize(statement, execution_opts={})
  @statement = statement
  @opts = execution_opts
  @rows = @data = opts[:rows] || []
end

Public Instance Methods

current_page() click to toggle source
# File lib/cassie/testing/fake/result.rb, line 62
def current_page
  return 1 unless paging_enabled? && previous_page
  previous_page + 1
end
each() click to toggle source
# File lib/cassie/testing/fake/result.rb, line 18
def each
  result_rows = if paging_enabled?
    index = current_page - 1
    offset = index * page_size
    @data.slice(offset, page_size) || []
  else
    @data
  end

  if block_given?
    result_rows.each(&block)
    self
  else
    result_rows.each
  end
end
Also aliased as: rows, each_row
each_row()
Alias for: each
empty?() click to toggle source
# File lib/cassie/testing/fake/result.rb, line 37
def empty?
  !rows.peek
rescue StopIteration
  true
end
execution_info() click to toggle source
# File lib/cassie/testing/fake/result.rb, line 14
def execution_info
  ExecutionInfo.new(statement)
end
last_page?() click to toggle source
# File lib/cassie/testing/fake/result.rb, line 67
def last_page?
  return nil unless paging_enabled?
  current_page == pages
end
page_size() click to toggle source
# File lib/cassie/testing/fake/result.rb, line 47
def page_size
  return nil unless opts[:page_size]
  opts[:page_size].to_i
end
pages() click to toggle source
# File lib/cassie/testing/fake/result.rb, line 52
def pages
  return nil unless paging_enabled?
  (@data.count / page_size.to_f).ceil
end
paging_enabled?() click to toggle source
# File lib/cassie/testing/fake/result.rb, line 43
def paging_enabled?
  !!page_size
end
paging_state() click to toggle source
# File lib/cassie/testing/fake/result.rb, line 77
def paging_state
  return nil unless paging_enabled?
  if previous_paging_state
    bytes = previous_paging_state.bytes
    raise 'Too many pages for Cassie testing harness!' if bytes[-1] >= 256
    bytes[-1] = bytes[-1] + 1
    bytes.pack('c*')
  else
    # use last byte of state string to store pages
    # presume 255 pages is enough for any testing
    "paging #{SecureRandom.hex(6)}:" + [1].pack('c*')
  end
end
previous_page() click to toggle source
# File lib/cassie/testing/fake/result.rb, line 57
def previous_page
  return nil unless previous_paging_state
  previous_paging_state.bytes[-1]
end
previous_paging_state() click to toggle source
# File lib/cassie/testing/fake/result.rb, line 72
def previous_paging_state
  return nil unless paging_enabled?
  @opts[:paging_state]
end