public void WhenNoApplicationData_Throws()
        {
            var builder = new TelemetryDataBuilder();

            Assert.Throws <ArgumentNullException>(() => builder.BuildTelemetryData(null, _host, null, null, null, sendHeartbeat: true));
            Assert.Throws <ArgumentNullException>(() => builder.BuildTelemetryData(_application, null, null, null, null, sendHeartbeat: true));

            Assert.Throws <ArgumentNullException>(() => builder.BuildAppClosingTelemetryData(null, _host));
            Assert.Throws <ArgumentNullException>(() => builder.BuildAppClosingTelemetryData(_application, null));
        }
        public void WhenHasApplicationAndHostData_GeneratesAppClosingTelemetry()
        {
            var builder = new TelemetryDataBuilder();

            var result = builder.BuildAppClosingTelemetryData(_application, _host);

            result.Should().NotBeNull();
            result.Application.Should().Be(_application);
            result.SeqId.Should().Be(1);
            result.Payload.Should().BeNull();
        }
        public void ShouldGenerateIncrementingIds()
        {
            var builder = new TelemetryDataBuilder();

            var config = Array.Empty <TelemetryValue>();
            var data   = builder.BuildTelemetryData(_application, _host, config, null, null, sendHeartbeat: true);

            data.Should().ContainSingle().Which.SeqId.Should().Be(1);

            data = builder.BuildTelemetryData(_application, _host, config, null, null, sendHeartbeat: true);
            data.Should().ContainSingle().Which.SeqId.Should().Be(2);

            var closingData = builder.BuildAppClosingTelemetryData(_application, _host);

            closingData.Should().NotBeNull();
            closingData.SeqId.Should().Be(3);
        }