feat(career): add factual evidence bank
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
using JobTrackerApi.Controllers;
|
||||
using JobTrackerApi.Data;
|
||||
using JobTrackerApi.Models;
|
||||
using JobTrackerApi.Services;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Moq;
|
||||
using Xunit;
|
||||
|
||||
namespace JobTrackerApi.Tests;
|
||||
|
||||
public sealed class CareerEvidenceControllerTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task Evidence_is_user_approved_tenant_scoped_and_deletable()
|
||||
{
|
||||
var current = new Mock<ICurrentUserService>(); current.SetupGet(x => x.UserId).Returns("owner-1");
|
||||
await using var db = new JobTrackerContext(new DbContextOptionsBuilder<JobTrackerContext>().UseInMemoryDatabase(Guid.NewGuid().ToString()).Options, current.Object);
|
||||
var controller = new CareerEvidenceController(db, Users("owner-1").Object);
|
||||
var request = new CareerEvidenceController.EvidenceRequest("achievement", "Reduced incidents", "Introduced tested deployment rollback.", ["deployment", "reliability"], "manual", "production retrospective", true);
|
||||
|
||||
var created = Assert.IsType<CareerEvidenceController.EvidenceDto>(Assert.IsType<OkObjectResult>((await controller.Create(request, default)).Result).Value);
|
||||
Assert.True(created.IsVerified);
|
||||
Assert.Equal(["deployment", "reliability"], created.Tags);
|
||||
db.CareerEvidence.Add(new CareerEvidence { OwnerUserId = "owner-2", Title = "Private", Statement = "Other tenant" });
|
||||
await db.SaveChangesAsync();
|
||||
|
||||
var listed = Assert.IsAssignableFrom<IEnumerable<CareerEvidenceController.EvidenceDto>>(Assert.IsType<OkObjectResult>((await controller.List(default)).Result).Value).ToList();
|
||||
Assert.Single(listed);
|
||||
Assert.Equal("Reduced incidents", listed[0].Title);
|
||||
Assert.IsType<NoContentResult>(await controller.Delete(created.Id, default));
|
||||
Assert.Empty(await db.CareerEvidence.Where(x => x.OwnerUserId == "owner-1").ToListAsync());
|
||||
}
|
||||
|
||||
private static Mock<UserManager<ApplicationUser>> Users(string id)
|
||||
{
|
||||
var store = new Mock<IUserStore<ApplicationUser>>();
|
||||
var manager = new Mock<UserManager<ApplicationUser>>(store.Object, null!, null!, null!, null!, null!, null!, null!, null!);
|
||||
manager.Setup(x => x.GetUserAsync(It.IsAny<System.Security.Claims.ClaimsPrincipal>())).ReturnsAsync(new ApplicationUser { Id = id });
|
||||
return manager;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user