public async Task TrackAsync_CanSendSingleEvent()
        {
            var client = new MixpanelClient(Token, new HttpClient());

            var mixpanelEvent = client.CreateEvent();

            mixpanelEvent.Name = nameof(TrackAsync_CanSendSingleEvent);

            var outcome = await client.TrackAsync(mixpanelEvent).ConfigureAwait(false);

            Assert.True(outcome.Successful);
        }
        public async Task TrackAsync_SendsSuccessfully_WhenEventIsNotNull()
        {
            var httpMessageHandlerMock = new Mock <HttpMessageHandler>();

            httpMessageHandlerMock.Protected()
            .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>())
            .ReturnsAsync(new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent("{\"status\": 1, \"error\": null}")
            })
            .Verifiable();

            var httpClient = new HttpClient(httpMessageHandlerMock.Object);

            IMixpanelClient client = new MixpanelClient(EmptyToken, httpClient);

            var @event = client.CreateEvent();

            var outcome = await client.TrackAsync(@event).ConfigureAwait(false);

            Assert.True(outcome.Successful);

            httpMessageHandlerMock.Protected().Verify("SendAsync", Times.Once(), ItExpr.Is <HttpRequestMessage>(request => request.Method == HttpMethod.Get), ItExpr.IsAny <CancellationToken>());
        }