session_find_test.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // Copyright 2017 The Xorm Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. package xorm
  5. import (
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. func TestJoinLimit(t *testing.T) {
  10. assert.NoError(t, prepareEngine())
  11. type Salary struct {
  12. Id int64
  13. Lid int64
  14. }
  15. type CheckList struct {
  16. Id int64
  17. Eid int64
  18. }
  19. type Empsetting struct {
  20. Id int64
  21. Name string
  22. }
  23. assert.NoError(t, testEngine.Sync2(new(Salary), new(CheckList), new(Empsetting)))
  24. var emp Empsetting
  25. cnt, err := testEngine.Insert(&emp)
  26. assert.NoError(t, err)
  27. assert.EqualValues(t, 1, cnt)
  28. var checklist = CheckList{
  29. Eid: emp.Id,
  30. }
  31. cnt, err = testEngine.Insert(&checklist)
  32. assert.NoError(t, err)
  33. assert.EqualValues(t, 1, cnt)
  34. var salary = Salary{
  35. Lid: checklist.Id,
  36. }
  37. cnt, err = testEngine.Insert(&salary)
  38. assert.NoError(t, err)
  39. assert.EqualValues(t, 1, cnt)
  40. var salaries []Salary
  41. err = testEngine.Table("salary").
  42. Join("INNER", "check_list", "check_list.id = salary.lid").
  43. Join("LEFT", "empsetting", "empsetting.id = check_list.eid").
  44. Limit(10, 0).
  45. Find(&salaries)
  46. assert.NoError(t, err)
  47. }