MCPcopy
hub / github.com/go-gorm/gorm / TestPluck

Function TestPluck

tests/query_test.go:699–775  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

697}
698
699func TestPluck(t *testing.T) {
700 users := []*User{
701 GetUser("pluck-user1", Config{}),
702 GetUser("pluck-user2", Config{}),
703 GetUser("pluck-user3", Config{}),
704 }
705
706 DB.Create(&users)
707
708 var names []string
709 if err := DB.Model(User{}).Where("name like ?", "pluck-user%").Order("name").Pluck("name", &names).Error; err != nil {
710 t.Errorf("got error when pluck name: %v", err)
711 }
712
713 var names2 []string
714 if err := DB.Model(User{}).Where("name like ?", "pluck-user%").Order("name desc").Pluck("name", &names2).Error; err != nil {
715 t.Errorf("got error when pluck name: %v", err)
716 }
717
718 sort.Slice(names2, func(i, j int) bool { return names2[i] < names2[j] })
719 AssertEqual(t, names, names2)
720
721 var ids []int
722 if err := DB.Model(User{}).Where("name like ?", "pluck-user%").Pluck("id", &ids).Error; err != nil {
723 t.Errorf("got error when pluck id: %v", err)
724 }
725
726 var ids2 []Int64
727 if err := DB.Model(User{}).Where("name like ?", "pluck-user%").Pluck("id", &ids2).Error; err != nil {
728 t.Errorf("got error when pluck id: %v", err)
729 }
730
731 for idx, name := range names {
732 if name != users[idx].Name {
733 t.Errorf("Unexpected result on pluck name, got %+v", names)
734 }
735 }
736
737 for idx, id := range ids {
738 if int(id) != int(users[idx].ID) {
739 t.Errorf("Unexpected result on pluck id, got %+v", ids)
740 }
741 }
742
743 for idx, id := range ids2 {
744 if int(id) != int(users[idx].ID+1) {
745 t.Errorf("Unexpected result on pluck id, got %+v", ids)
746 }
747 }
748
749 var times []time.Time
750 if err := DB.Model(User{}).Where("name like ?", "pluck-user%").Pluck("created_at", &times).Error; err != nil {
751 t.Errorf("got error when pluck time: %v", err)
752 }
753
754 for idx, tv := range times {
755 AssertEqual(t, tv, users[idx].CreatedAt)
756 }

Callers

nothing calls this directly

Calls 7

GetUserFunction · 0.85
PluckMethod · 0.80
ModelMethod · 0.80
CreateMethod · 0.65
OrderMethod · 0.65
WhereMethod · 0.65
AssertEqualFunction · 0.50

Tested by

no test coverage detected