[hw-6] add notifier service, kafka

This commit is contained in:
Никита Шубин
2025-07-17 19:20:27 +00:00
parent 424d6905da
commit 6e1ad86128
33 changed files with 1412 additions and 92 deletions

View File

@@ -40,6 +40,12 @@ func (t *mockTxManager) ReadWithRepeatableRead(ctx context.Context, fn func(ctx
return fn(ctx)
}
type mockKafkaProducer struct{}
func (kp mockKafkaProducer) Send(_ context.Context, _ entity.ID, _ string) error {
return nil
}
func TestMain(m *testing.M) {
goleak.VerifyTestMain(m)
}
@@ -138,8 +144,7 @@ func TestLomsService_OrderCreate(t *testing.T) {
orders: mock.NewOrderRepositoryMock(mc).
OrderCreateMock.Return(1, nil).
OrderSetStatusMock.Return(errors.New("status update error")),
stocks: mock.NewStockRepositoryMock(mc).
StockReserveMock.Return(errors.New("reservation error")),
stocks: mock.NewStockRepositoryMock(mc),
},
args: args{
req: goodReq,
@@ -152,8 +157,7 @@ func TestLomsService_OrderCreate(t *testing.T) {
orders: mock.NewOrderRepositoryMock(mc).
OrderCreateMock.Return(1, nil).
OrderSetStatusMock.Return(errors.New("unexpected error")),
stocks: mock.NewStockRepositoryMock(mc).
StockReserveMock.Return(nil),
stocks: mock.NewStockRepositoryMock(mc),
},
args: args{
req: goodReq,
@@ -167,7 +171,7 @@ func TestLomsService_OrderCreate(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
svc := NewLomsService(tt.fields.orders, tt.fields.stocks, &mockTxManager{})
svc := NewLomsService(tt.fields.orders, tt.fields.stocks, &mockTxManager{}, &mockKafkaProducer{})
_, err := svc.OrderCreate(ctx, tt.args.req)
tt.wantErr(t, err)
})
@@ -278,7 +282,7 @@ func TestLomsService_OrderPay(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
svc := NewLomsService(tt.fields.orders, tt.fields.stocks, &mockTxManager{})
svc := NewLomsService(tt.fields.orders, tt.fields.stocks, &mockTxManager{}, &mockKafkaProducer{})
err := svc.OrderPay(ctx, tt.args.id)
tt.wantErr(t, err)
})
@@ -292,6 +296,7 @@ func TestLomsService_OrderInfoBadInput(t *testing.T) {
nil,
nil,
&mockTxManager{},
&mockKafkaProducer{},
)
_, err := svc.OrderInfo(context.Background(), 0)
@@ -313,6 +318,7 @@ func TestLomsService_OrderInfoSuccess(t *testing.T) {
mock.NewOrderRepositoryMock(mc).OrderGetByIDMock.Return(order, nil),
nil,
&mockTxManager{},
&mockKafkaProducer{},
)
gotOrder, err := svc.OrderInfo(context.Background(), 123)
@@ -414,7 +420,7 @@ func TestLomsService_OrderCancel(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
svc := NewLomsService(tt.fields.orders, tt.fields.stocks, &mockTxManager{})
svc := NewLomsService(tt.fields.orders, tt.fields.stocks, &mockTxManager{}, &mockKafkaProducer{})
err := svc.OrderCancel(ctx, tt.args.id)
tt.wantErr(t, err)
})
@@ -481,7 +487,7 @@ func TestLomsService_StocksInfo(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
svc := NewLomsService(nil, tt.fields.stocks, &mockTxManager{})
svc := NewLomsService(nil, tt.fields.stocks, &mockTxManager{}, &mockKafkaProducer{})
got, err := svc.StocksInfo(ctx, tt.args.sku)
tt.wantErr(t, err)
if err == nil {