github.com/eden-framework/sqlx@v0.0.2/builder/addition_join_test.go (about) 1 package builder_test 2 3 import ( 4 "testing" 5 6 . "github.com/eden-framework/sqlx/builder" 7 . "github.com/eden-framework/sqlx/builder/buidertestingutils" 8 "github.com/onsi/gomega" 9 ) 10 11 func TestJoin(t *testing.T) { 12 tUser := T("t_user", 13 Col("f_id").Type(uint64(0), ",autoincrement"), 14 Col("f_name").Type("", ",size=128,default=''"), 15 Col("f_org_id").Type("", ",size=128,default=''"), 16 ) 17 18 tOrg := T("t_org", 19 Col("f_org_id").Type(uint64(0), ",autoincrement"), 20 Col("f_org_name").Type("", ",size=128,default=''"), 21 ) 22 23 t.Run("JOIN ON", func(t *testing.T) { 24 gomega.NewWithT(t).Expect( 25 Select(MultiWith(", ", 26 Alias(tUser.Col("f_id"), "f_id"), 27 Alias(tUser.Col("f_name"), "f_name"), 28 Alias(tUser.Col("f_org_id"), "f_org_id"), 29 Alias(tOrg.Col("f_org_name"), "f_org_name"), 30 )). 31 From( 32 tUser, 33 Join(tOrg).On(tUser.Col("f_org_id").Eq(tOrg.Col("f_org_id"))), 34 )). 35 To(BeExpr( 36 ` 37 SELECT (t_user.f_id) AS f_id, (t_user.f_name) AS f_name, (t_user.f_org_id) AS f_org_id, (t_org.f_org_name) AS f_org_name FROM t_user 38 JOIN t_org ON t_user.f_org_id = t_org.f_org_id 39 `, 40 )) 41 }) 42 t.Run("JOIN USING", func(t *testing.T) { 43 gomega.NewWithT(t).Expect( 44 Select(nil). 45 From( 46 tUser, 47 Join(tOrg).Using(tUser.Col("f_org_id")), 48 ), 49 ).To(BeExpr( 50 ` 51 SELECT * FROM t_user 52 JOIN t_org USING (f_org_id) 53 `, 54 )) 55 }) 56 }