public async Task Upon_label_image_added_message_received_and_an_error_occur_should_log()
        {
            //Arrange
            MessageHandlerOptions messageHandlerOptions = null;

            _queue.When(q => q.RegisterMessageHandler(Arg.Any <Func <Message, CancellationToken, Task> >(), Arg.Any <MessageHandlerOptions>()))
            .Do(c => messageHandlerOptions = c.Arg <MessageHandlerOptions>());


            var labelImageAddedSubscriber = new LabelImageAddedSubscriber(_mapper, _mergeService, _queue, _unitOfWork);

            //Act
            await messageHandlerOptions.ExceptionReceivedHandler(_fixture.Create <ExceptionReceivedEventArgs>());

            //Assert
            await _unitOfWork.LogRepository.Received().SaveAsync(Arg.Any <string>());
        }
        public async Task Upon_label_image_added_message_received_should_call_merge_service()
        {
            //Arrange
            Func <Message, CancellationToken, Task> call = null;

            _queue.When(q => q.RegisterMessageHandler(Arg.Any <Func <Message, CancellationToken, Task> >(), Arg.Any <MessageHandlerOptions>()))
            .Do(c => call = c.Arg <Func <Message, CancellationToken, Task> >());


            var labelImageAddedSubscriber = new LabelImageAddedSubscriber(_mapper, _mergeService, _queue, _unitOfWork);

            var messageObject = _fixture.Create <LabelImageAddedMessage>();
            var messageBody   = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(messageObject));

            //Act
            await call(new Message(messageBody), new CancellationToken());

            //Assert
            await _mergeService.Received().UpdateProductsMergesAsync(Arg.Any <Ingredient>());
        }