diff --git a/examples_test.go b/examples_test.go index eba1d0e..9cb2c0b 100644 --- a/examples_test.go +++ b/examples_test.go @@ -8,48 +8,85 @@ import ( var mySession = &SessionMock{} -func ExampleBatch() { - var b = mySession.Batch(BatchLogged) +func ExampleIteratorScanMap() { + var iteratorMock = &IteratorMock{} - b.Add("insert into users (id, name) values (123, 'me')") - b.Add("insert into users (id, name) values (456, 'you')") + iteratorMock.When("ScanMap", mock.Any).Call(func(m map[string]interface{}) bool { + m["id"] = 1 + m["name"] = "alex" - b.Exec() -} + return false + }) + + iteratorMock.When("Close").Return(nil) + + var sessionMock = &SessionMock{} + + const query = "select * from users" -func ExampleIterator() { - var i = mySession.ScanIterator("select * from users") + sessionMock.When("ScanIterator", query, mock.Any).Return(iteratorMock) + sessionMock.When("Close").Return() - for done := false; !done; { - var m = map[string]interface{}{} + var session Session = sessionMock + var iterator = session.ScanIterator(query) + var row = map[string]interface{}{} - done = i.ScanMap(m) + for more := true; more; { + more = iterator.ScanMap(row) - fmt.Println(m) + fmt.Printf("id = %v, name = %v\n", row["id"], row["name"]) } + + if err := iterator.Close(); err != nil { + fmt.Println(err) + } + + session.Close() + + // Output: id = 1, name = alex } -func ExampleSession() { - var rows, _ = mySession.ScanMapSlice("select * from users") +func ExampleSessionBatch() { + var batchMock = &BatchMock{} - for _, row := range rows { - fmt.Println(row) + batchMock.When("Add", "insert into users (id, name) values (1, 'alex')", mock.Any).Return() + batchMock.When("Exec").Return(fmt.Errorf("invalid")) + + var sessionMock = &SessionMock{} + + sessionMock.When("Batch", BatchLogged).Return(batchMock) + sessionMock.When("Close").Return() + + var session Session = sessionMock + var batch = session.Batch(BatchLogged) + + batch.Add("insert into users (id, name) values (1, 'alex')") + + if err := batch.Exec(); err != nil { + fmt.Println(err) } + + session.Close() + + // Output: invalid } -func init() { - var i = &IteratorMock{} +func ExampleSessionScanMapSlice() { + var sessionMock = &SessionMock{} - i.When("ScanMap", mock.Any).Call(func(m map[string]interface{}) bool { - m["id"] = 123 - m["name"] = "me" + const query = "select * from users" - return false - }) + sessionMock.When("ScanMapSlice", query, mock.Any).Return([]map[string]interface{}{{"id": 1, "name": "alex"}}, nil) + sessionMock.When("Close").Return() + + var session Session = sessionMock + var rows, _ = session.ScanMapSlice(query) + + for _, row := range rows { + fmt.Printf("id = %v, name = %v\n", row["id"], row["name"]) + } - i.When("Close").Return(nil) + session.Close() - mySession.When("Exec", mock.Any).Return(nil) - mySession.When("ScanIterator", mock.Any).Return(i) - mySession.When("ScanMap", mock.Any).Return(map[string]interface{}{"id": 1, "name": "me"}, nil) + // Output: id = 1, name = alex }