Class: FluidDb::Mock

Inherits:
Base
  • Object
show all
Defined in:
lib/FluidDb/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

#convertTupleToHash, #escape_string, #format_to_sql, #reconnect, #splice_sql, #verboseLog

Constructor Details

#initialize(uri) ⇒ Mock

Returns a new instance of Mock.



15
16
17
18
# File 'lib/FluidDb/Mock.rb', line 15

def initialize(uri)
    @hash = Hash.new
    
end

Instance Attribute Details

#hashObject (readonly)

Returns the value of attribute hash.



11
12
13
# File 'lib/FluidDb/Mock.rb', line 11

def hash
  @hash
end

Instance Method Details

#addSql(sql, result) ⇒ Object



84
85
86
87
88
89
90
# File 'lib/FluidDb/Mock.rb', line 84

def addSql( sql, result )
    if !result.is_a? Array then
        raise TypeError.new( "Expecting an Array of Hashes, eg [{'field1'=>1, 'field2'=>2}]. Note, the Array may be empty" )
    end
    
    @hash[sql] = result;
end

#addSqlWithParams(sql, params, result) ⇒ Object



92
93
94
95
96
# File 'lib/FluidDb/Mock.rb', line 92

def addSqlWithParams( sql, params, result )
    sql = self.format_to_sql( sql, params )
    
    self.addSql( sql, result )
end

#BeginObject

Transaction Semantics



99
100
# File 'lib/FluidDb/Mock.rb', line 99

def Begin
end

#closeObject



28
29
# File 'lib/FluidDb/Mock.rb', line 28

def close
end

#CommitObject

Transaction Semantics



103
104
# File 'lib/FluidDb/Mock.rb', line 103

def Commit
end

#connectObject



25
26
# File 'lib/FluidDb/Mock.rb', line 25

def connect()
end

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



74
75
76
77
78
# File 'lib/FluidDb/Mock.rb', line 74

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

#getSqlFromHash(sql) ⇒ Object

Raises:



31
32
33
# File 'lib/FluidDb/Mock.rb', line 31

def getSqlFromHash( sql )
	raise SqlNotMatchedError.new( sql ) unless @hash.has_key?( sql )
end

#insert(sql, params) ⇒ Object



80
81
82
# File 'lib/FluidDb/Mock.rb', line 80

def insert( sql, params )
    raise "Pgsql uses SEQUENCES, so possibly easier to use 2 executes"
end

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



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/FluidDb/Mock.rb', line 35

def queryForArray( sql, params=[] )
    sql = self.format_to_sql( sql, params )
    puts "FluidDb::Mock.queryForArray. sql: #{sql}" if @verbose == true
    
    results = self.getSqlFromHash( sql )
    case results.length
        when 0
        raise FluidDb::NoDataFoundError.new
        when 1
        return results.first
        return r
        else
        raise FluidDb::TooManyRowsError.new
    end
    
end

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



68
69
70
71
72
# File 'lib/FluidDb/Mock.rb', line 68

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

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



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/FluidDb/Mock.rb', line 52

def queryForValue( sql, params=[] )
    sql = self.format_to_sql( sql, params )
    puts "FluidDb::Mock.queryForValue. sql: #{sql}" if @verbose == true
    
    results = self.getSqlFromHash( sql )
    case results.length
        when 0
        raise FluidDb::NoDataFoundError.new
        when 1
        return results.first.first[1]
        else
        raise FluidDb::TooManyRowsError.new
    end
    return @hash[sql]
end

#RollbackObject

Transaction Semantics



107
108
# File 'lib/FluidDb/Mock.rb', line 107

def Rollback
end

#verboseObject



20
21
22
23
# File 'lib/FluidDb/Mock.rb', line 20

def verbose()
    @verbose = true
    return self
end