Skip to content

Commit

Permalink
add TestBindJsonSlice
Browse files Browse the repository at this point in the history
  • Loading branch information
ianrose14 committed Dec 10, 2024
1 parent dafaf41 commit 4a6bf6d
Showing 1 changed file with 52 additions and 0 deletions.
52 changes: 52 additions & 0 deletions queries/reflect_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (

"github.com/volatiletech/null/v8"
"github.com/volatiletech/sqlboiler/v4/drivers"
"github.com/volatiletech/sqlboiler/v4/types"

"github.com/DATA-DOG/go-sqlmock"
)
Expand Down Expand Up @@ -181,6 +182,57 @@ func TestBindPtrSlice(t *testing.T) {
}
}

func TestBindJsonSlice(t *testing.T) {
t.Parallel()

type siteInfoItem struct {
ID int `boil:"id" json:"id" toml:"id" yaml:"id"`
Fields types.JSON `boil:"test" json:"test" toml:"test" yaml:"test"`
}

query := &Query{
from: []string{"fun"},
dialect: &drivers.Dialect{LQ: '"', RQ: '"', UseIndexPlaceholders: true},
}

db, mock, err := sqlmock.New()
if err != nil {
t.Error(err)
}

ret := sqlmock.NewRows([]string{"id", "test"})
ret.AddRow(driver.Value(int64(35)), driver.Value(`{"foo": "bar"}`))
ret.AddRow(driver.Value(int64(12)), driver.Value("{}"))
mock.ExpectQuery(`SELECT \* FROM "fun";`).WillReturnRows(ret)

var testResults []siteInfoItem
err = query.Bind(nil, db, &testResults)
if err != nil {
t.Error(err)
}

if len(testResults) != 2 {
t.Fatal("wrong number of results:", len(testResults))
}
if id := testResults[0].ID; id != 35 {
t.Error("wrong ID:", id)
}
if name := testResults[0].Fields; name.String() != `{"foo": "bar"}` {
t.Error("wrong name:", name)
}

if id := testResults[1].ID; id != 12 {
t.Error("wrong ID:", id)
}
if name := testResults[1].Fields; name.String() != "{}" {
t.Error("wrong name:", name)
}

if err := mock.ExpectationsWereMet(); err != nil {
t.Error(err)
}
}

func testMakeMapping(byt ...byte) uint64 {
var x uint64
for i, b := range byt {
Expand Down

0 comments on commit 4a6bf6d

Please sign in to comment.