package tests import ( "context" authpb "git.techease.ru/Smart-search/smart-search-back/pkg/pb/auth" requestpb "git.techease.ru/Smart-search/smart-search-back/pkg/pb/request" supplierpb "git.techease.ru/Smart-search/smart-search-back/pkg/pb/supplier" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) func (s *IntegrationSuite) TestSupplierHandler_ExportExcelWithNonExistentRequest() { req := &supplierpb.ExportExcelRequest{ RequestId: "999999", UserId: 1, } resp, err := s.supplierClient.ExportExcel(context.Background(), req) s.Error(err) s.Nil(resp) st, ok := status.FromError(err) s.True(ok) s.Contains([]codes.Code{codes.NotFound, codes.Internal, codes.Unknown, codes.InvalidArgument}, st.Code()) } func (s *IntegrationSuite) TestSupplierHandler_ExportExcelWithInvalidUser() { req := &supplierpb.ExportExcelRequest{ RequestId: "1", UserId: 999999, } resp, err := s.supplierClient.ExportExcel(context.Background(), req) if err != nil { st, ok := status.FromError(err) s.True(ok) s.Contains([]codes.Code{codes.NotFound, codes.PermissionDenied, codes.Internal, codes.Unknown, codes.InvalidArgument}, st.Code()) return } s.NotNil(resp) } func (s *IntegrationSuite) TestSupplierHandler_ExportExcelWithValidRequest() { ctx := context.Background() loginReq := &authpb.LoginRequest{ Email: "test@example.com", Password: "testpassword", Ip: "127.0.0.1", UserAgent: "integration-test", } loginResp, err := s.authClient.Login(ctx, loginReq) s.NoError(err) validateReq := &authpb.ValidateRequest{ AccessToken: loginResp.AccessToken, } validateResp, err := s.authClient.Validate(ctx, validateReq) s.NoError(err) createReq := &requestpb.CreateTZRequest{ UserId: validateResp.UserId, RequestTxt: "Нужны поставщики кирпича", } createResp, err := s.requestClient.CreateTZ(ctx, createReq) if err != nil { s.T().Skip("Cannot test ExportExcel without CreateTZ") return } exportReq := &supplierpb.ExportExcelRequest{ RequestId: createResp.RequestId, UserId: validateResp.UserId, } exportResp, err := s.supplierClient.ExportExcel(ctx, exportReq) if err != nil { st, ok := status.FromError(err) s.True(ok) s.Contains([]codes.Code{codes.NotFound, codes.Internal}, st.Code()) return } s.NotNil(exportResp) s.NotEmpty(exportResp.FileName) s.Equal("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", exportResp.MimeType) } func (s *IntegrationSuite) TestSupplierHandler_ExportExcelWithSuppliers() { ctx := context.Background() loginReq := &authpb.LoginRequest{ Email: "test@example.com", Password: "testpassword", Ip: "127.0.0.1", UserAgent: "integration-test", } loginResp, err := s.authClient.Login(ctx, loginReq) s.NoError(err) validateReq := &authpb.ValidateRequest{ AccessToken: loginResp.AccessToken, } validateResp, err := s.authClient.Validate(ctx, validateReq) s.NoError(err) userID := validateResp.UserId createReq := &requestpb.CreateTZRequest{ UserId: userID, RequestTxt: "Нужны поставщики офисной мебели для большого офиса", } createResp, err := s.requestClient.CreateTZ(ctx, createReq) s.NoError(err) s.NotEmpty(createResp.RequestId) requestID := createResp.RequestId approveReq := &requestpb.ApproveTZRequest{ RequestId: requestID, FinalTz: "Техническое задание на поставку офисной мебели", UserId: userID, } approveResp, err := s.requestClient.ApproveTZ(ctx, approveReq) s.NoError(err) s.NotEmpty(approveResp.RequestId) exportReq := &supplierpb.ExportExcelRequest{ RequestId: requestID, UserId: userID, } exportResp, err := s.supplierClient.ExportExcel(ctx, exportReq) s.NoError(err) s.NotNil(exportResp) s.NotEmpty(exportResp.FileName) s.NotEmpty(exportResp.FileData) s.Equal("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", exportResp.MimeType) s.Greater(len(exportResp.FileData), 1000) }