public void typed_failing_tryfire_command_should_fail() { var bus = new CommandBus("local"); const int data = 12356; const string errText = @"I knew this would happen."; long gotResponse = 0; long responseData = 0; bus.Subscribe(new AdHocTypedCommandHandler <TestCommands.TypedTestCommand, TestCommands.TestFailedCommandResponse>( cmd => new TestCommands.TestFailedCommandResponse(cmd, new CommandException(errText, cmd), data))); bus.Subscribe(new AdHocHandler <TestCommands.TestFailedCommandResponse>( cmd => { Interlocked.Exchange(ref gotResponse, 1); Interlocked.Exchange(ref responseData, cmd.Data); } )); CommandResponse response; var command = new TestCommands.TypedTestCommand(Guid.NewGuid(), null); var passed = bus.TryFire(command, out response); Assert.False(passed, "Expected false return"); Assert.IsType(typeof(TestCommands.TestFailedCommandResponse), response); Assert.IsType(typeof(CommandException), ((Fail)response).Exception); Assert.Equal($"{command.GetType().Name}: {errText}", ((Fail)response).Exception.Message); Assert.Equal(data, ((TestCommands.TestFailedCommandResponse)response).Data); Assert.IsOrBecomesTrue(() => Interlocked.Read(ref gotResponse) == 1, null, "Expected Fail"); Assert.IsOrBecomesTrue(() => data == responseData); }
public void can_serialize_bson_fail_commandresponse() { var cmd = new TestCommands.TypedTestCommand(Guid.NewGuid(), null); var nearSide = cmd.Fail(new CommandException("O_Ops", cmd), 15); TestCommands.TestFailedCommandResponse farSide; var ms = new MemoryStream(); using (var writer = new BsonWriter(ms)) { var serializer = new JsonSerializer(); serializer.Serialize(writer, nearSide); } var array = ms.ToArray(); StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); using (var writer = new JsonTextWriter(sw)) { var serializer = new JsonSerializer(); serializer.Serialize(writer, nearSide); } var foo = sb.ToString(); var ms2 = new MemoryStream(array); using (var reader = new BsonReader(ms2)) { var serializer = new JsonSerializer(); farSide = serializer.Deserialize <TestCommands.TestFailedCommandResponse>(reader); } Assert.Equal(nearSide.MsgId, farSide.MsgId); Assert.Equal(nearSide.MsgTypeId, farSide.MsgTypeId); Assert.Equal(nearSide.CorrelationId, farSide.CorrelationId); Assert.Equal(nearSide.CommandType, farSide.CommandType); Assert.Equal(nearSide.CommandId, farSide.CommandId); Assert.Equal(nearSide.SourceId, farSide.SourceId); Assert.Equal(nearSide.Exception.Message, farSide.Exception.Message); Assert.Equal(nearSide.Data, farSide.Data); }
public void can_serialize_json_success_commandresponse() { var cmd = new TestCommands.TypedTestCommand(Guid.NewGuid(), null); var nearSide = cmd.Succeed(15); TestCommands.TestCommandResponse farSide; StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); using (var writer = new JsonTextWriter(sw)) { var serializer = new JsonSerializer(); serializer.Serialize(writer, nearSide); } var foo = sb.ToString(); using (var reader = new JsonTextReader(new StringReader(foo))) { var serializer = new JsonSerializer(); serializer.Binder = new TestDeserializer(); serializer.ContractResolver = new TestContractResolver(); farSide = serializer.Deserialize <TestCommands.TestCommandResponse>(reader); } Assert.Equal(nearSide.MsgId, farSide.MsgId); Assert.Equal(nearSide.MsgTypeId, farSide.MsgTypeId); Assert.Equal(nearSide.CorrelationId, farSide.CorrelationId); Assert.Equal(nearSide.CommandType, farSide.CommandType); Assert.Equal(nearSide.CommandId, farSide.CommandId); Assert.Equal(nearSide.SourceId, farSide.SourceId); Assert.Equal(nearSide.Data, farSide.Data); }