public void ExternalMessageHandler_Calls_ExternalMessageEngine_Process_With_Payload()
        {
            //Arrange
            var payload = new ExternalMessagePayload
            {
                MessageType         = ExternalMessageType.CancelOrder,
                Id                  = Guid.NewGuid().ToString(),
                SourceSystemId      = 1,
                ParameterDictionary = new Dictionary <string, string>
                {
                    { "key1", "value1" }
                },
                UserName = "******"
            };
            Expression <Func <ExternalMessagePayload, bool> > matchedParam =
                p =>
                p.MessageType == payload.MessageType &&
                p.Id == payload.Id &&
                p.UserName == payload.UserName;

            //Act
            //mimic message event with json string as payload
            _handlerToTest.Handle(JsonConvert.SerializeObject(payload));

            //Assert
            _externalMessageEngineMock.Verify(m => m.Process(It.Is(matchedParam)), Times.Once);
        }
 public static void Process(this IExternalMessageEngine externalMessageEngineEngine, ExternalMessagePayload payload)
 {
     // TODO: some temporary implementation
 }
 public void HandleExternalMessage(IExternalMessageEngine orderEngine, ExternalMessagePayload payload)
 {
 }
 public void Process(IExternalMessageEngine externalMessageEngine, ExternalMessagePayload payload)
 {
     externalMessageEngine.Process(payload);
 }