|
@@ -1,181 +0,0 @@
|
|
-package contact
|
|
|
|
-
|
|
|
|
-import (
|
|
|
|
- "context"
|
|
|
|
- "testing"
|
|
|
|
- "time"
|
|
|
|
-
|
|
|
|
- "wechat-api/ent"
|
|
|
|
- "wechat-api/ent/contact"
|
|
|
|
- "wechat-api/ent/label"
|
|
|
|
- "wechat-api/ent/labelrelationship"
|
|
|
|
- "wechat-api/ent/wx"
|
|
|
|
- "wechat-api/internal/svc"
|
|
|
|
- "wechat-api/internal/types"
|
|
|
|
- "wechat-api/internal/utils/dberrorhandler"
|
|
|
|
-
|
|
|
|
- "github.com/stretchr/testify/assert"
|
|
|
|
- "github.com/stretchr/testify/mock"
|
|
|
|
- "github.com/suyuan32/simple-admin-common/msg/errormsg"
|
|
|
|
- "github.com/suyuan32/simple-admin-common/utils/pointy"
|
|
|
|
-)
|
|
|
|
-
|
|
|
|
-// MockContactClient is a mock implementation of the Contact client.
|
|
|
|
-type MockContactClient struct {
|
|
|
|
- mock.Mock
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-func (m *MockContactClient) Query() *ent.ContactQuery {
|
|
|
|
- args := m.Called()
|
|
|
|
- return args.Get(0).(*ent.ContactQuery)
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-// MockContactQuery is a mock implementation of the Contact query.
|
|
|
|
-type MockContactQuery struct {
|
|
|
|
- mock.Mock
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-func (m *MockContactQuery) Where(predicates ...predicate.Contact) *ent.ContactQuery {
|
|
|
|
- args := m.Called(predicates)
|
|
|
|
- return args.Get(0).(*ent.ContactQuery)
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-func (m *MockContactQuery) WithContactRelationships(f func(*ent.LabelRelationshipQuery)) *ent.ContactQuery {
|
|
|
|
- args := m.Called(f)
|
|
|
|
- return args.Get(0).(*ent.ContactQuery)
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-func (m *MockContactQuery) Page(ctx context.Context, page, pageSize int) (*ent.ContactPage, error) {
|
|
|
|
- args := m.Called(ctx, page, pageSize)
|
|
|
|
- return args.Get(0).(*ent.ContactPage), args.Error(1)
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-// MockWxClient is a mock implementation of the Wx client.
|
|
|
|
-type MockWxClient struct {
|
|
|
|
- mock.Mock
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-func (m *MockWxClient) Query() *ent.WxQuery {
|
|
|
|
- args := m.Called()
|
|
|
|
- return args.Get(0).(*ent.WxQuery)
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-// MockWxQuery is a mock implementation of the Wx query.
|
|
|
|
-type MockWxQuery struct {
|
|
|
|
- mock.Mock
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-func (m *MockWxQuery) Where(predicates ...predicate.Wx) *ent.WxQuery {
|
|
|
|
- args := m.Called(predicates)
|
|
|
|
- return args.Get(0).(*ent.WxQuery)
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-func (m *MockWxQuery) All(ctx context.Context) ([]*ent.Wx, error) {
|
|
|
|
- args := m.Called(ctx)
|
|
|
|
- return args.Get(0).([]*ent.Wx), args.Error(1)
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-func TestGetContactList(t *testing.T) {
|
|
|
|
- ctx := context.Background()
|
|
|
|
- mockContactClient := new(MockContactClient)
|
|
|
|
- mockWxClient := new(MockWxClient)
|
|
|
|
- svcCtx := &svc.ServiceContext{
|
|
|
|
- DB: &ent.Client{
|
|
|
|
- Contact: mockContactClient,
|
|
|
|
- Wx: mockWxClient,
|
|
|
|
- },
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- logic := NewGetContactListLogic(ctx, svcCtx)
|
|
|
|
-
|
|
|
|
- // Mock the ContactQuery and WxQuery
|
|
|
|
- mockContactQuery := new(MockContactQuery)
|
|
|
|
- mockContactClient.On("Query").Return(mockContactQuery)
|
|
|
|
-
|
|
|
|
- mockWxQuery := new(MockWxQuery)
|
|
|
|
- mockWxClient.On("Query").Return(mockWxQuery)
|
|
|
|
-
|
|
|
|
- // Prepare the expected data
|
|
|
|
- expectedContact := &ent.Contact{
|
|
|
|
- ID: 1,
|
|
|
|
- CreatedAt: time.Now(),
|
|
|
|
- UpdatedAt: time.Now(),
|
|
|
|
- Status: 1,
|
|
|
|
- WxWxid: "wxid_1",
|
|
|
|
- Type: 1,
|
|
|
|
- Wxid: "wxid_1",
|
|
|
|
- Account: "account_1",
|
|
|
|
- Nickname: "nickname_1",
|
|
|
|
- Markname: "markname_1",
|
|
|
|
- Headimg: "headimg_1",
|
|
|
|
- Sex: 1,
|
|
|
|
- Starrole: 1,
|
|
|
|
- Dontseeit: 1,
|
|
|
|
- Dontseeme: 1,
|
|
|
|
- Lag: 1,
|
|
|
|
- Gid: "gid_1",
|
|
|
|
- Gname: "gname_1",
|
|
|
|
- V3: 1,
|
|
|
|
- Ctype: 1,
|
|
|
|
- Cname: "cname_1",
|
|
|
|
- Cage: 25,
|
|
|
|
- Carea: "carea_1",
|
|
|
|
- Cc: "cc_1",
|
|
|
|
- Phone: "phone_1",
|
|
|
|
- Cbirthday: "cbirthday_1",
|
|
|
|
- Cbirtharea: "cbirtharea_1",
|
|
|
|
- CidcardNo: "cidcardno_1",
|
|
|
|
- Ctitle: "ctitle_1",
|
|
|
|
- Edges: ent.ContactEdges{
|
|
|
|
- ContactRelationships: []*ent.LabelRelationship{
|
|
|
|
- {
|
|
|
|
- LabelID: 1,
|
|
|
|
- Edges: ent.LabelRelationshipEdges{
|
|
|
|
- Labels: &ent.Label{
|
|
|
|
- Name: "label_1",
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- expectedWx := &ent.Wx{
|
|
|
|
- Wxid: "wxid_1",
|
|
|
|
- Nickname: "wx_nickname_1",
|
|
|
|
- BlockList: []string{"block_1"},
|
|
|
|
- GroupBlockList: []string{"group_block_1"},
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- expectedPage := &ent.ContactPage{
|
|
|
|
- List: []*ent.Contact{expectedContact},
|
|
|
|
- PageDetails: ent.PageDetails{
|
|
|
|
- Total: 1,
|
|
|
|
- },
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- mockContactQuery.On("Where", mock.Anything).Return(mockContactQuery)
|
|
|
|
- mockContactQuery.On("WithContactRelationships", mock.Anything).Return(mockContactQuery)
|
|
|
|
- mockContactQuery.On("Page", ctx, 1, 10).Return(expectedPage, nil)
|
|
|
|
-
|
|
|
|
- mockWxQuery.On("Where", mock.Anything).Return(mockWxQuery)
|
|
|
|
- mockWxQuery.On("All", ctx).Return([]*ent.Wx{expectedWx}, nil)
|
|
|
|
-
|
|
|
|
- // Call the GetContactList method
|
|
|
|
- req := &types.ContactListReq{
|
|
|
|
- Page: 1,
|
|
|
|
- PageSize: 10,
|
|
|
|
- }
|
|
|
|
- resp, err := logic.GetContactList(req)
|
|
|
|
-
|
|
|
|
- // Assertions
|
|
|
|
- assert.NoError(t, err)
|
|
|
|
- assert.Equal(t, errormsg.Success, resp.Msg)
|
|
|
|
- assert.Equal(t, int64(1), resp.Data.Total)
|
|
|
|
- assert.Len(t, resp.Data.Data, 1)
|
|
|
|
- assert.Equal(t, expectedContact.ID, *resp.Data.Data[0].Id)
|
|
|
|
- assert.Equal(t, expectedContact.WxWxid, *resp.Data.Data[0].WxWxid)
|
|
|
|
- assert.Equal(t, expectedWx.Nickname, *resp.Data.Data[0].WxWxidNickname)
|
|
|
|
- assert.Len(t, resp.Data.Data[0].LabelRelationships, 1)
|
|
|
|
- assert.Equal(t, "label_1", *resp.Data.Data[0].LabelRelationships[0].Label)
|
|
|
|
-}
|
|
|