public void When_AllTypeOfMessages_Then_DividedCorrectly() { var messages = new[] { // Track mixpanelClient.GetTrackMessage(Event, DistinctId, DictionaryWithStringProperty), mixpanelClient.GetAliasMessage(DistinctId, Alias), // Engage mixpanelClient.GetPeopleSetMessage(DistinctId, DictionaryWithStringProperty), mixpanelClient.GetPeopleSetOnceMessage(DistinctId, DictionaryWithStringProperty), mixpanelClient.GetPeopleAddMessage(DistinctId, DictionaryWithStringProperty), mixpanelClient.GetPeopleAppendMessage(DistinctId, DictionaryWithStringProperty), mixpanelClient.GetPeopleUnionMessage(DistinctId, DictionaryWithStringProperty), mixpanelClient.GetPeopleRemoveMessage(DistinctId, DictionaryWithStringProperty), mixpanelClient.GetPeopleUnsetMessage(DistinctId, StringPropertyArray), mixpanelClient.GetPeopleDeleteMessage(DistinctId), mixpanelClient.GetPeopleTrackChargeMessage(DistinctId, DecimalPropertyValue) }; var batchMessage = new BatchMessageWrapper(messages); // Check track Assert.That(batchMessage.TrackMessages.Count, Is.EqualTo(1)); List <MixpanelMessage> trackMessages = batchMessage.TrackMessages.Single(); Assert.That(trackMessages.Count, Is.EqualTo(2)); MixpanelMessage trackMessage = trackMessages[0]; Assert.That(trackMessage.Data["event"], Is.EqualTo(Event)); MixpanelMessage aliasMessage = trackMessages[1]; Assert.That(aliasMessage.Data["event"], Is.EqualTo("$create_alias")); // Check engage Assert.That(batchMessage.EngageMessages.Count, Is.EqualTo(1)); List <MixpanelMessage> engageMessages = batchMessage.EngageMessages.Single(); Assert.That(engageMessages.Count, Is.EqualTo(9)); }