Refactor repeated test host setup
This commit is contained in:
@@ -1,13 +1,13 @@
|
|||||||
using JobTrackerApi.Controllers;
|
using JobTrackerApi.Controllers;
|
||||||
using JobTrackerApi.Models;
|
using JobTrackerApi.Models;
|
||||||
using JobTrackerApi.Services;
|
using JobTrackerApi.Services;
|
||||||
|
using JobTrackerApi.Tests.TestSupport;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore.Query;
|
using Microsoft.EntityFrameworkCore.Query;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
using Microsoft.Extensions.Logging.Abstractions;
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using Moq;
|
using Moq;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
@@ -162,18 +162,7 @@ public sealed class AuthAndSystemControllerTests
|
|||||||
|
|
||||||
private static Mock<UserManager<ApplicationUser>> CreateUserManager()
|
private static Mock<UserManager<ApplicationUser>> CreateUserManager()
|
||||||
{
|
{
|
||||||
var store = new Mock<IUserStore<ApplicationUser>>();
|
return TestHostFactory.CreateUserManager();
|
||||||
return new Mock<UserManager<ApplicationUser>>(
|
|
||||||
store.Object,
|
|
||||||
Options.Create(new IdentityOptions()),
|
|
||||||
new PasswordHasher<ApplicationUser>(),
|
|
||||||
Array.Empty<IUserValidator<ApplicationUser>>(),
|
|
||||||
Array.Empty<IPasswordValidator<ApplicationUser>>(),
|
|
||||||
new UpperInvariantLookupNormalizer(),
|
|
||||||
new IdentityErrorDescriber(),
|
|
||||||
null!,
|
|
||||||
new NullLogger<UserManager<ApplicationUser>>()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private sealed class TestAsyncQueryProvider<TEntity> : IAsyncQueryProvider
|
private sealed class TestAsyncQueryProvider<TEntity> : IAsyncQueryProvider
|
||||||
|
|||||||
@@ -2,11 +2,10 @@ using JobTrackerApi.Controllers;
|
|||||||
using JobTrackerApi.Data;
|
using JobTrackerApi.Data;
|
||||||
using JobTrackerApi.Models;
|
using JobTrackerApi.Models;
|
||||||
using JobTrackerApi.Services;
|
using JobTrackerApi.Services;
|
||||||
|
using JobTrackerApi.Tests.TestSupport;
|
||||||
using Microsoft.AspNetCore.DataProtection;
|
using Microsoft.AspNetCore.DataProtection;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
using Microsoft.Extensions.Logging.Abstractions;
|
||||||
using Moq;
|
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace JobTrackerApi.Tests;
|
namespace JobTrackerApi.Tests;
|
||||||
@@ -34,11 +33,6 @@ public sealed class BackupControllerTests
|
|||||||
|
|
||||||
private static JobTrackerContext CreateDb()
|
private static JobTrackerContext CreateDb()
|
||||||
{
|
{
|
||||||
var options = new DbContextOptionsBuilder<JobTrackerContext>()
|
return TestHostFactory.CreateInMemoryDb();
|
||||||
.UseInMemoryDatabase(Guid.NewGuid().ToString())
|
|
||||||
.Options;
|
|
||||||
var currentUser = new Mock<ICurrentUserService>();
|
|
||||||
currentUser.SetupGet(x => x.UserId).Returns("user-1");
|
|
||||||
return new JobTrackerContext(options, currentUser.Object);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using JobTrackerApi.Controllers;
|
|||||||
using JobTrackerApi.Data;
|
using JobTrackerApi.Data;
|
||||||
using JobTrackerApi.Models;
|
using JobTrackerApi.Models;
|
||||||
using JobTrackerApi.Services;
|
using JobTrackerApi.Services;
|
||||||
|
using JobTrackerApi.Tests.TestSupport;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
@@ -520,12 +521,7 @@ public sealed class GmailControllerTests
|
|||||||
|
|
||||||
private static JobTrackerContext CreateDb()
|
private static JobTrackerContext CreateDb()
|
||||||
{
|
{
|
||||||
var options = new DbContextOptionsBuilder<JobTrackerContext>()
|
return TestHostFactory.CreateInMemoryDb();
|
||||||
.UseInMemoryDatabase(Guid.NewGuid().ToString())
|
|
||||||
.Options;
|
|
||||||
var currentUser = new Mock<ICurrentUserService>();
|
|
||||||
currentUser.SetupGet(service => service.UserId).Returns("user-1");
|
|
||||||
return new JobTrackerContext(options, currentUser.Object);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Microsoft.Extensions.Configuration.IConfiguration BuildConfig()
|
private static Microsoft.Extensions.Configuration.IConfiguration BuildConfig()
|
||||||
|
|||||||
@@ -3,12 +3,12 @@ using JobTrackerApi.Controllers;
|
|||||||
using JobTrackerApi.Data;
|
using JobTrackerApi.Data;
|
||||||
using JobTrackerApi.Models;
|
using JobTrackerApi.Models;
|
||||||
using JobTrackerApi.Services;
|
using JobTrackerApi.Services;
|
||||||
|
using JobTrackerApi.Tests.TestSupport;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
using Microsoft.Extensions.Logging.Abstractions;
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using Moq;
|
using Moq;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
@@ -475,29 +475,12 @@ public sealed class JobApplicationsApplicationPackageTests
|
|||||||
|
|
||||||
private static JobTrackerContext CreateDb()
|
private static JobTrackerContext CreateDb()
|
||||||
{
|
{
|
||||||
var options = new DbContextOptionsBuilder<JobTrackerContext>()
|
return TestHostFactory.CreateInMemoryDb();
|
||||||
.UseInMemoryDatabase(Guid.NewGuid().ToString())
|
|
||||||
.Options;
|
|
||||||
var currentUser = new Mock<ICurrentUserService>();
|
|
||||||
currentUser.SetupGet(service => service.UserId).Returns("user-1");
|
|
||||||
return new JobTrackerContext(options, currentUser.Object);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Mock<UserManager<ApplicationUser>> CreateUserManager(ApplicationUser? user = null)
|
private static Mock<UserManager<ApplicationUser>> CreateUserManager(ApplicationUser? user = null)
|
||||||
{
|
{
|
||||||
var store = new Mock<IUserStore<ApplicationUser>>();
|
return TestHostFactory.CreateUserManager(user);
|
||||||
var manager = new Mock<UserManager<ApplicationUser>>(
|
|
||||||
store.Object,
|
|
||||||
Options.Create(new IdentityOptions()),
|
|
||||||
new PasswordHasher<ApplicationUser>(),
|
|
||||||
Array.Empty<IUserValidator<ApplicationUser>>(),
|
|
||||||
Array.Empty<IPasswordValidator<ApplicationUser>>(),
|
|
||||||
new UpperInvariantLookupNormalizer(),
|
|
||||||
new IdentityErrorDescriber(),
|
|
||||||
null!,
|
|
||||||
new NullLogger<UserManager<ApplicationUser>>());
|
|
||||||
manager.Setup(x => x.FindByIdAsync(It.IsAny<string>())).ReturnsAsync((string id) => user is not null && user.Id == id ? user : null);
|
|
||||||
return manager;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private sealed class TestCvTemplateRenderer : ICvTemplateRenderer
|
private sealed class TestCvTemplateRenderer : ICvTemplateRenderer
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using JobTrackerApi.Controllers;
|
|||||||
using JobTrackerApi.Data;
|
using JobTrackerApi.Data;
|
||||||
using JobTrackerApi.Models;
|
using JobTrackerApi.Models;
|
||||||
using JobTrackerApi.Services;
|
using JobTrackerApi.Services;
|
||||||
|
using JobTrackerApi.Tests.TestSupport;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
@@ -77,26 +78,11 @@ public sealed class JobApplicationsEndpointBehaviorTests
|
|||||||
|
|
||||||
private static Mock<Microsoft.AspNetCore.Identity.UserManager<ApplicationUser>> CreateUserManager()
|
private static Mock<Microsoft.AspNetCore.Identity.UserManager<ApplicationUser>> CreateUserManager()
|
||||||
{
|
{
|
||||||
var store = new Mock<Microsoft.AspNetCore.Identity.IUserStore<ApplicationUser>>();
|
return TestHostFactory.CreateUserManager();
|
||||||
return new Mock<Microsoft.AspNetCore.Identity.UserManager<ApplicationUser>>(
|
|
||||||
store.Object,
|
|
||||||
null!,
|
|
||||||
null!,
|
|
||||||
null!,
|
|
||||||
null!,
|
|
||||||
null!,
|
|
||||||
null!,
|
|
||||||
null!,
|
|
||||||
null!);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static JobTrackerContext CreateDb()
|
private static JobTrackerContext CreateDb()
|
||||||
{
|
{
|
||||||
var options = new DbContextOptionsBuilder<JobTrackerContext>()
|
return TestHostFactory.CreateInMemoryDb();
|
||||||
.UseInMemoryDatabase(Guid.NewGuid().ToString())
|
|
||||||
.Options;
|
|
||||||
var currentUser = new Mock<ICurrentUserService>();
|
|
||||||
currentUser.SetupGet(x => x.UserId).Returns("user-1");
|
|
||||||
return new JobTrackerContext(options, currentUser.Object);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,12 +3,11 @@ using JobTrackerApi.Controllers;
|
|||||||
using JobTrackerApi.Data;
|
using JobTrackerApi.Data;
|
||||||
using JobTrackerApi.Models;
|
using JobTrackerApi.Models;
|
||||||
using JobTrackerApi.Services;
|
using JobTrackerApi.Services;
|
||||||
|
using JobTrackerApi.Tests.TestSupport;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
using Microsoft.Extensions.Logging.Abstractions;
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using Moq;
|
using Moq;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
@@ -122,27 +121,11 @@ public sealed class JobApplicationsFollowUpDraftTests
|
|||||||
|
|
||||||
private static JobTrackerContext CreateDb()
|
private static JobTrackerContext CreateDb()
|
||||||
{
|
{
|
||||||
var options = new DbContextOptionsBuilder<JobTrackerContext>()
|
return TestHostFactory.CreateInMemoryDb();
|
||||||
.UseInMemoryDatabase(Guid.NewGuid().ToString())
|
|
||||||
.Options;
|
|
||||||
var currentUser = new Mock<ICurrentUserService>();
|
|
||||||
currentUser.SetupGet(service => service.UserId).Returns("user-1");
|
|
||||||
return new JobTrackerContext(options, currentUser.Object);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Mock<UserManager<ApplicationUser>> CreateUserManager()
|
private static Mock<UserManager<ApplicationUser>> CreateUserManager()
|
||||||
{
|
{
|
||||||
var store = new Mock<IUserStore<ApplicationUser>>();
|
return TestHostFactory.CreateUserManager();
|
||||||
return new Mock<UserManager<ApplicationUser>>(
|
|
||||||
store.Object,
|
|
||||||
Options.Create(new IdentityOptions()),
|
|
||||||
new PasswordHasher<ApplicationUser>(),
|
|
||||||
Array.Empty<IUserValidator<ApplicationUser>>(),
|
|
||||||
Array.Empty<IPasswordValidator<ApplicationUser>>(),
|
|
||||||
new UpperInvariantLookupNormalizer(),
|
|
||||||
new IdentityErrorDescriber(),
|
|
||||||
null!,
|
|
||||||
new NullLogger<UserManager<ApplicationUser>>()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using JobTrackerApi.Controllers;
|
|||||||
using JobTrackerApi.Data;
|
using JobTrackerApi.Data;
|
||||||
using JobTrackerApi.Models;
|
using JobTrackerApi.Models;
|
||||||
using JobTrackerApi.Services;
|
using JobTrackerApi.Services;
|
||||||
|
using JobTrackerApi.Tests.TestSupport;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
@@ -53,26 +54,11 @@ public sealed class JobApplicationsMariaDraftTests
|
|||||||
|
|
||||||
private static Mock<Microsoft.AspNetCore.Identity.UserManager<ApplicationUser>> CreateUserManager()
|
private static Mock<Microsoft.AspNetCore.Identity.UserManager<ApplicationUser>> CreateUserManager()
|
||||||
{
|
{
|
||||||
var store = new Mock<Microsoft.AspNetCore.Identity.IUserStore<ApplicationUser>>();
|
return TestHostFactory.CreateUserManager();
|
||||||
return new Mock<Microsoft.AspNetCore.Identity.UserManager<ApplicationUser>>(
|
|
||||||
store.Object,
|
|
||||||
null!,
|
|
||||||
null!,
|
|
||||||
null!,
|
|
||||||
null!,
|
|
||||||
null!,
|
|
||||||
null!,
|
|
||||||
null!,
|
|
||||||
null!);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static JobTrackerContext CreateDb()
|
private static JobTrackerContext CreateDb()
|
||||||
{
|
{
|
||||||
var options = new DbContextOptionsBuilder<JobTrackerContext>()
|
return TestHostFactory.CreateInMemoryDb();
|
||||||
.UseInMemoryDatabase(Guid.NewGuid().ToString())
|
|
||||||
.Options;
|
|
||||||
var currentUser = new Mock<ICurrentUserService>();
|
|
||||||
currentUser.SetupGet(x => x.UserId).Returns("user-1");
|
|
||||||
return new JobTrackerContext(options, currentUser.Object);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,12 +3,12 @@ using JobTrackerApi.Controllers;
|
|||||||
using JobTrackerApi.Data;
|
using JobTrackerApi.Data;
|
||||||
using JobTrackerApi.Models;
|
using JobTrackerApi.Models;
|
||||||
using JobTrackerApi.Services;
|
using JobTrackerApi.Services;
|
||||||
|
using JobTrackerApi.Tests.TestSupport;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
using Microsoft.Extensions.Logging.Abstractions;
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using Moq;
|
using Moq;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
@@ -126,27 +126,11 @@ public sealed class JobApplicationsWorkflowSignalsTests
|
|||||||
|
|
||||||
private static JobTrackerContext CreateDb()
|
private static JobTrackerContext CreateDb()
|
||||||
{
|
{
|
||||||
var options = new DbContextOptionsBuilder<JobTrackerContext>()
|
return TestHostFactory.CreateInMemoryDb();
|
||||||
.UseInMemoryDatabase(Guid.NewGuid().ToString())
|
|
||||||
.Options;
|
|
||||||
var currentUser = new Mock<ICurrentUserService>();
|
|
||||||
currentUser.SetupGet(service => service.UserId).Returns("user-1");
|
|
||||||
return new JobTrackerContext(options, currentUser.Object);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Mock<UserManager<ApplicationUser>> CreateUserManager()
|
private static Mock<UserManager<ApplicationUser>> CreateUserManager()
|
||||||
{
|
{
|
||||||
var store = new Mock<IUserStore<ApplicationUser>>();
|
return TestHostFactory.CreateUserManager();
|
||||||
return new Mock<UserManager<ApplicationUser>>(
|
|
||||||
store.Object,
|
|
||||||
Options.Create(new IdentityOptions()),
|
|
||||||
new PasswordHasher<ApplicationUser>(),
|
|
||||||
Array.Empty<IUserValidator<ApplicationUser>>(),
|
|
||||||
Array.Empty<IPasswordValidator<ApplicationUser>>(),
|
|
||||||
new UpperInvariantLookupNormalizer(),
|
|
||||||
new IdentityErrorDescriber(),
|
|
||||||
null!,
|
|
||||||
new NullLogger<UserManager<ApplicationUser>>()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,14 +5,13 @@ using JobTrackerApi.Controllers;
|
|||||||
using JobTrackerApi.Data;
|
using JobTrackerApi.Data;
|
||||||
using JobTrackerApi.Models;
|
using JobTrackerApi.Models;
|
||||||
using JobTrackerApi.Services;
|
using JobTrackerApi.Services;
|
||||||
|
using JobTrackerApi.Tests.TestSupport;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.Hosting;
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using Moq;
|
using Moq;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
@@ -708,12 +707,7 @@ public sealed class ProfileCvControllerTests
|
|||||||
|
|
||||||
private static JobTrackerContext CreateDb(string userId = "user-1")
|
private static JobTrackerContext CreateDb(string userId = "user-1")
|
||||||
{
|
{
|
||||||
var options = new DbContextOptionsBuilder<JobTrackerContext>()
|
return TestHostFactory.CreateInMemoryDb(userId);
|
||||||
.UseInMemoryDatabase(Guid.NewGuid().ToString())
|
|
||||||
.Options;
|
|
||||||
var currentUser = new Mock<ICurrentUserService>();
|
|
||||||
currentUser.SetupGet(x => x.UserId).Returns(userId);
|
|
||||||
return new JobTrackerContext(options, currentUser.Object);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static AppPaths CreatePaths()
|
private static AppPaths CreatePaths()
|
||||||
@@ -736,17 +730,6 @@ public sealed class ProfileCvControllerTests
|
|||||||
|
|
||||||
private static Mock<UserManager<ApplicationUser>> CreateUserManager()
|
private static Mock<UserManager<ApplicationUser>> CreateUserManager()
|
||||||
{
|
{
|
||||||
var store = new Mock<IUserStore<ApplicationUser>>();
|
return TestHostFactory.CreateUserManager();
|
||||||
return new Mock<UserManager<ApplicationUser>>(
|
|
||||||
store.Object,
|
|
||||||
Options.Create(new IdentityOptions()),
|
|
||||||
new PasswordHasher<ApplicationUser>(),
|
|
||||||
Array.Empty<IUserValidator<ApplicationUser>>(),
|
|
||||||
Array.Empty<IPasswordValidator<ApplicationUser>>(),
|
|
||||||
new UpperInvariantLookupNormalizer(),
|
|
||||||
new IdentityErrorDescriber(),
|
|
||||||
null!,
|
|
||||||
new NullLogger<UserManager<ApplicationUser>>()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,50 @@
|
|||||||
|
using JobTrackerApi.Data;
|
||||||
|
using JobTrackerApi.Models;
|
||||||
|
using JobTrackerApi.Services;
|
||||||
|
using Microsoft.AspNetCore.Identity;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.Extensions.Logging.Abstractions;
|
||||||
|
using Microsoft.Extensions.Options;
|
||||||
|
using Moq;
|
||||||
|
|
||||||
|
namespace JobTrackerApi.Tests.TestSupport;
|
||||||
|
|
||||||
|
public static class TestHostFactory
|
||||||
|
{
|
||||||
|
// Keep the EF-backed controller tests on the same minimal setup so they fail for product
|
||||||
|
// reasons, not because each file drifted into a slightly different fake host configuration.
|
||||||
|
public static JobTrackerContext CreateInMemoryDb(string userId = "user-1")
|
||||||
|
{
|
||||||
|
var options = new DbContextOptionsBuilder<JobTrackerContext>()
|
||||||
|
.UseInMemoryDatabase(Guid.NewGuid().ToString())
|
||||||
|
.Options;
|
||||||
|
var currentUser = new Mock<ICurrentUserService>();
|
||||||
|
currentUser.SetupGet(service => service.UserId).Returns(userId);
|
||||||
|
return new JobTrackerContext(options, currentUser.Object);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Mock<UserManager<ApplicationUser>> CreateUserManager(ApplicationUser? lookupUser = null)
|
||||||
|
{
|
||||||
|
var store = new Mock<IUserStore<ApplicationUser>>();
|
||||||
|
var manager = new Mock<UserManager<ApplicationUser>>(
|
||||||
|
store.Object,
|
||||||
|
Options.Create(new IdentityOptions()),
|
||||||
|
new PasswordHasher<ApplicationUser>(),
|
||||||
|
Array.Empty<IUserValidator<ApplicationUser>>(),
|
||||||
|
Array.Empty<IPasswordValidator<ApplicationUser>>(),
|
||||||
|
new UpperInvariantLookupNormalizer(),
|
||||||
|
new IdentityErrorDescriber(),
|
||||||
|
null!,
|
||||||
|
new NullLogger<UserManager<ApplicationUser>>()
|
||||||
|
);
|
||||||
|
|
||||||
|
if (lookupUser is not null)
|
||||||
|
{
|
||||||
|
manager
|
||||||
|
.Setup(x => x.FindByIdAsync(It.IsAny<string>()))
|
||||||
|
.ReturnsAsync((string id) => lookupUser.Id == id ? lookupUser : null);
|
||||||
|
}
|
||||||
|
|
||||||
|
return manager;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user