Class: FluidDb2::Mock

Inherits:
Base
  • Object
show all
Defined in:
lib/fluiddb2/mock.rb

Overview

A constant way of enabling testing for FluidDb

Instance Attribute Summary collapse

Attributes inherited from Base

#connection

Instance Method Summary collapse

Methods inherited from Base

#reconnect, #verbose_log

Constructor Details

#initialize(_uri) ⇒ Mock



11
12
13
14
# File 'lib/fluiddb2/mock.rb', line 11

def initialize(_uri)
  @hash = {}
  @verbose = false
end

Instance Attribute Details

#hashObject (readonly)

Returns the value of attribute hash.



9
10
11
# File 'lib/fluiddb2/mock.rb', line 9

def hash
  @hash
end

Instance Method Details

#add_sql(sql, result) ⇒ Object

Raises:

  • (TypeError)


80
81
82
83
84
# File 'lib/fluiddb2/mock.rb', line 80

def add_sql(sql, result)
  raise TypeError.new( "Expecting an Array of Hashes, eg [{'field1'=>1, 'field2'=>2}]. Note, the Array may be empty" ) unless result.is_a? Array

  @hash[sql] = result
end

#add_sql_with_params(sql, params, result) ⇒ Object



86
87
88
89
# File 'lib/fluiddb2/mock.rb', line 86

def add_sql_with_params(sql, params, result)
  sql = format_to_sql(sql, params)
  add_sql(sql, result)
end

#beginObject

Transaction Semantics



92
93
# File 'lib/fluiddb2/mock.rb', line 92

def begin
end

#closeObject



24
25
# File 'lib/fluiddb2/mock.rb', line 24

def close
end

#commitObject

Transaction Semantics



96
97
# File 'lib/fluiddb2/mock.rb', line 96

def commit
end

#connectObject



21
22
# File 'lib/fluiddb2/mock.rb', line 21

def connect
end

#execute(sql, params = [], _expected_affected_rows = nil) ⇒ Object



70
71
72
73
74
# File 'lib/fluiddb2/mock.rb', line 70

def execute(sql, params = [], _expected_affected_rows = nil)
  sql = format_to_sql(sql, params)
  puts "FluidDb::Mock.execute. sql: #{sql}" if @verbose == true
  get_sql_from_hash(sql)
end

#get_sql_from_hash(sql) ⇒ Object



27
28
29
30
31
# File 'lib/fluiddb2/mock.rb', line 27

def get_sql_from_hash(sql)
  fail SqlNotMatchedError, sql unless @hash.key?(sql)

  @hash[sql]
end

#insert(_sql, _params) ⇒ Object



76
77
78
# File 'lib/fluiddb2/mock.rb', line 76

def insert(_sql, _params)
  fail 'Mock uses SEQUENCES, so possibly easier to use 2 executes'
end

#query_for_array(sql, params = []) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/fluiddb2/mock.rb', line 33

def query_for_array(sql, params = [])
  sql = format_to_sql(sql, params)
  puts "FluidDb::Mock.query_for_array. sql: #{sql}" if @verbose == true

  results = get_sql_from_hash(sql)
  case results.length
  when 0
    fail FluidDb::NoDataFoundError
  when 1
    return results.first
  else
    fail FluidDb::TooManyRowsError
  end
end

#query_for_resultset(sql, params = []) ⇒ Object



64
65
66
67
68
# File 'lib/fluiddb2/mock.rb', line 64

def query_for_resultset(sql, params = [])
  sql = format_to_sql(sql, params)
  puts "FluidDb::Mock.queryForResultset. sql: #{sql}" if @verbose == true
  get_sql_from_hash(sql)
end

#query_for_value(sql, params = []) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/fluiddb2/mock.rb', line 48

def query_for_value(sql, params = [])
  sql = format_to_sql(sql, params)
  puts "FluidDb::Mock.queryForValue. sql: #{sql}" if @verbose == true

  results = get_sql_from_hash(sql)
  case results.length
  when 0
    fail FluidDb::NoDataFoundError
  when 1
    return results.first.first[1]
  else
    fail FluidDb::TooManyRowsError
  end
  @hash[sql]
end

#rollbackObject

Transaction Semantics



100
101
# File 'lib/fluiddb2/mock.rb', line 100

def rollback
end

#verboseObject



16
17
18
19
# File 'lib/fluiddb2/mock.rb', line 16

def verbose
  @verbose = true
  self
end