Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/dotnetcore.yml
Original file line number Diff line number Diff line change
Expand Up @@ -131,4 +131,4 @@ jobs:
contents: write

steps:
- uses: fastify/github-action-merge-dependabot@v3.11.2
- uses: fastify/github-action-merge-dependabot@v3.11.2
3 changes: 2 additions & 1 deletion Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="coverlet.collector" Version="8.0.0" />
<PackageVersion Include="Microsoft.ApplicationInsights" Version="2.23.0" />
<PackageVersion Include="Microsoft.ApplicationInsights" Version="3.0.0" />
<PackageVersion Include="Microsoft.CodeAnalysis" Version="4.14.0" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.14.0" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest" Version="1.1.2" />
Expand All @@ -21,6 +21,7 @@
<PackageVersion Include="NonBlocking" Version="2.1.2" />
<PackageVersion Include="NUnit" Version="4.4.0" />
<PackageVersion Include="NUnit3TestAdapter" Version="6.1.0" />
<PackageVersion Include="OpenTelemetry.Exporter.InMemory" Version="1.15.0" />
<PackageVersion Include="System.Formats.Asn1" Version="9.0.10" />
<PackageVersion Include="TUnit" Version="1.15.0" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
Expand Down
64 changes: 29 additions & 35 deletions Moq.AutoMock.Tests/DescribeApplicationInsights.cs
Original file line number Diff line number Diff line change
@@ -1,75 +1,64 @@
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.DataContracts;
using OpenTelemetry.Metrics;

namespace Moq.AutoMock.Tests;

[TestClass]
public class DescribeApplicationInsights
{
[TestMethod]
public void WithApplicationInsights_AllowsVerificationOfTrackedEvents()
public void WithApplicationInsights_ProvidesActivityList()
{
var mocker = new AutoMocker();
mocker.WithApplicationInsights();

var service = mocker.CreateInstance<ServiceWithApplicationInsights>();

service.TrackEvent("UserLoggedIn");
service.TrackEvent("UserLoggedOut");
service.TrackRequestTelemetry("TestRequest1");
service.TrackRequestTelemetry("TestRequest2");

// Verify telemetry was tracked
var telemetryEvents = mocker.GetSentTelemetry();

Assert.HasCount(2, telemetryEvents);
var eventTelemetry1 = Assert.IsInstanceOfType<EventTelemetry>(telemetryEvents[0]);
Assert.AreEqual("UserLoggedIn", eventTelemetry1.Name);
var eventTelemetry2 = Assert.IsInstanceOfType<EventTelemetry>(telemetryEvents[1]);
Assert.AreEqual("UserLoggedOut", eventTelemetry2.Name);
var activities = mocker.GetApplicationInsightsActivities();
Assert.HasCount(2, activities);
Assert.AreEqual("TestRequest1", activities[0].OperationName);
Assert.AreEqual("TestRequest2", activities[1].OperationName);
}

[TestMethod]
public void WithApplicationInsights_AllowsVerificationOfTrackedMetrics()
public void WithApplicationInsights_AllowsTrackingEvents()
{
var mocker = new AutoMocker();
mocker.WithApplicationInsights();

var service = mocker.CreateInstance<ServiceWithApplicationInsights>();

service.TrackMetric("ResponseTime", 123.45);
service.TrackMetric("ItemsCount", 42);

service.TrackEvent("UserLoggedIn");
service.TrackEvent("UserLoggedOut");

// Verify telemetry was tracked
var telemetryEvents = mocker.GetSentTelemetry();
Assert.HasCount(2, telemetryEvents);


var metricTelemetry1 = Assert.IsInstanceOfType<MetricTelemetry>(telemetryEvents[0]);
Assert.AreEqual("ResponseTime", metricTelemetry1.Name);
Assert.AreEqual(123.45, metricTelemetry1.Sum);
var metricTelemetry2 = Assert.IsInstanceOfType<MetricTelemetry>(telemetryEvents[1]);
Assert.AreEqual("ItemsCount", metricTelemetry2.Name);
Assert.AreEqual(42, metricTelemetry2.Sum);
var logRecords = mocker.GetApplicationInsightsLogRecords();
Assert.HasCount(2, logRecords);
Assert.AreEqual("UserLoggedIn", logRecords[0].Attributes?[0].Value);
Assert.AreEqual("UserLoggedOut", logRecords[1].Attributes?[0].Value);
}

[TestMethod]
public void GetSentTelemetry_ReturnsAllSentTelemetryItems()
public void WithApplicationInsights_AllowsTrackingMetrics()
{
var mocker = new AutoMocker();
mocker.WithApplicationInsights();

var service = mocker.CreateInstance<ServiceWithApplicationInsights>();

service.TrackEvent("Event1");
service.TrackMetric("Metric1", 42.0);
service.TrackEvent("Event2");

var sentTelemetry = mocker.GetSentTelemetry();
service.TrackMetric("ResponseTime", 123.45);
service.TrackMetric("ItemsCount", 42);

Assert.HasCount(3, sentTelemetry);
Assert.IsInstanceOfType(sentTelemetry[0], typeof(EventTelemetry));
Assert.IsInstanceOfType(sentTelemetry[1], typeof(MetricTelemetry));
Assert.IsInstanceOfType(sentTelemetry[2], typeof(EventTelemetry));
//Flush the metrics
mocker.Get<TelemetryClient>().Flush();
var metrics = mocker.GetApplicationInsightsMetrics().Select(x => new MetricSnapshot(x)).ToList();
Assert.HasCount(2, metrics);
Assert.AreEqual(123.45, metrics[0].MetricPoints[^1].GetHistogramSum());
Assert.AreEqual(42, metrics[1].MetricPoints[^1].GetHistogramSum());
}

private class ServiceWithApplicationInsights(TelemetryClient telemetryClient)
Expand All @@ -83,5 +72,10 @@ public void TrackMetric(string name, double value)
{
telemetryClient.TrackMetric(name, value);
}

public void TrackRequestTelemetry(string name)
{
using var operation = telemetryClient.StartOperation<RequestTelemetry>(name);
}
}
}
3 changes: 3 additions & 0 deletions Moq.AutoMock.Tests/Moq.AutoMock.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,13 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.ApplicationInsights" />
<PackageReference Include="Moq" />
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="MSTest" />
<ProjectReference Include="..\Moq.AutoMock\Moq.AutoMock.csproj" />
<PackageReference Include="OpenTelemetry.Exporter.InMemory" />


<ProjectReference Include="..\Moq.AutoMocker.Generators\Moq.AutoMocker.Generators.csproj">
<OutputItemType>Analyzer</OutputItemType>
Expand Down
2 changes: 1 addition & 1 deletion Moq.AutoMock/Moq.AutoMock.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<Copyright>Copyright © $([System.DateTime]::UtcNow.ToString("yyyy"))</Copyright>
<NeutralLanguage>en-US</NeutralLanguage>

<VersionPrefix Condition="'$(VersionPrefix)' == ''">3.6.2</VersionPrefix>
<VersionPrefix Condition="'$(VersionPrefix)' == ''">4.0.0</VersionPrefix>

<Authors>Tim Kellogg, Adam Hewitt, Kevin Bost</Authors>
<PackageDescription>An auto-mocking container that generates mocks using Moq</PackageDescription>
Expand Down
Loading
Loading