mirror of
https://github.com/3ybactuk/marketplace-go-service-project.git
synced 2025-10-30 22:13:44 +03:00
[hw-3] loms service
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
@@ -16,13 +17,17 @@ import (
|
||||
"github.com/ozontech/allure-go/pkg/framework/suite"
|
||||
"github.com/testcontainers/testcontainers-go"
|
||||
"github.com/testcontainers/testcontainers-go/wait"
|
||||
"google.golang.org/grpc"
|
||||
|
||||
lomsService "route256/cart/internal/adapter/client/loms"
|
||||
productsService "route256/cart/internal/adapter/client/products"
|
||||
"route256/cart/internal/app"
|
||||
"route256/cart/internal/domain/cart/repository"
|
||||
cartService "route256/cart/internal/domain/cart/service"
|
||||
"route256/cart/internal/domain/entity"
|
||||
"route256/cart/internal/domain/model"
|
||||
productsService "route256/cart/internal/domain/products/service"
|
||||
"route256/cart/internal/domain/repository"
|
||||
cartService "route256/cart/internal/domain/service"
|
||||
|
||||
pbLoms "route256/pkg/api/loms/v1"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -34,12 +39,27 @@ const (
|
||||
testUID = entity.UID(1337)
|
||||
)
|
||||
|
||||
type lomsServerMock struct {
|
||||
pbLoms.UnimplementedLOMSServer
|
||||
}
|
||||
|
||||
func (lomsServerMock) OrderCreate(_ context.Context, _ *pbLoms.OrderCreateRequest) (*pbLoms.OrderCreateResponse, error) {
|
||||
return &pbLoms.OrderCreateResponse{OrderId: 1}, nil
|
||||
}
|
||||
|
||||
func (lomsServerMock) StocksInfo(_ context.Context, _ *pbLoms.StocksInfoRequest) (*pbLoms.StocksInfoResponse, error) {
|
||||
return &pbLoms.StocksInfoResponse{Count: 1000}, nil
|
||||
}
|
||||
|
||||
type CartHandlerSuite struct {
|
||||
suite.Suite
|
||||
|
||||
psContainer testcontainers.Container
|
||||
server *httptest.Server
|
||||
|
||||
lomsSrv *grpc.Server
|
||||
lomsConn *grpc.ClientConn
|
||||
|
||||
server *httptest.Server
|
||||
cartSvc *cartService.CartService
|
||||
}
|
||||
|
||||
@@ -72,6 +92,20 @@ func (s *CartHandlerSuite) BeforeAll(t provider.T) {
|
||||
productURL = endpoint
|
||||
})
|
||||
|
||||
t.WithNewStep("start loms grpc server", func(st provider.StepCtx) {
|
||||
lis, err := net.Listen("tcp", "127.0.0.1:0")
|
||||
st.Require().NoError(err)
|
||||
|
||||
s.lomsSrv = grpc.NewServer()
|
||||
pbLoms.RegisterLOMSServer(s.lomsSrv, &lomsServerMock{})
|
||||
|
||||
go s.lomsSrv.Serve(lis)
|
||||
|
||||
conn, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure(), grpc.WithBlock())
|
||||
st.Require().NoError(err)
|
||||
s.lomsConn = conn
|
||||
})
|
||||
|
||||
t.WithNewStep("init cart-service", func(sCtx provider.StepCtx) {
|
||||
prodClient := productsService.NewProductService(
|
||||
*http.DefaultClient,
|
||||
@@ -79,8 +113,10 @@ func (s *CartHandlerSuite) BeforeAll(t provider.T) {
|
||||
productURL,
|
||||
)
|
||||
|
||||
lomsClient := pbLoms.NewLOMSClient(s.lomsConn)
|
||||
|
||||
repo := repository.NewInMemoryRepository(10)
|
||||
s.cartSvc = cartService.NewCartService(repo, prodClient)
|
||||
s.cartSvc = cartService.NewCartService(repo, prodClient, lomsService.NewLomsService(lomsClient))
|
||||
|
||||
appSrv := &app.App{}
|
||||
|
||||
@@ -89,8 +125,11 @@ func (s *CartHandlerSuite) BeforeAll(t provider.T) {
|
||||
}
|
||||
|
||||
func (s *CartHandlerSuite) AfterAll(t provider.T) {
|
||||
_ = s.psContainer.Terminate(context.Background())
|
||||
s.server.Close()
|
||||
s.lomsSrv.Stop()
|
||||
s.lomsConn.Close()
|
||||
|
||||
_ = s.psContainer.Terminate(context.Background())
|
||||
}
|
||||
|
||||
// DELETE /user/<user_id>/cart/<sku_id>
|
||||
|
||||
Reference in New Issue
Block a user