From 0405148edb87760255a728e56cfac181a9be7310 Mon Sep 17 00:00:00 2001 From: lendral3n Date: Fri, 16 Feb 2024 08:58:30 +0700 Subject: [PATCH] testing kos 28% --- features/booking/service/service.go | 1 - features/booking/service/service_test.go | 55 ++++++++++++++++++++ mocks/ChatDataInterface.go | 66 ++++++++++++++++++++---- mocks/ChatServiceInterface.go | 66 ++++++++++++++++++++---- 4 files changed, 169 insertions(+), 19 deletions(-) create mode 100644 features/booking/service/service_test.go diff --git a/features/booking/service/service.go b/features/booking/service/service.go index cb11877..a071bb7 100644 --- a/features/booking/service/service.go +++ b/features/booking/service/service.go @@ -3,7 +3,6 @@ package service import ( "KosKita/features/booking" "errors" - // _midtransService "BE-REPO-20/features/midtrans/service" ) type bookingService struct { diff --git a/features/booking/service/service_test.go b/features/booking/service/service_test.go new file mode 100644 index 0000000..4d4a9b6 --- /dev/null +++ b/features/booking/service/service_test.go @@ -0,0 +1,55 @@ +package service + +import ( + "KosKita/features/booking" + "KosKita/mocks" + "errors" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestPostBooking(t *testing.T) { + repo := new(mocks.BookDataInterface) + srv := NewBooking(repo) + + input := booking.BookingCore{ + ID: "10843", + UserID: 1, + BoardingHouseId: 1, + StartDate: "2024-01-01", + EndDate: "2024-12-31", + PaymentType: "credit_card", + Total: 100000, + Bank: "BCA", + } + + // response := booking.BookingCore{ + // ID: "10843", + // StartDate: "2024-01-01", + // EndDate: "2024-12-31", + // PaymentType: "credit_card", + // Total: 100000, + // Status: "pending", + // Bank: "BCA", + // VirtualNumber: "1234567890", + // ExpiredAt: "2024-12-31", + // } + + t.Run("invalid user id", func(t *testing.T) { + _, err := srv.PostBooking(0, input) + + assert.Error(t, err) + assert.EqualError(t, err, "invalid id") + }) + + t.Run("error from repository", func(t *testing.T) { + repo.On("PostBooking", uint(1), input).Return(nil, errors.New("database error")) + + _, err := srv.PostBooking(1, input) + + assert.Error(t, err) + assert.EqualError(t, err, "database error") + }) + +} diff --git a/mocks/ChatDataInterface.go b/mocks/ChatDataInterface.go index d42c527..f65145a 100644 --- a/mocks/ChatDataInterface.go +++ b/mocks/ChatDataInterface.go @@ -13,9 +13,9 @@ type ChatDataInterface struct { mock.Mock } -// CreateMessage provides a mock function with given fields: userIdLogin, input -func (_m *ChatDataInterface) CreateMessage(userIdLogin int, input chat.Core) (chat.Core, error) { - ret := _m.Called(userIdLogin, input) +// CreateMessage provides a mock function with given fields: receiverID, senderID, input +func (_m *ChatDataInterface) CreateMessage(receiverID int, senderID int, input chat.Core) (chat.Core, error) { + ret := _m.Called(receiverID, senderID, input) if len(ret) == 0 { panic("no return value specified for CreateMessage") @@ -23,17 +23,17 @@ func (_m *ChatDataInterface) CreateMessage(userIdLogin int, input chat.Core) (ch var r0 chat.Core var r1 error - if rf, ok := ret.Get(0).(func(int, chat.Core) (chat.Core, error)); ok { - return rf(userIdLogin, input) + if rf, ok := ret.Get(0).(func(int, int, chat.Core) (chat.Core, error)); ok { + return rf(receiverID, senderID, input) } - if rf, ok := ret.Get(0).(func(int, chat.Core) chat.Core); ok { - r0 = rf(userIdLogin, input) + if rf, ok := ret.Get(0).(func(int, int, chat.Core) chat.Core); ok { + r0 = rf(receiverID, senderID, input) } else { r0 = ret.Get(0).(chat.Core) } - if rf, ok := ret.Get(1).(func(int, chat.Core) error); ok { - r1 = rf(userIdLogin, input) + if rf, ok := ret.Get(1).(func(int, int, chat.Core) error); ok { + r1 = rf(receiverID, senderID, input) } else { r1 = ret.Error(1) } @@ -41,6 +41,24 @@ func (_m *ChatDataInterface) CreateMessage(userIdLogin int, input chat.Core) (ch return r0, r1 } +// CreateRoom provides a mock function with given fields: roomID, receiverID, senderID +func (_m *ChatDataInterface) CreateRoom(roomID string, receiverID int, senderID int) error { + ret := _m.Called(roomID, receiverID, senderID) + + if len(ret) == 0 { + panic("no return value specified for CreateRoom") + } + + var r0 error + if rf, ok := ret.Get(0).(func(string, int, int) error); ok { + r0 = rf(roomID, receiverID, senderID) + } else { + r0 = ret.Error(0) + } + + return r0 +} + // GetMessage provides a mock function with given fields: roomId func (_m *ChatDataInterface) GetMessage(roomId string) ([]chat.Core, error) { ret := _m.Called(roomId) @@ -71,6 +89,36 @@ func (_m *ChatDataInterface) GetMessage(roomId string) ([]chat.Core, error) { return r0, r1 } +// GetRoom provides a mock function with given fields: userIdlogin +func (_m *ChatDataInterface) GetRoom(userIdlogin int) ([]chat.Core, error) { + ret := _m.Called(userIdlogin) + + if len(ret) == 0 { + panic("no return value specified for GetRoom") + } + + var r0 []chat.Core + var r1 error + if rf, ok := ret.Get(0).(func(int) ([]chat.Core, error)); ok { + return rf(userIdlogin) + } + if rf, ok := ret.Get(0).(func(int) []chat.Core); ok { + r0 = rf(userIdlogin) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]chat.Core) + } + } + + if rf, ok := ret.Get(1).(func(int) error); ok { + r1 = rf(userIdlogin) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + // NewChatDataInterface creates a new instance of ChatDataInterface. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. // The first argument is typically a *testing.T value. func NewChatDataInterface(t interface { diff --git a/mocks/ChatServiceInterface.go b/mocks/ChatServiceInterface.go index 121fca1..98676d3 100644 --- a/mocks/ChatServiceInterface.go +++ b/mocks/ChatServiceInterface.go @@ -13,9 +13,9 @@ type ChatServiceInterface struct { mock.Mock } -// CreateChat provides a mock function with given fields: userIdLogin, input -func (_m *ChatServiceInterface) CreateChat(userIdLogin int, input chat.Core) (chat.Core, error) { - ret := _m.Called(userIdLogin, input) +// CreateChat provides a mock function with given fields: receiverID, senderID, input +func (_m *ChatServiceInterface) CreateChat(receiverID int, senderID int, input chat.Core) (chat.Core, error) { + ret := _m.Called(receiverID, senderID, input) if len(ret) == 0 { panic("no return value specified for CreateChat") @@ -23,17 +23,17 @@ func (_m *ChatServiceInterface) CreateChat(userIdLogin int, input chat.Core) (ch var r0 chat.Core var r1 error - if rf, ok := ret.Get(0).(func(int, chat.Core) (chat.Core, error)); ok { - return rf(userIdLogin, input) + if rf, ok := ret.Get(0).(func(int, int, chat.Core) (chat.Core, error)); ok { + return rf(receiverID, senderID, input) } - if rf, ok := ret.Get(0).(func(int, chat.Core) chat.Core); ok { - r0 = rf(userIdLogin, input) + if rf, ok := ret.Get(0).(func(int, int, chat.Core) chat.Core); ok { + r0 = rf(receiverID, senderID, input) } else { r0 = ret.Get(0).(chat.Core) } - if rf, ok := ret.Get(1).(func(int, chat.Core) error); ok { - r1 = rf(userIdLogin, input) + if rf, ok := ret.Get(1).(func(int, int, chat.Core) error); ok { + r1 = rf(receiverID, senderID, input) } else { r1 = ret.Error(1) } @@ -41,6 +41,24 @@ func (_m *ChatServiceInterface) CreateChat(userIdLogin int, input chat.Core) (ch return r0, r1 } +// CreateRoom provides a mock function with given fields: roomID, receiverID, senderID +func (_m *ChatServiceInterface) CreateRoom(roomID string, receiverID int, senderID int) error { + ret := _m.Called(roomID, receiverID, senderID) + + if len(ret) == 0 { + panic("no return value specified for CreateRoom") + } + + var r0 error + if rf, ok := ret.Get(0).(func(string, int, int) error); ok { + r0 = rf(roomID, receiverID, senderID) + } else { + r0 = ret.Error(0) + } + + return r0 +} + // GetMessage provides a mock function with given fields: roomId func (_m *ChatServiceInterface) GetMessage(roomId string) ([]chat.Core, error) { ret := _m.Called(roomId) @@ -71,6 +89,36 @@ func (_m *ChatServiceInterface) GetMessage(roomId string) ([]chat.Core, error) { return r0, r1 } +// GetRoom provides a mock function with given fields: userIdlogin +func (_m *ChatServiceInterface) GetRoom(userIdlogin int) ([]chat.Core, error) { + ret := _m.Called(userIdlogin) + + if len(ret) == 0 { + panic("no return value specified for GetRoom") + } + + var r0 []chat.Core + var r1 error + if rf, ok := ret.Get(0).(func(int) ([]chat.Core, error)); ok { + return rf(userIdlogin) + } + if rf, ok := ret.Get(0).(func(int) []chat.Core); ok { + r0 = rf(userIdlogin) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]chat.Core) + } + } + + if rf, ok := ret.Get(1).(func(int) error); ok { + r1 = rf(userIdlogin) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + // NewChatServiceInterface creates a new instance of ChatServiceInterface. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. // The first argument is typically a *testing.T value. func NewChatServiceInterface(t interface {