Passed
Push — main ( 9e2022...6ef1c9 )
by Christian
02:04 queued 14s
created

connector.*mockDBSqlConn.GetNextSequenceQuery   A

Complexity

Conditions 1

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nop 1
dl 0
loc 2
rs 10
c 0
b 0
f 0
1
package connector
2
3
import (
4
	"database/sql"
5
	"database/sql/driver"
6
7
	"github.com/DATA-DOG/go-sqlmock"
8
	"github.com/cdleo/go-commons/logger"
9
	"github.com/cdleo/go-commons/sqlcommons"
10
)
11
12
type mockDBSqlConn struct {
13
	initOk bool
14
	mock   sqlmock.Sqlmock
15
}
16
17
func NewMockSQLConnector(initOk bool) sqlcommons.MockSQLConnector {
18
19
	return &mockDBSqlConn{
20
		initOk,
21
		nil,
22
	}
23
}
24
25
func (s *mockDBSqlConn) Open(logger logger.Logger, translator sqlcommons.SQLAdapter) (*sql.DB, error) {
26
27
	if s.initOk {
28
		db, mock, err := sqlmock.New(sqlmock.QueryMatcherOption(sqlmock.QueryMatcherEqual))
29
		s.mock = mock
30
		return db, err
31
	} else {
32
		return nil, sqlcommons.ConnectionFailed
33
	}
34
}
35
36
func (s *mockDBSqlConn) GetNextSequenceQuery(sequenceName string) string {
37
	return sequenceName
38
}
39
40
func (s *mockDBSqlConn) PatchBegin(err error) {
41
	expectBegin := s.mock.ExpectBegin()
42
	if err != nil {
43
		expectBegin.WillReturnError(err)
44
	}
45
}
46
func (s *mockDBSqlConn) PatchCommit(err error) {
47
	expectCommit := s.mock.ExpectCommit()
48
	if err != nil {
49
		expectCommit.WillReturnError(err)
50
	}
51
}
52
func (s *mockDBSqlConn) PatchRollback(err error) {
53
	expectRollback := s.mock.ExpectRollback()
54
	if err != nil {
55
		expectRollback.WillReturnError(err)
56
	}
57
}
58
59
func (s *mockDBSqlConn) PatchExec(query string, err error, args ...driver.Value) {
60
	expectQuery := s.mock.ExpectExec(query)
61
	if len(args) > 0 {
62
		expectQuery.WithArgs(args...)
63
	}
64
	if err != nil {
65
		expectQuery.WillReturnError(err)
66
	} else {
67
68
		result := sqlmock.NewResult(0, 0)
69
		expectQuery.WillReturnResult(result)
70
	}
71
}
72
func (s *mockDBSqlConn) PatchQuery(query string, columns []string, values []driver.Value, err error, args ...driver.Value) {
73
	expectQuery := s.mock.ExpectQuery(query)
74
	if len(args) > 0 {
75
		expectQuery.WithArgs(args...)
76
	}
77
	if err != nil {
78
		expectQuery.WillReturnError(err)
79
	} else {
80
		rows := sqlmock.NewRows(columns).
81
			AddRow(values...)
82
83
		expectQuery.WillReturnRows(rows)
84
	}
85
}
86
87
func (s *mockDBSqlConn) PatchQueryRow(query string, result map[string]string, err error) {
88
	var keys []string
89
	var values []interface{}
90
	for key, value := range result {
91
		keys = append(keys, key)
92
		values = append(values, value)
93
	}
94
	rows := sqlmock.NewRows(keys).
95
		AddRow(values)
96
97
	s.mock.ExpectQuery(query).WillReturnRows(rows).WillReturnError(err)
98
}
99