Newer
Older
pokemon-go-trade / vendor / github.com / go-pg / pg / orm / query_test.go
package orm_test

import (
	"testing"

	"github.com/go-pg/pg/orm"

	. "github.com/onsi/ginkgo"
	. "github.com/onsi/gomega"
)

func TestQueryFormatQuery(t *testing.T) {
	type FormatModel struct {
		Foo string
		Bar string
	}

	q := orm.NewQuery(nil, &FormatModel{"foo", "bar"})

	params := &struct {
		Foo string
	}{
		"not_foo",
	}
	b := q.FormatQuery(nil, "?foo ?TableName ?TableAlias ?TableColumns ?Columns", params)

	wanted := `'not_foo' "format_models" "format_model" "format_model"."foo", "format_model"."bar" "foo", "bar"`
	if string(b) != wanted {
		t.Fatalf("got `%s`, wanted `%s`", string(b), wanted)
	}
}

var _ = Describe("NewQuery", func() {
	It("works with nil db", func() {
		q := orm.NewQuery(nil)

		b := q.AppendFormat(nil, nil)
		Expect(string(b)).To(Equal("SELECT *"))
	})

	It("works with nil model", func() {
		type Model struct {
			Id int
		}
		q := orm.NewQuery(nil, (*Model)(nil))

		b := q.AppendFormat(nil, nil)
		Expect(string(b)).To(Equal(`SELECT "model"."id" FROM "models" AS "model"`))
	})
})