// Copyright (c) Mainflux // SPDX-License-Identifier: Apache-2.0 package mocks import ( "sync" "github.com/mainflux/mainflux/readers" "github.com/mainflux/mainflux/transformers/senml" ) var _ readers.MessageRepository = (*messageRepositoryMock)(nil) type messageRepositoryMock struct { mutex sync.Mutex messages map[string][]senml.Message } // NewMessageRepository returns mock implementation of message repository. func NewMessageRepository(messages map[string][]senml.Message) readers.MessageRepository { return &messageRepositoryMock{ mutex: sync.Mutex{}, messages: messages, } } func (repo *messageRepositoryMock) ReadAll(chanID string, offset, limit uint64, query map[string]string) (readers.MessagesPage, error) { repo.mutex.Lock() defer repo.mutex.Unlock() end := offset + limit numOfMessages := uint64(len(repo.messages[chanID])) if offset < 0 || offset >= numOfMessages { return readers.MessagesPage{}, nil } if limit < 1 { return readers.MessagesPage{}, nil } if offset+limit > numOfMessages { end = numOfMessages } return readers.MessagesPage{ Total: numOfMessages, Limit: limit, Offset: offset, Messages: repo.messages[chanID][offset:end], }, nil }