diff --git a/persistence/helpers_test.go b/persistence/helpers_test.go index dbecce12b..4c4a10f0c 100644 --- a/persistence/helpers_test.go +++ b/persistence/helpers_test.go @@ -1,12 +1,57 @@ package persistence import ( + "time" + "github.com/Masterminds/squirrel" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("Helpers", func() { + Describe("toSnakeCase", func() { + It("converts camelCase", func() { + Expect(toSnakeCase("camelCase")).To(Equal("camel_case")) + }) + It("converts PascalCase", func() { + Expect(toSnakeCase("PascalCase")).To(Equal("pascal_case")) + }) + It("converts ALLCAPS", func() { + Expect(toSnakeCase("ALLCAPS")).To(Equal("allcaps")) + }) + It("does not converts snake_case", func() { + Expect(toSnakeCase("snake_case")).To(Equal("snake_case")) + }) + }) + Describe("toSqlArgs", func() { + type Model struct { + ID string `json:"id"` + AlbumId string `json:"albumId"` + PlayCount int `json:"playCount"` + CreatedAt *time.Time + } + + It("returns a map with snake_case keys", func() { + now := time.Now() + m := &Model{ID: "123", AlbumId: "456", CreatedAt: &now, PlayCount: 2} + args, err := toSqlArgs(m) + Expect(err).To(BeNil()) + Expect(args).To(HaveKeyWithValue("id", "123")) + Expect(args).To(HaveKeyWithValue("album_id", "456")) + Expect(args).To(HaveKey("created_at")) + Expect(args).To(HaveLen(3)) + }) + + It("remove null fields", func() { + m := &Model{ID: "123", AlbumId: "456"} + args, err := toSqlArgs(m) + Expect(err).To(BeNil()) + Expect(args).To(HaveKey("id")) + Expect(args).To(HaveKey("album_id")) + Expect(args).To(HaveLen(2)) + }) + }) + Describe("Exists", func() { It("constructs the correct EXISTS query", func() { e := exists("album", squirrel.Eq{"id": 1})