From e570c655d4f46b35c39ca2a2565c122c20ea8aea Mon Sep 17 00:00:00 2001 From: Jacob Brewer Date: Tue, 25 Feb 2025 08:19:09 +0000 Subject: [PATCH] mock filter tests --- sql_test.go | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/sql_test.go b/sql_test.go index 319760d..354b7ea 100644 --- a/sql_test.go +++ b/sql_test.go @@ -35,6 +35,67 @@ func (s *newSQLPatchSuite) TestNewSQLPatch_Success() { s.Equal([]any{1, "test"}, patch.args) } +func (s *newSQLPatchSuite) TestNewSQLPatch_Success_Filter_Where() { + type testObj struct { + Id *int `db:"id_tag"` + Name *string `db:"name_tag"` + } + + obj := testObj{ + Id: ptr(1), + Name: ptr("test"), + } + + mf := NewMockFilter(s.T()) + mf.On("Where").Return("where", []any{"arg1", "arg2"}) + + patch := NewSQLPatch(obj, WithWhere(mf)) + + s.Equal([]string{"id_tag = ?", "name_tag = ?"}, patch.fields) + s.Equal([]any{1, "test"}, patch.args) +} + +func (s *newSQLPatchSuite) TestNewSQLPatch_Success_Filter_Join() { + type testObj struct { + Id *int `db:"id_tag"` + Name *string `db:"name_tag"` + } + + obj := testObj{ + Id: ptr(1), + Name: ptr("test"), + } + + mf := NewMockFilter(s.T()) + mf.On("Join").Return("JOIN table2 ON table1.id = table2.id", nil) + + patch := NewSQLPatch(obj, WithJoin(mf)) + + s.Equal([]string{"id_tag = ?", "name_tag = ?"}, patch.fields) + s.Equal([]any{1, "test"}, patch.args) +} + +func (s *newSQLPatchSuite) TestNewSQLPatch_Success_Filter_JoinerAndWhere() { + type testObj struct { + Id *int `db:"id_tag"` + Name *string `db:"name_tag"` + } + + obj := testObj{ + Id: ptr(1), + Name: ptr("test"), + } + + mf := NewMockFilter(s.T()) + mf.On("Join").Return("JOIN table2 ON table1.id = table2.id", nil) + mf.On("Where").Return("where", []any{"arg1", "arg2"}) + + patch := NewSQLPatch(obj, WithFilter(mf)) + + s.Equal([]string{"id_tag = ?", "name_tag = ?"}, patch.fields) + s.Equal([]any{1, "test"}, patch.args) +} + func (s *newSQLPatchSuite) TestNewSQLPatch_Success_MultiFilter() { type testObj struct { Id *int `db:"id_tag"`