public async Task BroadcastNewTagItemDataShouldSendNewTagItemToClients() { // Arrange NewTagItem receivedTagItem = null; var connection = GetConnection(_factory); var hasListenerBeenTriggered = false; var hasListenerBeenTriggeredAttemptCount = 0; connection.On <Object>("newTag", (tagItem) => { //With some types, the conversion from json to a C# object must be done by hand: receivedTagItem = Newtonsoft.Json.JsonConvert.DeserializeObject <NewTagItem>(tagItem.ToString()); hasListenerBeenTriggered = true; }); await connection.StartAsync(); // Act PersistingValues.TagItem = new NewTagItem(4, 5, true); await connection.InvokeAsync("BroadcastNewTagItemData"); //Assert while (!hasListenerBeenTriggered && hasListenerBeenTriggeredAttemptCount < MAX_HAS_LISTENER_BEEN_TRIGGERED_ATTEMPTS) { Thread.Sleep(1); hasListenerBeenTriggeredAttemptCount++; } if (!hasListenerBeenTriggered) { throw new Exception("Listener wasn't triggered."); } //Once we get here, the message has been sent by the server and the client has received it and reacted to it. receivedTagItem.Should().NotBe(null); receivedTagItem.positionX.Should().Be(4); }
public async Task BroadcastPlayerHitNewTagItemShouldSendNewTagIdAndNewTagItemDataToClients() { // Arrange string receivedTagId = null; NewTagItem receivedTagItem = null; var hasListenerBeenTriggeredPlayerBecomesTag = false; var hasListenerBeenTriggeredNewTagItem = false; var hasListenerBeenTriggeredAttemptCount = 0; var connection = GetConnection(_factory); connection.On <Object>("newTag", (tagItem) => { //With some types, the conversion from json to a C# object must be done by hand: receivedTagItem = Newtonsoft.Json.JsonConvert.DeserializeObject <NewTagItem>(tagItem.ToString()); hasListenerBeenTriggeredNewTagItem = true; }); connection.On <string>("broadcastPlayerBecomesTag", (tagId) => { receivedTagId = tagId; hasListenerBeenTriggeredPlayerBecomesTag = true; }); await connection.StartAsync(); // Act await connection.InvokeAsync("BroadcastPlayerHitNewTagItem", "123"); //Assert while ((!hasListenerBeenTriggeredPlayerBecomesTag || !hasListenerBeenTriggeredNewTagItem) && hasListenerBeenTriggeredAttemptCount < MAX_HAS_LISTENER_BEEN_TRIGGERED_ATTEMPTS) { Thread.Sleep(1); hasListenerBeenTriggeredAttemptCount++; } if (!hasListenerBeenTriggeredPlayerBecomesTag) { throw new Exception("Listener (broadcastPlayerBecomesTag) wasn't triggered."); } if (!hasListenerBeenTriggeredNewTagItem) { throw new Exception("Listener (newTag) wasn't triggered."); } //Once we get here, the message has been sent by the server and the client has received it and reacted to it. receivedTagId.Should().Be("123"); receivedTagItem.isInPlay.Should().BeFalse(); }