mirror of
https://github.com/absmach/supermq.git
synced 2026-06-23 07:40:17 +00:00
MG-2166 - Generate mocks with mockery for readers (#2167)
Signed-off-by: JeffMboya <jangina.mboya@gmail.com>
This commit is contained in:
+625
-485
File diff suppressed because it is too large
Load Diff
@@ -22,6 +22,8 @@ const (
|
||||
var ErrReadMessages = errors.New("failed to read messages from database")
|
||||
|
||||
// MessageRepository specifies message reader API.
|
||||
//
|
||||
//go:generate mockery --name MessageRepository --output=./mocks --filename messages.go --quiet --note "Copyright (c) Abstract Machines"
|
||||
type MessageRepository interface {
|
||||
// ReadAll skips given number of messages for given channel and returns next
|
||||
// limited number of messages.
|
||||
|
||||
+40
-151
@@ -1,168 +1,57 @@
|
||||
// Code generated by mockery v2.42.1. DO NOT EDIT.
|
||||
|
||||
// Copyright (c) Abstract Machines
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package mocks
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"sync"
|
||||
|
||||
"github.com/absmach/magistrala/pkg/transformers/senml"
|
||||
"github.com/absmach/magistrala/readers"
|
||||
readers "github.com/absmach/magistrala/readers"
|
||||
mock "github.com/stretchr/testify/mock"
|
||||
)
|
||||
|
||||
var _ readers.MessageRepository = (*messageRepositoryMock)(nil)
|
||||
|
||||
type messageRepositoryMock struct {
|
||||
mutex sync.Mutex
|
||||
messages map[string][]readers.Message
|
||||
// MessageRepository is an autogenerated mock type for the MessageRepository type
|
||||
type MessageRepository struct {
|
||||
mock.Mock
|
||||
}
|
||||
|
||||
// NewMessageRepository returns mock implementation of message repository.
|
||||
func NewMessageRepository(chanID string, messages []readers.Message) readers.MessageRepository {
|
||||
repo := map[string][]readers.Message{
|
||||
chanID: messages,
|
||||
// ReadAll provides a mock function with given fields: chanID, pm
|
||||
func (_m *MessageRepository) ReadAll(chanID string, pm readers.PageMetadata) (readers.MessagesPage, error) {
|
||||
ret := _m.Called(chanID, pm)
|
||||
|
||||
if len(ret) == 0 {
|
||||
panic("no return value specified for ReadAll")
|
||||
}
|
||||
|
||||
return &messageRepositoryMock{
|
||||
mutex: sync.Mutex{},
|
||||
messages: repo,
|
||||
var r0 readers.MessagesPage
|
||||
var r1 error
|
||||
if rf, ok := ret.Get(0).(func(string, readers.PageMetadata) (readers.MessagesPage, error)); ok {
|
||||
return rf(chanID, pm)
|
||||
}
|
||||
if rf, ok := ret.Get(0).(func(string, readers.PageMetadata) readers.MessagesPage); ok {
|
||||
r0 = rf(chanID, pm)
|
||||
} else {
|
||||
r0 = ret.Get(0).(readers.MessagesPage)
|
||||
}
|
||||
|
||||
if rf, ok := ret.Get(1).(func(string, readers.PageMetadata) error); ok {
|
||||
r1 = rf(chanID, pm)
|
||||
} else {
|
||||
r1 = ret.Error(1)
|
||||
}
|
||||
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
func (repo *messageRepositoryMock) ReadAll(chanID string, rpm readers.PageMetadata) (readers.MessagesPage, error) {
|
||||
repo.mutex.Lock()
|
||||
defer repo.mutex.Unlock()
|
||||
// NewMessageRepository creates a new instance of MessageRepository. 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 NewMessageRepository(t interface {
|
||||
mock.TestingT
|
||||
Cleanup(func())
|
||||
}) *MessageRepository {
|
||||
mock := &MessageRepository{}
|
||||
mock.Mock.Test(t)
|
||||
|
||||
if rpm.Format != "" && rpm.Format != "messages" {
|
||||
return readers.MessagesPage{}, nil
|
||||
}
|
||||
t.Cleanup(func() { mock.AssertExpectations(t) })
|
||||
|
||||
var query map[string]interface{}
|
||||
meta, err := json.Marshal(rpm)
|
||||
if err != nil {
|
||||
return readers.MessagesPage{}, err
|
||||
}
|
||||
if err := json.Unmarshal(meta, &query); err != nil {
|
||||
return readers.MessagesPage{}, err
|
||||
}
|
||||
|
||||
var msgs []readers.Message
|
||||
for _, m := range repo.messages[chanID] {
|
||||
msg := m.(senml.Message)
|
||||
|
||||
ok := true
|
||||
|
||||
for name := range query {
|
||||
switch name {
|
||||
case "subtopic":
|
||||
if rpm.Subtopic != msg.Subtopic {
|
||||
ok = false
|
||||
}
|
||||
case "publisher":
|
||||
if rpm.Publisher != msg.Publisher {
|
||||
ok = false
|
||||
}
|
||||
case "name":
|
||||
if rpm.Name != msg.Name {
|
||||
ok = false
|
||||
}
|
||||
case "protocol":
|
||||
if rpm.Protocol != msg.Protocol {
|
||||
ok = false
|
||||
}
|
||||
case "v":
|
||||
if msg.Value == nil {
|
||||
ok = false
|
||||
}
|
||||
|
||||
val, okQuery := query["comparator"]
|
||||
if okQuery {
|
||||
switch val.(string) {
|
||||
case readers.LowerThanKey:
|
||||
if msg.Value != nil &&
|
||||
*msg.Value >= rpm.Value {
|
||||
ok = false
|
||||
}
|
||||
case readers.LowerThanEqualKey:
|
||||
if msg.Value != nil &&
|
||||
*msg.Value > rpm.Value {
|
||||
ok = false
|
||||
}
|
||||
case readers.GreaterThanKey:
|
||||
if msg.Value != nil &&
|
||||
*msg.Value <= rpm.Value {
|
||||
ok = false
|
||||
}
|
||||
case readers.GreaterThanEqualKey:
|
||||
if msg.Value != nil &&
|
||||
*msg.Value < rpm.Value {
|
||||
ok = false
|
||||
}
|
||||
case readers.EqualKey:
|
||||
default:
|
||||
if msg.Value != nil &&
|
||||
*msg.Value != rpm.Value {
|
||||
ok = false
|
||||
}
|
||||
}
|
||||
}
|
||||
case "vb":
|
||||
if msg.BoolValue == nil ||
|
||||
(msg.BoolValue != nil &&
|
||||
*msg.BoolValue != rpm.BoolValue) {
|
||||
ok = false
|
||||
}
|
||||
case "vs":
|
||||
if msg.StringValue == nil ||
|
||||
(msg.StringValue != nil &&
|
||||
*msg.StringValue != rpm.StringValue) {
|
||||
ok = false
|
||||
}
|
||||
case "vd":
|
||||
if msg.DataValue == nil ||
|
||||
(msg.DataValue != nil &&
|
||||
*msg.DataValue != rpm.DataValue) {
|
||||
ok = false
|
||||
}
|
||||
case "from":
|
||||
if msg.Time < rpm.From {
|
||||
ok = false
|
||||
}
|
||||
case "to":
|
||||
if msg.Time >= rpm.To {
|
||||
ok = false
|
||||
}
|
||||
}
|
||||
|
||||
if !ok {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if ok {
|
||||
msgs = append(msgs, m)
|
||||
}
|
||||
}
|
||||
|
||||
numOfMessages := uint64(len(msgs))
|
||||
|
||||
if rpm.Offset >= numOfMessages {
|
||||
return readers.MessagesPage{}, nil
|
||||
}
|
||||
|
||||
if rpm.Limit < 1 {
|
||||
return readers.MessagesPage{}, nil
|
||||
}
|
||||
|
||||
end := rpm.Offset + rpm.Limit
|
||||
if rpm.Offset+rpm.Limit > numOfMessages {
|
||||
end = numOfMessages
|
||||
}
|
||||
|
||||
return readers.MessagesPage{
|
||||
PageMetadata: rpm,
|
||||
Total: uint64(len(msgs)),
|
||||
Messages: msgs[rpm.Offset:end],
|
||||
}, nil
|
||||
return mock
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user