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



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

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



94
95
96
97
98
# File 'lib/FluidDb/Mock.rb', line 94

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

#BeginObject

Transaction Semantics



101
102
# File 'lib/FluidDb/Mock.rb', line 101

def Begin
end

#closeObject



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

def close
end

#CommitObject

Transaction Semantics



105
106
# File 'lib/FluidDb/Mock.rb', line 105

def Commit
end

#connectObject



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

def connect()
end

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



76
77
78
79
80
# File 'lib/FluidDb/Mock.rb', line 76

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
34
35
# File 'lib/FluidDb/Mock.rb', line 31

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

	return @hash[sql]
end

#insert(sql, params) ⇒ Object



82
83
84
# File 'lib/FluidDb/Mock.rb', line 82

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

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



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

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



70
71
72
73
74
# File 'lib/FluidDb/Mock.rb', line 70

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



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

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



109
110
# File 'lib/FluidDb/Mock.rb', line 109

def Rollback
end

#verboseObject



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

def verbose()
    @verbose = true
    return self
end