Skip to content

Commit 5490645

Browse files
committed
box: refactored tests with box.New
Tests now use `box.MustNew` instead of `box.New`. Added TestMocked_BoxNew for box.New creating a workable object by means of checking length of Request[] in mockDoer after subrequest. Closes #448
1 parent 8fedd09 commit 5490645

File tree

7 files changed

+56
-94
lines changed

7 files changed

+56
-94
lines changed

CHANGELOG.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,15 @@ Versioning](http://semver.org/spec/v2.0.0.html) except to the first release.
1111
### Added
1212

1313
* New types for MessagePack extensions compatible with go-option (#459).
14-
* Added `box.MustNew` wrapper for `box.New`: panics when `box.New` returns an error (#448).
14+
* Added `box.MustNew` wrapper for `box.New` without an error (#448).
1515

1616
### Changed
1717

1818
* Required Go version is `1.24` now (#456).
19+
* `box.New` returns an error instead of panic (#448).
1920

2021
### Fixed
2122

22-
* `box.New` returns an error instead of panic (#448).
23-
2423
## [v2.4.1] - 2025-10-16
2524

2625
This maintenance release marks the end of active development on the `v2`

MIGRATION.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ TODO
99
### <a id="major-changes-v3">Major changes</a>
1010

1111
* Required Go version is `1.24` now.
12+
* `box.New` returns an error instead of panic
13+
* Added `box.MustNew` wrapper for `box.New` without an error
1214

1315
## Migration from v1.x.x to v2.x.x
1416

box/box.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,10 @@ func New(conn tarantool.Doer) (*Box, error) {
2424
}
2525

2626
// MustNew returns a new instance of the box structure, which implements the Box interface.
27+
// It panics if conn == nil.
2728
func MustNew(conn tarantool.Doer) *Box {
2829
b, err := New(conn)
2930
if err != nil {
30-
// Check if the provided Tarantool connection is nil, and if it is, panic with an error
31-
// message. panic early helps to catch and fix nil pointer issues in the code
3231
panic(err)
3332
}
3433
return b

box/box_test.go

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,22 @@ func TestMustNew(t *testing.T) {
2626
require.Panics(t, func() { box.MustNew(nil) })
2727
}
2828

29+
func TestMocked_BoxNew(t *testing.T) {
30+
t.Parallel()
31+
32+
mock := test_helpers.NewMockDoer(t,
33+
test_helpers.NewMockResponse(t, "valid"),
34+
)
35+
36+
b, err := box.New(&mock)
37+
require.NoError(t, err)
38+
require.NotNil(t, b)
39+
40+
assert.Len(t, mock.Requests, 0)
41+
b.Schema().User().Exists(box.NewInfoRequest().Ctx(), "")
42+
require.Len(t, mock.Requests, 1)
43+
}
44+
2945
func TestMocked_BoxInfo(t *testing.T) {
3046
t.Parallel()
3147

@@ -44,8 +60,7 @@ func TestMocked_BoxInfo(t *testing.T) {
4460
mock := test_helpers.NewMockDoer(t,
4561
test_helpers.NewMockResponse(t, data),
4662
)
47-
b, err := box.New(&mock)
48-
require.NoError(t, err)
63+
b := box.MustNew(&mock)
4964

5065
info, err := b.Info()
5166
require.NoError(t, err)
@@ -65,8 +80,7 @@ func TestMocked_BoxSchemaUserInfo(t *testing.T) {
6580
mock := test_helpers.NewMockDoer(t,
6681
test_helpers.NewMockResponse(t, data),
6782
)
68-
b, err := box.New(&mock)
69-
require.NoError(t, err)
83+
b := box.MustNew(&mock)
7084

7185
privs, err := b.Schema().User().Info(context.Background(), "username")
7286
require.NoError(t, err)
@@ -91,9 +105,8 @@ func TestMocked_BoxSessionSu(t *testing.T) {
91105
test_helpers.NewMockResponse(t, []interface{}{}),
92106
errors.New("user not found or supplied credentials are invalid"),
93107
)
94-
b, err := box.New(&mock)
95-
require.NoError(t, err)
108+
b := box.MustNew(&mock)
96109

97-
err = b.Session().Su(context.Background(), "admin")
110+
err := b.Session().Su(context.Background(), "admin")
98111
require.NoError(t, err)
99112
}

box/example_test.go

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,7 @@ func ExampleBox_Info() {
4545

4646
// Or use simple Box implementation.
4747

48-
b, err := box.New(client)
49-
if err != nil {
50-
log.Fatalf("Failed get box info: %s", err)
51-
}
48+
b := box.MustNew(client)
5249

5350
info, err := b.Info()
5451
if err != nil {
@@ -91,10 +88,7 @@ func ExampleSchemaUser_Exists() {
9188
}
9289

9390
// Or use simple User implementation.
94-
b, err := box.New(client)
95-
if err != nil {
96-
log.Fatalf("Failed get box info: %s", err)
97-
}
91+
b := box.MustNew(client)
9892

9993
exists, err := b.Schema().User().Exists(ctx, "user")
10094
if err != nil {
@@ -127,11 +121,7 @@ func ExampleSchemaUser_Create() {
127121
}
128122

129123
// Create SchemaUser.
130-
b, err := box.New(client)
131-
if err != nil {
132-
log.Fatalf("Failed to connect: %s", err)
133-
}
134-
schemaUser := b.Schema().User()
124+
schemaUser := box.MustNew(client).Schema().User()
135125

136126
// Create a new user.
137127
username := "new_user"
@@ -164,11 +154,7 @@ func ExampleSchemaUser_Drop() {
164154
}
165155

166156
// Create SchemaUser.
167-
b, err := box.New(client)
168-
if err != nil {
169-
log.Fatalf("Failed to connect: %s", err)
170-
}
171-
schemaUser := b.Schema().User()
157+
schemaUser := box.MustNew(client).Schema().User()
172158

173159
// Drop an existing user.
174160
username := "new_user"
@@ -207,11 +193,7 @@ func ExampleSchemaUser_Password() {
207193
}
208194

209195
// Create SchemaUser.
210-
b, err := box.New(client)
211-
if err != nil {
212-
log.Fatalf("Failed to connect: %s", err)
213-
}
214-
schemaUser := b.Schema().User()
196+
schemaUser := box.MustNew(client).Schema().User()
215197

216198
// Get the password hash.
217199
password := "my-password"
@@ -240,11 +222,7 @@ func ExampleSchemaUser_Info() {
240222
}
241223

242224
// Create SchemaUser.
243-
b, err := box.New(client)
244-
if err != nil {
245-
log.Fatalf("Failed to connect: %s", err)
246-
}
247-
schemaUser := b.Schema().User()
225+
schemaUser := box.MustNew(client).Schema().User()
248226

249227
info, err := schemaUser.Info(ctx, "test")
250228
if err != nil {

box/session_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ import (
1010
)
1111

1212
func TestBox_Session(t *testing.T) {
13-
b, err := box.New(th.Ptr(th.NewMockDoer(t)))
14-
require.NoError(t, err)
13+
b := box.MustNew(th.Ptr(th.NewMockDoer(t)))
1514
require.NotNil(t, b.Session())
1615
}
1716

0 commit comments

Comments
 (0)