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>());
        }
        public async Task Upon_product_changed_message_received_should_call_merge_service()
        {
            //Arrange
            Func <Message, CancellationToken, Task> call = null;

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


            var productChangedSubscriber = new ProductChangedSubscriber(_mapper, _mergeService, _subscriptionClient, _unitOfWork);

            var messageObject = _fixture.Create <ProductChangedMessage>();

            messageObject.State = ProductState.Added | ProductState.Modified;
            var messageBody = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(messageObject));

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

            //Assert
            await _mergeService.Received().MergeProductWithIngredientsAsync(Arg.Any <ProductToGet>());
        }