Files
jobtrackingapp/JobTrackerApi.Tests/AnalyticsSalaryTests.cs
T
cesnimda 235d22c059
CI and Deploy / test (push) Successful in 2m41s
CI and Deploy / deploy (push) Successful in 58s
feat: add salary insights
2026-07-31 00:15:38 +02:00

32 lines
1.5 KiB
C#

using JobTrackerApi.Models;
using JobTrackerApi.Services;
using JobTrackerApi.Tests.TestSupport;
using Xunit;
namespace JobTrackerApi.Tests;
public sealed class AnalyticsSalaryTests
{
[Fact]
public async Task Salary_insights_keep_currency_and_period_groups_separate()
{
await using var db = TestHostFactory.CreateInMemoryDb("user-1");
var company = new Company { Name = "Acme", OwnerUserId = "user-1" };
db.Companies.Add(company);
db.JobApplications.AddRange(
new JobApplication { OwnerUserId = "user-1", Company = company, JobTitle = "A", Status = "Applied", SalaryMin = 600_000, SalaryMax = 800_000, SalaryCurrency = "NOK", SalaryPeriod = "year" },
new JobApplication { OwnerUserId = "user-1", Company = company, JobTitle = "B", Status = "Applied", SalaryMin = 700_000, SalaryMax = 900_000, SalaryCurrency = "NOK", SalaryPeriod = "year" },
new JobApplication { OwnerUserId = "user-1", Company = company, JobTitle = "C", Status = "Applied", SalaryMin = 50, SalaryMax = 70, SalaryCurrency = "EUR", SalaryPeriod = "hour" });
await db.SaveChangesAsync();
var result = await new AnalyticsService(db).GetAnalyticsOverviewAsync(default);
Assert.Equal(2, result.SalaryInsights.Count);
var nok = Assert.Single(result.SalaryInsights, x => x.Currency == "NOK" && x.Period == "year");
Assert.Equal(2, nok.Count);
Assert.Equal(600_000, nok.Minimum);
Assert.Equal(900_000, nok.Maximum);
Assert.Equal(750_000, nok.AverageMidpoint);
}
}