Skip to content

Commit bbcca51

Browse files
committed
Refactored HandshakeFailedStateTransition
1 parent af2633b commit bbcca51

File tree

1 file changed

+56
-66
lines changed

1 file changed

+56
-66
lines changed
Lines changed: 56 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,91 +1,81 @@
11
using NUnit.Framework;
22
using PubnubApi.EventEngine.Core;
33
using PubnubApi.EventEngine.Subscribe.Common;
4-
using PubnubApi.EventEngine.Subscribe.Context;
54
using PubnubApi.EventEngine.Subscribe.Events;
65
using PubnubApi.EventEngine.Subscribe.States;
7-
using System.Linq;
86

97
namespace PubnubApi.Tests.EventEngine
108
{
119
internal class HandshakeFailedStateTransition
1210
{
13-
[Test]
14-
public void TestHandshakeFailedStateTransitionWithSubscriptionChangedEvent()
15-
{
16-
//Arrange
17-
var handshakeFailedState = new HandshakeFailedState() { Channels = new string[] { "ch1", "ch2" }, ChannelGroups = new string[] { "cg1", "cg2" } };
18-
var handshakingState = new HandshakingState();
19-
//Act
20-
var result = handshakeFailedState.Transition(new SubscriptionChangedEvent()
11+
private static object[] handshakeFailedEventCases = {
12+
new object[] {
13+
new HandshakeFailedState() { Channels = new string[] { "ch1", "ch2" }, ChannelGroups = new string[] { "cg1", "cg2" } },
14+
new SubscriptionChangedEvent()
15+
{
16+
Channels = new string[] { "ch1", "ch2", "ch3" },
17+
ChannelGroups = new string[] { "cg1", "cg2", "cg3" }
18+
},
19+
new HandshakingState(){ Channels = new string[] { "ch1", "ch2", "ch3" }, ChannelGroups = new string[] { "cg1", "cg2", "cg3" } }
20+
},
21+
new object[]
2122
{
22-
Channels = new string[] { "ch1", "ch2", "ch3" },
23-
ChannelGroups = new string[] { "cg1", "cg2", "cg3" }
24-
} );
25-
//Assert
26-
Assert.IsTrue(result.State.GetType().Equals(handshakingState.GetType()));
27-
Assert.AreEqual("ch1", ((HandshakingState)(result.State)).Channels.ElementAt(0));
28-
Assert.AreEqual("ch2", ((HandshakingState)(result.State)).Channels.ElementAt(1));
29-
Assert.AreEqual("ch3", ((HandshakingState)(result.State)).Channels.ElementAt(2));
30-
Assert.AreEqual("cg1", ((HandshakingState)(result.State)).ChannelGroups.ElementAt(0));
31-
Assert.AreEqual("cg2", ((HandshakingState)(result.State)).ChannelGroups.ElementAt(1));
32-
Assert.AreEqual("cg3", ((HandshakingState)(result.State)).ChannelGroups.ElementAt(2));
33-
}
23+
new HandshakeFailedState() { Channels = new string[] { "ch1", "ch2" }, ChannelGroups = new string[] { "cg1", "cg2" } },
24+
new SubscriptionRestoredEvent()
25+
{
26+
Channels = new string[] { "ch1", "ch2" },
27+
ChannelGroups = new string[] { "cg1", "cg2" }
28+
},
29+
new HandshakingState() { Channels = new string[] { "ch1", "ch2" }, ChannelGroups = new string[] { "cg1", "cg2" } }
30+
},
31+
new object[]
32+
{
33+
new HandshakeFailedState() { Channels = new string[] { "ch1", "ch2" }, ChannelGroups = new string[] { "cg1", "cg2" } },
34+
new ReconnectEvent()
35+
{
36+
Channels = new string[] { "ch1", "ch2" },
37+
ChannelGroups = new string[] { "cg1", "cg2" },
38+
Cursor = new SubscriptionCursor() { Region = 1, Timetoken = 1234567890 }
39+
},
40+
new HandshakingState() { Channels = new string[] { "ch1", "ch2" }, ChannelGroups = new string[] { "cg1", "cg2" } }
41+
}
42+
};
3443

35-
[Test]
36-
public void TestHandshakeFailedStateTransitionWithSubscriptionRestoredEvent()
44+
[TestCaseSource(nameof(handshakeFailedEventCases))]
45+
public void When_EventOccurs_HandshakeFailedStateTransitionsToHandshakingState(
46+
HandshakeFailedState handshakeFailedState, IEvent @event, HandshakingState expectedState)
3747
{
38-
//Arrange
39-
var handshakeFailedState = new HandshakeFailedState() { Channels = new string[] { "ch1", "ch2" }, ChannelGroups = new string[] { "cg1", "cg2" } };
40-
var handshakingState = new HandshakingState();
4148
//Act
42-
var result = handshakeFailedState.Transition(new SubscriptionRestoredEvent()
43-
{
44-
Channels = new string[] { "ch1", "ch2" },
45-
ChannelGroups = new string[] { "cg1", "cg2" }
46-
} );
49+
var result = handshakeFailedState.Transition(@event);
50+
4751
//Assert
48-
Assert.IsTrue(result.State.GetType().Equals(handshakingState.GetType()));
49-
Assert.AreEqual("ch1", ((HandshakingState)(result.State)).Channels.ElementAt(0));
50-
Assert.AreEqual("ch2", ((HandshakingState)(result.State)).Channels.ElementAt(1));
51-
Assert.AreEqual("cg1", ((HandshakingState)(result.State)).ChannelGroups.ElementAt(0));
52-
Assert.AreEqual("cg2", ((HandshakingState)(result.State)).ChannelGroups.ElementAt(1));
52+
Assert.IsInstanceOf<HandshakingState>(result.State);
53+
Assert.AreEqual(expectedState.Channels, ((HandshakingState)result.State).Channels);
54+
Assert.AreEqual(expectedState.ChannelGroups, ((HandshakingState)result.State).ChannelGroups);
55+
if (@event is ReconnectEvent reconnectEvent)
56+
{
57+
Assert.AreEqual(reconnectEvent.Cursor, ((HandshakingState)result.State).Cursor);
58+
}
5359
}
5460

55-
[Test]
56-
public void TestHandshakeFailedStateTransitionWithReconnectEvent()
61+
[TestCase]
62+
public void When_UnsubscribeAllEventOccurs_HandshakeFailedStateTransitionsToUnsubscribedState()
5763
{
58-
//Arrange
59-
var handshakeFailedState = new HandshakeFailedState() { Channels = new string[] { "ch1", "ch2" }, ChannelGroups = new string[] { "cg1", "cg2" } };
60-
var handshakingState = new HandshakingState();
61-
//Act
62-
var result = handshakeFailedState.Transition(new ReconnectEvent()
64+
// Arrange
65+
var handshakeFailedState = new HandshakeFailedState()
6366
{
64-
Channels = new string[] { "ch1", "ch2" },
65-
ChannelGroups = new string[] { "cg1", "cg2" },
66-
Cursor = new SubscriptionCursor() { Region = 1, Timetoken = 1234567890 }
67-
} );
68-
//Assert
69-
Assert.IsTrue(result.State.GetType().Equals(handshakingState.GetType()));
70-
Assert.AreEqual("ch1", ((HandshakingState)(result.State)).Channels.ElementAt(0));
71-
Assert.AreEqual("ch2", ((HandshakingState)(result.State)).Channels.ElementAt(1));
72-
Assert.AreEqual("cg1", ((HandshakingState)(result.State)).ChannelGroups.ElementAt(0));
73-
Assert.AreEqual("cg2", ((HandshakingState)(result.State)).ChannelGroups.ElementAt(1));
74-
Assert.AreEqual(1, ((HandshakingState)(result.State)).Cursor.Region);
75-
Assert.AreEqual(1234567890, ((HandshakingState)(result.State)).Cursor.Timetoken);
76-
}
67+
Channels = new string[] { "ch1", "ch2" },
68+
ChannelGroups = new string[] { "cg1", "cg2" }
69+
};
70+
71+
var @event = new UnsubscribeAllEvent() { };
7772

78-
[Test]
79-
public void TestHandshakeFailedStateTransitionWithUnsubscribeEvent()
80-
{
81-
//Arrange
82-
var handshakeFailedState = new HandshakeFailedState() { Channels = new string[] { "ch1", "ch2" }, ChannelGroups = new string[] { "cg1", "cg2" } };
83-
var unsubscribedState = new UnsubscribedState();
8473
//Act
85-
var result = handshakeFailedState.Transition(new UnsubscribeAllEvent() { });
74+
var result = handshakeFailedState.Transition(@event);
75+
8676
//Assert
87-
Assert.IsTrue(result.State.GetType().Equals(unsubscribedState.GetType()));
77+
Assert.IsInstanceOf<UnsubscribedState>(result.State);
8878
}
89-
79+
9080
}
9181
}

0 commit comments

Comments
 (0)