Skip to content

Commit f43327b

Browse files
committed
Adding tests
1 parent 03ad7cf commit f43327b

File tree

5 files changed

+162
-1
lines changed

5 files changed

+162
-1
lines changed

json_operation.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ func jsonOperationEntityChanged(newObj map[string]interface{}, documentInfo *doc
2828

2929
func isJSONFloatEqual(oldPropVal float64, newProp interface{}) bool {
3030
switch newPropVal := newProp.(type) {
31+
case nil:
32+
return false
3133
case float64:
3234
return oldPropVal == newPropVal
3335
default:
@@ -39,6 +41,8 @@ func isJSONFloatEqual(oldPropVal float64, newProp interface{}) bool {
3941

4042
func isJSONBoolEqual(oldPropVal bool, newProp interface{}) bool {
4143
switch newPropVal := newProp.(type) {
44+
case nil:
45+
return false
4246
case bool:
4347
return oldPropVal == newPropVal
4448
default:
@@ -50,6 +54,8 @@ func isJSONBoolEqual(oldPropVal bool, newProp interface{}) bool {
5054

5155
func isJSONStringEqual(oldPropVal string, newProp interface{}) bool {
5256
switch newPropVal := newProp.(type) {
57+
case nil:
58+
return false
5359
case string:
5460
return oldPropVal == newPropVal
5561
default:

scripts/run_single_test.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ go clean -testcache
3333

3434
#go test -tags for_tests -v -timeout 30s "-coverpkg=github.com/ravendb/ravendb-go-client" -covermode=atomic "-coverprofile=coverage.txt" ./tests -run ^TestCachingOfDocumentInclude$
3535

36-
go test -tags for_tests -v -race -timeout 60s ./tests -run ^TestLoad$
36+
go test -tags for_tests -v -race -timeout 60s ./tests -run ^TestNonNilTimeError$
3737

3838
#go test -tags for_tests -v -race -timeout 60s ./tests -run ^TestAggressiveCaching$
3939

tests/non_null_time.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package tests
2+
3+
import (
4+
"testing"
5+
"time"
6+
7+
"github.com/ravendb/ravendb-go-client"
8+
"github.com/stretchr/testify/assert"
9+
)
10+
11+
func TestNonNilTimeError(t *testing.T) {
12+
driver := createTestDriver(t)
13+
test_case_string_non_nil_error(t, driver)
14+
}
15+
16+
func test_case_string_non_nil_error(t *testing.T, driver *RavenTestDriver) {
17+
18+
id := "customer1"
19+
20+
var err error
21+
store := driver.getDocumentStoreMust(t)
22+
defer store.Close()
23+
24+
var time time.Time
25+
time, err = ravendb.ParseTime("2006-01-02T15:04:05.9999999Z")
26+
rtime := ravendb.Time(time)
27+
28+
obj := &CustomerNilTime{
29+
ID: id,
30+
CreatedAt: &rtime,
31+
}
32+
33+
{
34+
session := openSessionMust(t, store)
35+
err = session.Store(obj)
36+
assert.NoError(t, err)
37+
session.SaveChanges()
38+
session.Close()
39+
}
40+
41+
{
42+
session := openSessionMust(t, store)
43+
var customer *CustomerNilTime
44+
err = session.Load(&customer, id)
45+
46+
assert.True(t, customer.CreatedAt != nil)
47+
48+
session.Close()
49+
}
50+
}

tests/nullable_time.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package tests
2+
3+
import (
4+
"testing"
5+
6+
"github.com/ravendb/ravendb-go-client"
7+
"github.com/stretchr/testify/assert"
8+
)
9+
10+
// Note: must rename as it conflicts with Order in order_test.go
11+
type CustomerNilTime struct {
12+
ID string `json:"Id"`
13+
CreatedAt *ravendb.Time `json:"createdAt"`
14+
}
15+
16+
func TestNilTimeError(t *testing.T) {
17+
driver := createTestDriver(t)
18+
test_case_string_nil_error(t, driver)
19+
}
20+
21+
func test_case_nil_time_error(t *testing.T, driver *RavenTestDriver) {
22+
23+
id := "customer1"
24+
25+
var err error
26+
store := driver.getDocumentStoreMust(t)
27+
defer store.Close()
28+
29+
obj := &CustomerNilTime{
30+
ID: id,
31+
CreatedAt: nil,
32+
}
33+
34+
{
35+
session := openSessionMust(t, store)
36+
err = session.Store(obj)
37+
assert.NoError(t, err)
38+
session.SaveChanges()
39+
session.Close()
40+
}
41+
42+
{
43+
session := openSessionMust(t, store)
44+
var customer *CustomerNilTime
45+
err = session.Load(&customer, id)
46+
47+
assert.True(t, customer.CreatedAt == nil)
48+
49+
session.Close()
50+
}
51+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package tests
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/assert"
7+
)
8+
9+
// Note: must rename as it conflicts with Order in order_test.go
10+
type CustomerNilReference struct {
11+
ID string `json:"Id"`
12+
Reference *string `json:"reference"`
13+
Name string `json:"name"`
14+
}
15+
16+
func TestStringNilError(t *testing.T) {
17+
driver := createTestDriver(t)
18+
test_case_string_nil_error(t, driver)
19+
}
20+
21+
func test_case_string_nil_error(t *testing.T, driver *RavenTestDriver) {
22+
23+
id := "customer1"
24+
reference := "reference"
25+
26+
var err error
27+
store := driver.getDocumentStoreMust(t)
28+
defer store.Close()
29+
30+
obj := &CustomerNilReference{
31+
ID: id,
32+
Name: "customer_name",
33+
}
34+
35+
{
36+
session := openSessionMust(t, store)
37+
err = session.Store(obj)
38+
assert.NoError(t, err)
39+
session.SaveChanges()
40+
session.Close()
41+
}
42+
43+
{
44+
session := openSessionMust(t, store)
45+
var customer *CustomerNilReference
46+
err = session.Load(&customer, id)
47+
48+
customer.Reference = &reference
49+
50+
session.SaveChanges()
51+
52+
session.Close()
53+
}
54+
}

0 commit comments

Comments
 (0)