public async Task Should_Support_Custom_Telemetry_Using_Delegate()
        {
            var fake = Substitute.For <Func <CustomTelemetryEventParams, CancellationToken, Task> >();

            var(_, server) = await Initialize(options => { options.OnTelemetryEvent(fake); }, options => { });

            var @event = new CustomTelemetryEventParams {
                CodeFolding     = true,
                ProfileLoading  = false,
                ScriptAnalysis  = true,
                Pester5CodeLens = true,
                PromptToUpdatePackageManagement = false
            };

            server.SendTelemetryEvent(@event);
            await SettleNext();

            var call = fake.ReceivedCalls().Single();
            var args = call.GetArguments();

            args[0]
            .Should().BeOfType <CustomTelemetryEventParams>()
            .And.Subject
            .Should().BeEquivalentTo(@event, z => z.UsingStructuralRecordEquality().Excluding(x => x.ExtensionData));
        }
        public async Task Should_Support_Custom_Telemetry_Receiving_Regular_Telemetry_Using_Base_Class()
        {
            var fake = Substitute.For <TelemetryEventHandlerBase>();

            var(_, server) = await Initialize(options => { options.AddHandler(fake); }, options => { });

            var @event = new CustomTelemetryEventParams {
                CodeFolding     = true,
                ProfileLoading  = false,
                ScriptAnalysis  = true,
                Pester5CodeLens = true,
                PromptToUpdatePackageManagement = false
            };

            server.SendTelemetryEvent(@event);
            await SettleNext();

            var call    = fake.ReceivedCalls().Single();
            var args    = call.GetArguments();
            var request = args[0].Should().BeOfType <TelemetryEventParams>().Which;

            request.ExtensionData.Should().ContainKey("codeFolding").And.Subject["codeFolding"].Should().Be(true);
            request.ExtensionData.Should().ContainKey("profileLoading").And.Subject["profileLoading"].Should().Be(false);
            request.ExtensionData.Should().ContainKey("scriptAnalysis").And.Subject["scriptAnalysis"].Should().Be(true);
            request.ExtensionData.Should().ContainKey("pester5CodeLens").And.Subject["pester5CodeLens"].Should().Be(true);
            request.ExtensionData.Should().ContainKey("promptToUpdatePackageManagement").And.Subject["promptToUpdatePackageManagement"].Should().Be(false);
        }
Example #3
0
        public async Task Should_Support_Custom_Telemetry_Receiving_Regular_Telemetry_Using_Delegate()
        {
            var fake = Substitute.For <Func <TelemetryEventParams, CancellationToken, Task> >();

            var(_, server) = await Initialize(options => { options.OnTelemetryEvent(fake); }, options => { });

            var @event = new CustomTelemetryEventParams {
                CodeFolding     = true,
                ProfileLoading  = false,
                ScriptAnalysis  = true,
                Pester5CodeLens = true,
                PromptToUpdatePackageManagement = false
            };

            server.SendTelemetryEvent(@event);
            await TestHelper.DelayUntil(() => fake.ReceivedCalls().Any(), CancellationToken);

            var call    = fake.ReceivedCalls().Single();
            var args    = call.GetArguments();
            var request = args[0].Should().BeOfType <TelemetryEventParams>().Which;

            request.ExtensionData.Should().ContainKey("codeFolding").And.Subject["codeFolding"].Should().Be(true);
            request.ExtensionData.Should().ContainKey("profileLoading").And.Subject["profileLoading"].Should().Be(false);
            request.ExtensionData.Should().ContainKey("scriptAnalysis").And.Subject["scriptAnalysis"].Should().Be(true);
            request.ExtensionData.Should().ContainKey("pester5CodeLens").And.Subject["pester5CodeLens"].Should().Be(true);
            request.ExtensionData.Should().ContainKey("promptToUpdatePackageManagement").And.Subject["promptToUpdatePackageManagement"].Should().Be(false);
        }