From 3d8e872336ba7b40a0b01f6d3d4149e761f1e8cd Mon Sep 17 00:00:00 2001 From: go-jet Date: Fri, 2 Aug 2019 11:29:38 +0200 Subject: [PATCH] MySQL delete statement tests. --- tests/mysql/delete_test.go | 71 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 tests/mysql/delete_test.go diff --git a/tests/mysql/delete_test.go b/tests/mysql/delete_test.go new file mode 100644 index 0000000..99ab41f --- /dev/null +++ b/tests/mysql/delete_test.go @@ -0,0 +1,71 @@ +package mysql + +import ( + "context" + . "github.com/go-jet/jet" + "github.com/go-jet/jet/internal/testutils" + "github.com/go-jet/jet/tests/.gentestdata/mysql/test_sample/model" + . "github.com/go-jet/jet/tests/.gentestdata/mysql/test_sample/table" + "gotest.tools/assert" + "testing" + "time" +) + +func TestDeleteWithWhere(t *testing.T) { + initForDeleteTest(t) + + var expectedSQL = ` +DELETE FROM test_sample.link +WHERE link.name IN ('Gmail', 'Outlook'); +` + deleteStmt := Link. + DELETE(). + WHERE(Link.Name.IN(String("Gmail"), String("Outlook"))) + + testutils.AssertDebugStatementSql(t, deleteStmt, expectedSQL, "Gmail", "Outlook") + testutils.AssertExec(t, deleteStmt, db, 2) +} + +func TestDeleteQueryContext(t *testing.T) { + initForDeleteTest(t) + + deleteStmt := Link. + DELETE(). + WHERE(Link.Name.IN(String("Gmail"), String("Outlook"))) + + ctx, cancel := context.WithTimeout(context.Background(), 1*time.Microsecond) + defer cancel() + + time.Sleep(10 * time.Millisecond) + + dest := []model.Link{} + err := deleteStmt.QueryContext(ctx, db, &dest) + + assert.Error(t, err, "context deadline exceeded") +} + +func TestDeleteExecContext(t *testing.T) { + initForDeleteTest(t) + + deleteStmt := Link. + DELETE(). + WHERE(Link.Name.IN(String("Gmail"), String("Outlook"))) + + ctx, cancel := context.WithTimeout(context.Background(), 1*time.Microsecond) + defer cancel() + + time.Sleep(10 * time.Millisecond) + + _, err := deleteStmt.ExecContext(ctx, db) + + assert.Error(t, err, "context deadline exceeded") +} + +func initForDeleteTest(t *testing.T) { + cleanUpLinkTable(t) + stmt := Link.INSERT(Link.URL, Link.Name, Link.Description). + VALUES("www.gmail.com", "Gmail", "Email service developed by Google"). + VALUES("www.outlook.live.com", "Outlook", "Email service developed by Microsoft") + + testutils.AssertExec(t, stmt, db, 2) +}