public void BothTypesBoundaryNumbers_DevidedCorrectly(int messagesCount)
        {
            var messages = new List<MixpanelMessage>();
            for (int i = 0; i < messagesCount; i++)
            {
                messages.Add(
                    _mc.GetTrackMessage(Event, DistinctId, DictionaryWithStringProperty));
                messages.Add(
                    _mc.GetPeopleSetMessage(DistinctId, DictionaryWithStringProperty));
            }

            var batchMessage = new BatchMessageWrapper(messages);
            var splits = GetSplits(messagesCount, BatchMessageWrapper.MaxBatchSize);

            // Check track
            Assert.That(batchMessage.TrackMessages.Count, Is.EqualTo(splits.Count));
            for (int i = 0; i < splits.Count; i++)
            {
                Assert.That(batchMessage.TrackMessages[i].Count, Is.EqualTo(splits[i]));
            }

            // Check engage
            Assert.That(batchMessage.EngageMessages.Count, Is.EqualTo(splits.Count));
            for (int i = 0; i < splits.Count; i++)
            {
                Assert.That(batchMessage.EngageMessages[i].Count, Is.EqualTo(splits[i]));
            }
        }
        public void BothTypesBoundaryNumbers_DevidedCorrectly(int messagesCount)
        {
            var messages = new List <MixpanelMessage>();

            for (int i = 0; i < messagesCount; i++)
            {
                messages.Add(
                    _mc.GetTrackMessage(Event, DistinctId, DictionaryWithStringProperty));
                messages.Add(
                    _mc.GetPeopleSetMessage(DistinctId, DictionaryWithStringProperty));
            }

            var batchMessage = new BatchMessageWrapper(messages);
            var splits       = GetSplits(messagesCount, BatchMessageWrapper.MaxBatchSize);

            // Check track
            Assert.That(batchMessage.TrackMessages.Count, Is.EqualTo(splits.Count));
            for (int i = 0; i < splits.Count; i++)
            {
                Assert.That(batchMessage.TrackMessages[i].Count, Is.EqualTo(splits[i]));
            }

            // Check engage
            Assert.That(batchMessage.EngageMessages.Count, Is.EqualTo(splits.Count));
            for (int i = 0; i < splits.Count; i++)
            {
                Assert.That(batchMessage.EngageMessages[i].Count, Is.EqualTo(splits[i]));
            }
        }
        public void When_ManyMessages_Then_MessagesSplitted(int messagesCount)
        {
            var messages = new List <MixpanelMessage>();

            for (int i = 0; i < messagesCount; i++)
            {
                messages.Add(
                    mixpanelClient.GetTrackMessage(Event, DistinctId, DictionaryWithStringProperty));
                messages.Add(
                    mixpanelClient.GetPeopleSetMessage(DistinctId, DictionaryWithStringProperty));
            }

            var batchMessage = new BatchMessageWrapper(messages);
            var splits       = GetSplits(messagesCount, BatchMessageWrapper.MaxBatchSize);

            // Check track
            Assert.That(batchMessage.TrackMessages.Count, Is.EqualTo(splits.Count));
            for (int i = 0; i < splits.Count; i++)
            {
                Assert.That(batchMessage.TrackMessages[i].Count, Is.EqualTo(splits[i]));
            }

            // Check engage
            Assert.That(batchMessage.EngageMessages.Count, Is.EqualTo(splits.Count));
            for (int i = 0; i < splits.Count; i++)
            {
                Assert.That(batchMessage.EngageMessages[i].Count, Is.EqualTo(splits[i]));
            }
        }
        public void OnlyEngageMessages_DevidedCorrectly()
        {
            var messages = new List <MixpanelMessage>();

            for (int i = 0; i < 10; i++)
            {
                messages.Add(
                    _mc.GetPeopleSetMessage(DistinctId, DictionaryWithStringProperty));
            }

            var batchMessage = new BatchMessageWrapper(messages);

            // Check track
            Assert.That(batchMessage.TrackMessages, Is.Null);

            // Check engage
            Assert.That(batchMessage.EngageMessages.Count, Is.EqualTo(1));
            Assert.That(batchMessage.EngageMessages[0].Count, Is.EqualTo(10));
        }
        public void When_OnlyTrackMessages_Then_DividedCorrectly()
        {
            var messages = new List <MixpanelMessage>();

            for (int i = 0; i < 10; i++)
            {
                messages.Add(
                    mixpanelClient.GetTrackMessage(Event, DistinctId, DictionaryWithStringProperty));
            }

            var batchMessage = new BatchMessageWrapper(messages);

            // Check track
            Assert.That(batchMessage.TrackMessages.Count, Is.EqualTo(1));
            Assert.That(batchMessage.TrackMessages[0].Count, Is.EqualTo(10));

            // Check engage
            Assert.That(batchMessage.EngageMessages, Is.Null);
        }
        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));
        }
        public void AllMessages_DevidedCorrectly()
        {
            var messages = new[]
            {
                // Track
                _mc.GetTrackMessage(Event, DistinctId, DictionaryWithStringProperty),
                _mc.GetAliasMessage(DistinctId, Alias),

                // Engage
                _mc.GetPeopleSetMessage(DistinctId, DictionaryWithStringProperty),
                _mc.GetPeopleSetOnceMessage(DistinctId, DictionaryWithStringProperty),
                _mc.GetPeopleAddMessage(DistinctId, DictionaryWithStringProperty),
                _mc.GetPeopleAppendMessage(DistinctId, DictionaryWithStringProperty),
                _mc.GetPeopleUnionMessage(DistinctId, DictionaryWithStringProperty),
                _mc.GetPeopleUnsetMessage(DistinctId, StringPropertyArray),
                _mc.GetPeopleDeleteMessage(DistinctId),
                _mc.GetPeopleTrackChargeMessage(DistinctId, DecimalPropertyValue)
            };

            var batchMessage = new BatchMessageWrapper(messages);

            // Check track
            Assert.That(batchMessage.TrackMessages.Count, Is.EqualTo(1));
            var trackMessages = batchMessage.TrackMessages.Single();

            Assert.That(trackMessages.Count, Is.EqualTo(2));

            var trackMessage = trackMessages[0];

            Assert.That(trackMessage.Data[MixpanelProperty.TrackEvent], Is.EqualTo(Event));

            var aliasMessage = trackMessages[1];

            Assert.That(aliasMessage.Data[MixpanelProperty.TrackEvent], Is.EqualTo(MixpanelProperty.TrackCreateAlias));

            // Check engage
            Assert.That(batchMessage.EngageMessages.Count, Is.EqualTo(1));
            var engageMessages = batchMessage.EngageMessages.Single();

            Assert.That(engageMessages.Count, Is.EqualTo(8));
        }
        public void AllMessages_DevidedCorrectly()
        {
            var messages = new[]
            {
                // Track
                _mc.GetTrackMessage(Event, DistinctId, DictionaryWithStringProperty),
                _mc.GetAliasMessage(DistinctId, Alias),

                // Engage
                _mc.GetPeopleSetMessage(DistinctId, DictionaryWithStringProperty),
                _mc.GetPeopleSetOnceMessage(DistinctId, DictionaryWithStringProperty),
                _mc.GetPeopleAddMessage(DistinctId, DictionaryWithStringProperty),
                _mc.GetPeopleAppendMessage(DistinctId, DictionaryWithStringProperty),
                _mc.GetPeopleUnionMessage(DistinctId, DictionaryWithStringProperty),
                _mc.GetPeopleUnsetMessage(DistinctId, StringPropertyArray),
                _mc.GetPeopleDeleteMessage(DistinctId),
                _mc.GetPeopleTrackChargeMessage(DistinctId, DecimalPropertyValue)
            };

            var batchMessage = new BatchMessageWrapper(messages);

            // Check track
            Assert.That(batchMessage.TrackMessages.Count, Is.EqualTo(1));
            var trackMessages = batchMessage.TrackMessages.Single();
            Assert.That(trackMessages.Count, Is.EqualTo(2));

            var trackMessage = trackMessages[0];
            Assert.That(trackMessage[MixpanelProperty.TrackEvent], Is.EqualTo(Event));

            var aliasMessage = trackMessages[1];
            Assert.That(aliasMessage[MixpanelProperty.TrackEvent], Is.EqualTo(MixpanelProperty.TrackCreateAlias));

            // Check engage
            Assert.That(batchMessage.EngageMessages.Count, Is.EqualTo(1));
            var engageMessages = batchMessage.EngageMessages.Single();
            Assert.That(engageMessages.Count, Is.EqualTo(8));
        }
        public void OnlyEngageMessages_DevidedCorrectly()
        {
            var messages = new List<MixpanelMessage>();
            for (int i = 0; i < 10; i++)
            {
                messages.Add(
                    _mc.GetPeopleSetMessage(DistinctId, DictionaryWithStringProperty));
            }

            var batchMessage = new BatchMessageWrapper(messages);

            // Check track
            Assert.That(batchMessage.TrackMessages, Is.Null);

            // Check engage
            Assert.That(batchMessage.EngageMessages.Count, Is.EqualTo(1));
            Assert.That(batchMessage.EngageMessages[0].Count, Is.EqualTo(10));
        }