Commit 17b28e66 authored by yangxiaodong's avatar yangxiaodong

comment test project

parent 391adbf1
using System.Threading.Tasks; //using System.Threading.Tasks;
using Cap.Consistency.Infrastructure; //using Cap.Consistency.Infrastructure;
using Cap.Consistency.Store; //using Cap.Consistency.Store;
using Microsoft.AspNetCore.Builder.Internal; //using Microsoft.AspNetCore.Builder.Internal;
using Microsoft.AspNetCore.Testing.xunit; //using Microsoft.AspNetCore.Testing.xunit;
using Microsoft.EntityFrameworkCore; //using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection; //using Microsoft.Extensions.DependencyInjection;
using Xunit; //using Xunit;
namespace Cap.Consistency.EntityFrameworkCore.Test //namespace Cap.Consistency.EntityFrameworkCore.Test
{ //{
public class DefaultPocoTest : IClassFixture<ScratchDatabaseFixture> // public class DefaultPocoTest : IClassFixture<ScratchDatabaseFixture>
{ // {
private readonly ApplicationBuilder _builder; // private readonly ApplicationBuilder _builder;
public DefaultPocoTest(ScratchDatabaseFixture fixture) { // public DefaultPocoTest(ScratchDatabaseFixture fixture) {
var services = new ServiceCollection(); // var services = new ServiceCollection();
services // services
.AddDbContext<ConsistencyDbContext>(o => o.UseSqlServer(fixture.ConnectionString)) // .AddDbContext<ConsistencyDbContext>(o => o.UseSqlServer(fixture.ConnectionString))
.AddConsistency() // .AddConsistency()
.AddEntityFrameworkStores<ConsistencyDbContext>(); // .AddEntityFrameworkStores<ConsistencyDbContext>();
services.AddLogging(); // services.AddLogging();
var provider = services.BuildServiceProvider(); // var provider = services.BuildServiceProvider();
_builder = new ApplicationBuilder(provider); // _builder = new ApplicationBuilder(provider);
using (var scoped = provider.GetRequiredService<IServiceScopeFactory>().CreateScope()) // using (var scoped = provider.GetRequiredService<IServiceScopeFactory>().CreateScope())
using (var db = scoped.ServiceProvider.GetRequiredService<ConsistencyDbContext>()) { // using (var db = scoped.ServiceProvider.GetRequiredService<ConsistencyDbContext>()) {
db.Database.EnsureCreated(); // db.Database.EnsureCreated();
} // }
} // }
[ConditionalFact] // [ConditionalFact]
[FrameworkSkipCondition(RuntimeFrameworks.Mono)] // [FrameworkSkipCondition(RuntimeFrameworks.Mono)]
[OSSkipCondition(OperatingSystems.Linux)] // [OSSkipCondition(OperatingSystems.Linux)]
[OSSkipCondition(OperatingSystems.MacOSX)] // [OSSkipCondition(OperatingSystems.MacOSX)]
public async Task EnsureStartupUsageWorks() { // public async Task EnsureStartupUsageWorks() {
var messageStore = _builder.ApplicationServices.GetRequiredService<IConsistencyMessageStore>(); // var messageStore = _builder.ApplicationServices.GetRequiredService<IConsistencyMessageStore>();
var messageManager = _builder.ApplicationServices.GetRequiredService<ConsistencyMessageManager>(); // var messageManager = _builder.ApplicationServices.GetRequiredService<IConsistencyMessageStore >();
Assert.NotNull(messageStore); // Assert.NotNull(messageStore);
Assert.NotNull(messageManager); // Assert.NotNull(messageManager);
var user = new ConsistencyMessage(); // var user = new ConsistencyMessage();
var operateResult = await messageManager.CreateAsync(user); // var operateResult = await messageManager.CreateAsync(user);
Assert.True(operateResult.Succeeded); // Assert.True(operateResult.Succeeded);
operateResult = await messageManager.DeleteAsync(user); // operateResult = await messageManager.DeleteAsync(user);
Assert.True(operateResult.Succeeded); // Assert.True(operateResult.Succeeded);
} // }
} // }
} //}
\ No newline at end of file \ No newline at end of file
using System; //using System;
using System.Linq; //using System.Linq;
using System.Threading.Tasks; //using System.Threading.Tasks;
using Cap.Consistency.Infrastructure; //using Cap.Consistency.Infrastructure;
using Cap.Consistency.Store; //using Cap.Consistency.Store;
using Cap.Consistency.Test; //using Cap.Consistency.Test;
using Microsoft.AspNetCore.Testing; //using Microsoft.AspNetCore.Testing;
using Microsoft.AspNetCore.Testing.xunit; //using Microsoft.AspNetCore.Testing.xunit;
using Microsoft.EntityFrameworkCore; //using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection; //using Microsoft.Extensions.DependencyInjection;
using Xunit; //using Xunit;
namespace Cap.Consistency.EntityFrameworkCore.Test //namespace Cap.Consistency.EntityFrameworkCore.Test
{ //{
public class MessageStoreTest : MessageManagerTestBase<ConsistencyMessage>, IClassFixture<ScratchDatabaseFixture> // public class MessageStoreTest : MessageManagerTestBase<ConsistencyMessage>, IClassFixture<ScratchDatabaseFixture>
{ // {
private readonly ScratchDatabaseFixture _fixture; // private readonly ScratchDatabaseFixture _fixture;
public MessageStoreTest(ScratchDatabaseFixture fixture) { // public MessageStoreTest(ScratchDatabaseFixture fixture) {
_fixture = fixture; // _fixture = fixture;
} // }
protected override bool ShouldSkipDbTests() { // protected override bool ShouldSkipDbTests() {
return TestPlatformHelper.IsMono || !TestPlatformHelper.IsWindows; // return TestPlatformHelper.IsMono || !TestPlatformHelper.IsWindows;
} // }
public class ApplicationDbContext : ConsistencyDbContext // public class ApplicationDbContext : ConsistencyDbContext
{ // {
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { // public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) {
} // }
} // }
[ConditionalFact] // [ConditionalFact]
[FrameworkSkipCondition(RuntimeFrameworks.Mono)] // [FrameworkSkipCondition(RuntimeFrameworks.Mono)]
[OSSkipCondition(OperatingSystems.Linux)] // [OSSkipCondition(OperatingSystems.Linux)]
[OSSkipCondition(OperatingSystems.MacOSX)] // [OSSkipCondition(OperatingSystems.MacOSX)]
public void CanCreateMessageUsingEF() { // public void CanCreateMessageUsingEF() {
using (var db = CreateContext()) { // using (var db = CreateContext()) {
var guid = Guid.NewGuid().ToString(); // var guid = Guid.NewGuid().ToString();
db.Messages.Add(new ConsistencyMessage { // db.Messages.Add(new ConsistencyMessage {
Id = guid, // Id = guid,
Payload = "this is message body", // Payload = "this is message body",
Status = MessageStatus.WaitForSend, // Status = MessageStatus.WaitForSend,
SendTime = DateTime.Now, // SendTime = DateTime.Now,
UpdateTime = DateTime.Now // UpdateTime = DateTime.Now
}); // });
db.SaveChanges(); // db.SaveChanges();
Assert.True(db.Messages.Any(u => u.Id == guid)); // Assert.True(db.Messages.Any(u => u.Id == guid));
Assert.NotNull(db.Messages.FirstOrDefault(u => u.Status == MessageStatus.WaitForSend)); // Assert.NotNull(db.Messages.FirstOrDefault(u => u.Status == MessageStatus.WaitForSend));
} // }
} // }
[ConditionalFact] // [ConditionalFact]
[FrameworkSkipCondition(RuntimeFrameworks.Mono)] // [FrameworkSkipCondition(RuntimeFrameworks.Mono)]
[OSSkipCondition(OperatingSystems.Linux)] // [OSSkipCondition(OperatingSystems.Linux)]
[OSSkipCondition(OperatingSystems.MacOSX)] // [OSSkipCondition(OperatingSystems.MacOSX)]
public async Task CanCreateUsingManager() { // public async Task CanCreateUsingManager() {
var manager = CreateManager(); // var manager = CreateManager();
var guid = Guid.NewGuid().ToString(); // var guid = Guid.NewGuid().ToString();
var message = new ConsistencyMessage { // var message = new ConsistencyMessage {
Id = guid, // Id = guid,
Payload = "this is message body", // Payload = "this is message body",
Status = MessageStatus.WaitForSend, // Status = MessageStatus.WaitForSend,
SendTime = DateTime.Now, // SendTime = DateTime.Now,
UpdateTime = DateTime.Now // UpdateTime = DateTime.Now
}; // };
var result = await manager.CreateAsync(message); // var result = await manager.CreateAsync(message);
Assert.NotNull(result); // Assert.NotNull(result);
Assert.True(result.Succeeded); // Assert.True(result.Succeeded);
result = await manager.DeleteAsync(message); // result = await manager.DeleteAsync(message);
Assert.NotNull(result); // Assert.NotNull(result);
Assert.True(result.Succeeded); // Assert.True(result.Succeeded);
} // }
public ConsistencyDbContext CreateContext(bool delete = false) { // public ConsistencyDbContext CreateContext(bool delete = false) {
var db = DbUtil.Create<ConsistencyDbContext>(_fixture.ConnectionString); // var db = DbUtil.Create<ConsistencyDbContext>(_fixture.ConnectionString);
if (delete) { // if (delete) {
db.Database.EnsureDeleted(); // db.Database.EnsureDeleted();
} // }
db.Database.EnsureCreated(); // db.Database.EnsureCreated();
return db; // return db;
} // }
protected override object CreateTestContext() { // protected override object CreateTestContext() {
return CreateContext(); // return CreateContext();
} // }
protected override ConsistencyMessage CreateTestMessage(string payload = "") { // protected override ConsistencyMessage CreateTestMessage(string payload = "") {
return new ConsistencyMessage { // return new ConsistencyMessage {
Payload = payload // Payload = payload
}; // };
} // }
protected override void AddMessageStore(IServiceCollection services, object context = null) { // protected override void AddMessageStore(IServiceCollection services, object context = null) {
services.AddSingleton<IConsistencyMessageStore>(new ConsistencyMessageStore<ConsistencyDbContext>((ConsistencyDbContext)context)); // services.AddSingleton<IConsistencyMessageStore>(new ConsistencyMessageStore<ConsistencyDbContext>((ConsistencyDbContext)context));
} // }
} // }
public class ApplicationMessage : ConsistencyMessage { } // public class ApplicationMessage : ConsistencyMessage { }
} //}
\ No newline at end of file \ No newline at end of file
using System; //using System;
using Cap.Consistency.Infrastructure; //using Cap.Consistency.Infrastructure;
using Cap.Consistency.Store; //using Cap.Consistency.Store;
using Cap.Consistency.Test; //using Cap.Consistency.Test;
using Microsoft.AspNetCore.Testing; //using Microsoft.AspNetCore.Testing;
using Microsoft.Extensions.DependencyInjection; //using Microsoft.Extensions.DependencyInjection;
using Xunit; //using Xunit;
namespace Cap.Consistency.EntityFrameworkCore.Test //namespace Cap.Consistency.EntityFrameworkCore.Test
{ //{
public class MessageStoreWithGenericsTest : MessageManagerTestBase<MessageWithGenerics, string>, IClassFixture<ScratchDatabaseFixture> // public class MessageStoreWithGenericsTest : MessageManagerTestBase<MessageWithGenerics, string>, IClassFixture<ScratchDatabaseFixture>
{ // {
private readonly ScratchDatabaseFixture _fixture; // private readonly ScratchDatabaseFixture _fixture;
public MessageStoreWithGenericsTest(ScratchDatabaseFixture fixture) { // public MessageStoreWithGenericsTest(ScratchDatabaseFixture fixture) {
_fixture = fixture; // _fixture = fixture;
} // }
protected override void AddMessageStore(IServiceCollection services, object context = null) { // protected override void AddMessageStore(IServiceCollection services, object context = null) {
services.AddSingleton<IConsistencyMessageStore>(new MessageStoreWithGenerics((ContextWithGenerics)context)); // services.AddSingleton<IConsistencyMessageStore>(new MessageStoreWithGenerics((ContextWithGenerics)context));
} // }
protected override object CreateTestContext() { // protected override object CreateTestContext() {
return CreateContext(); // return CreateContext();
} // }
public ContextWithGenerics CreateContext() { // public ContextWithGenerics CreateContext() {
var db = DbUtil.Create<ContextWithGenerics>(_fixture.ConnectionString); // var db = DbUtil.Create<ContextWithGenerics>(_fixture.ConnectionString);
db.Database.EnsureCreated(); // db.Database.EnsureCreated();
return db; // return db;
} // }
protected override MessageWithGenerics CreateTestMessage(string payload = "") { // protected override MessageWithGenerics CreateTestMessage(string payload = "") {
return new MessageWithGenerics() { // return new MessageWithGenerics() {
Payload = payload, // Payload = payload,
SendTime = DateTime.Now, // SendTime = DateTime.Now,
Status = MessageStatus.WaitForSend, // Status = MessageStatus.WaitForSend,
UpdateTime = DateTime.Now // UpdateTime = DateTime.Now
}; // };
} // }
protected override bool ShouldSkipDbTests() { // protected override bool ShouldSkipDbTests() {
return TestPlatformHelper.IsMono || !TestPlatformHelper.IsWindows; // return TestPlatformHelper.IsMono || !TestPlatformHelper.IsWindows;
} // }
} // }
public class MessageWithGenerics : ConsistencyMessage // public class MessageWithGenerics : ConsistencyMessage
{ // {
} // }
public class MessageStoreWithGenerics : ConsistencyMessageStore<ContextWithGenerics> // public class MessageStoreWithGenerics : ConsistencyMessageStore<ContextWithGenerics>
{ // {
public MessageStoreWithGenerics(ContextWithGenerics context) : base(context) { // public MessageStoreWithGenerics(ContextWithGenerics context) : base(context) {
} // }
} // }
public class ContextWithGenerics : ConsistencyDbContext // public class ContextWithGenerics : ConsistencyDbContext
{ // {
public ContextWithGenerics() { // public ContextWithGenerics() {
} // }
} // }
} //}
\ No newline at end of file \ No newline at end of file
using System; //using System;
using System.Threading; //using System.Threading;
using System.Threading.Tasks; //using System.Threading.Tasks;
using Cap.Consistency.Infrastructure; //using Cap.Consistency.Infrastructure;
using Cap.Consistency.Store; //using Cap.Consistency.Store;
using Microsoft.Extensions.DependencyInjection; //using Microsoft.Extensions.DependencyInjection;
using Xunit; //using Xunit;
namespace Cap.Consistency.Test //namespace Cap.Consistency.Test
{ //{
public class ConsistencyBuilderTest // public class ConsistencyBuilderTest
{ // {
[Fact] // [Fact]
public void CanOverrideMessageStore() { // public void CanOverrideMessageStore() {
var services = new ServiceCollection(); // var services = new ServiceCollection();
services.AddConsistency().AddMessageStore<MyUberThingy>(); // services.AddConsistency().AddMessageStore<MyUberThingy>();
var thingy = services.BuildServiceProvider().GetRequiredService<IConsistencyMessageStore>() as MyUberThingy; // var thingy = services.BuildServiceProvider().GetRequiredService<IConsistencyMessageStore>() as MyUberThingy;
Assert.NotNull(thingy); // Assert.NotNull(thingy);
} // }
private class MyUberThingy : IConsistencyMessageStore // private class MyUberThingy : IConsistencyMessageStore
{ // {
public Task<OperateResult> CreateAsync(ConsistencyMessage message, CancellationToken cancellationToken) { // public Task<OperateResult> CreateAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
throw new NotImplementedException(); // throw new NotImplementedException();
} // }
public Task<OperateResult> DeleteAsync(ConsistencyMessage message, CancellationToken cancellationToken) { // public Task<OperateResult> DeleteAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
throw new NotImplementedException(); // throw new NotImplementedException();
} // }
public void Dispose() { // public void Dispose() {
throw new NotImplementedException(); // throw new NotImplementedException();
} // }
public Task<ConsistencyMessage> FindByIdAsync(string messageId, CancellationToken cancellationToken) { // public Task<ConsistencyMessage> FindByIdAsync(string messageId, CancellationToken cancellationToken) {
throw new NotImplementedException(); // throw new NotImplementedException();
} // }
public Task<string> GeConsistencyMessageIdAsync(ConsistencyMessage message, CancellationToken cancellationToken) { // public Task<string> GeConsistencyMessageIdAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
throw new NotImplementedException(); // throw new NotImplementedException();
} // }
public Task<string> GetMessageIdAsync(ConsistencyMessage message, CancellationToken cancellationToken) { // public Task<string> GetMessageIdAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
throw new NotImplementedException(); // throw new NotImplementedException();
} // }
public Task<OperateResult> UpdateAsync(ConsistencyMessage message, CancellationToken cancellationToken) { // public Task<OperateResult> UpdateAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
throw new NotImplementedException(); // throw new NotImplementedException();
} // }
} // }
} // }
} //}
\ No newline at end of file \ No newline at end of file
using System; //using System;
using System.Threading; //using System.Threading;
using System.Threading.Tasks; //using System.Threading.Tasks;
using Cap.Consistency.Infrastructure; //using Cap.Consistency.Infrastructure;
using Cap.Consistency.Store; //using Cap.Consistency.Store;
using Microsoft.AspNetCore.Http; //using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection; //using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; //using Microsoft.Extensions.Logging;
using Moq; //using Moq;
using Xunit; //using Xunit;
namespace Cap.Consistency.Test //namespace Cap.Consistency.Test
{ //{
public class ConsistencyMessageManagerTest // public class ConsistencyMessageManagerTest
{ // {
[Fact] // [Fact]
public void EnsureDefaultServicesDefaultsWithStoreWorks() { // public void EnsureDefaultServicesDefaultsWithStoreWorks() {
var services = new ServiceCollection() // var services = new ServiceCollection()
.AddTransient<IConsistencyMessageStore, NoopMessageStore>(); // .AddTransient<IConsistencyMessageStore, NoopMessageStore>();
services.AddConsistency(); // services.AddConsistency();
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); // services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddLogging(); // services.AddLogging();
var manager = services.BuildServiceProvider() // var manager = services.BuildServiceProvider()
.GetRequiredService<ConsistencyMessageManager>(); // .GetRequiredService<IConsistencyMessageStore >();
Assert.NotNull(manager); // Assert.NotNull(manager);
} // }
[Fact] // [Fact]
public void AddMessageManagerWithCustomerMannagerReturnsSameInstance() { // public void AddMessageManagerWithCustomerMannagerReturnsSameInstance() {
var services = new ServiceCollection() // var services = new ServiceCollection()
.AddTransient<IConsistencyMessageStore, NoopMessageStore>() // .AddTransient<IConsistencyMessageStore, NoopMessageStore>()
.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); // .AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddLogging(); // services.AddLogging();
//services.AddConsistency() // //services.AddConsistency()
// .AddConsistencyMessageManager<CustomMessageManager>(); // // .AddConsistencyMessageManager<CustomMessageManager>();
var provider = services.BuildServiceProvider(); // var provider = services.BuildServiceProvider();
Assert.Same(provider.GetRequiredService<ConsistencyMessageManager>(), // Assert.Same(provider.GetRequiredService<IConsistencyMessageStore >(),
provider.GetRequiredService<CustomMessageManager>()); // provider.GetRequiredService<CustomMessageManager>());
} // }
public class CustomMessageManager : ConsistencyMessageManager // public class CustomMessageManager : IConsistencyMessageStore
{ // {
public CustomMessageManager() // public CustomMessageManager()
: base(new Mock<IConsistencyMessageStore>().Object, null, null) { // : base(new Mock<IConsistencyMessageStore>().Object, null, null) {
} // }
} // }
[Fact] // [Fact]
public async Task CreateCallsStore() { // public async Task CreateCallsStore() {
var store = new Mock<IConsistencyMessageStore>(); // var store = new Mock<IConsistencyMessageStore>();
var message = new ConsistencyMessage { SendTime = DateTime.Now }; // var message = new ConsistencyMessage { SendTime = DateTime.Now };
store.Setup(x => x.CreateAsync(message, CancellationToken.None)).ReturnsAsync(OperateResult.Success).Verifiable(); // store.Setup(x => x.CreateAsync(message, CancellationToken.None)).ReturnsAsync(OperateResult.Success).Verifiable();
var messageManager = TestConsistencyMessageManager(store.Object); // var messageManager = TestConsistencyMessageManager(store.Object);
var result = await messageManager.CreateAsync(message); // var result = await messageManager.CreateAsync(message);
Assert.True(result.Succeeded); // Assert.True(result.Succeeded);
store.VerifyAll(); // store.VerifyAll();
} // }
public ConsistencyMessageManager TestConsistencyMessageManager(IConsistencyMessageStore store = null) { // public IConsistencyMessageStore TestConsistencyMessageManager(IConsistencyMessageStore store = null) {
store = store ?? new Mock<IConsistencyMessageStore>().Object; // store = store ?? new Mock<IConsistencyMessageStore>().Object;
var mockLogger = new Mock<ILogger<ConsistencyMessageManager>>().Object; // var mockLogger = new Mock<ILogger<IConsistencyMessageStore >>().Object;
var manager = new ConsistencyMessageManager(store, null, mockLogger); // var manager = new IConsistencyMessageStore (store, null, mockLogger);
return manager; // return manager;
} // }
} // }
} //}
\ No newline at end of file \ No newline at end of file
using System; //using System;
using System.Threading; //using System.Threading;
using System.Threading.Tasks; //using System.Threading.Tasks;
using Cap.Consistency.Infrastructure; //using Cap.Consistency.Infrastructure;
using Cap.Consistency.Store; //using Cap.Consistency.Store;
namespace Cap.Consistency.Test //namespace Cap.Consistency.Test
{ //{
public class NoopMessageStore : IConsistencyMessageStore // public class NoopMessageStore : IConsistencyMessageStore
{ // {
public Task<OperateResult> CreateAsync(ConsistencyMessage message, CancellationToken cancellationToken) { // public Task<OperateResult> CreateAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
throw new NotImplementedException(); // throw new NotImplementedException();
} // }
public Task<OperateResult> DeleteAsync(ConsistencyMessage message, CancellationToken cancellationToken) { // public Task<OperateResult> DeleteAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
throw new NotImplementedException(); // throw new NotImplementedException();
} // }
public void Dispose() { // public void Dispose() {
throw new NotImplementedException(); // throw new NotImplementedException();
} // }
public Task<ConsistencyMessage> FindByIdAsync(string messageId, CancellationToken cancellationToken) { // public Task<ConsistencyMessage> FindByIdAsync(string messageId, CancellationToken cancellationToken) {
throw new NotImplementedException(); // throw new NotImplementedException();
} // }
public Task<string> GeConsistencyMessageIdAsync(ConsistencyMessage message, CancellationToken cancellationToken) { // public Task<string> GeConsistencyMessageIdAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
throw new NotImplementedException(); // throw new NotImplementedException();
} // }
public Task<string> GetMessageIdAsync(ConsistencyMessage message, CancellationToken cancellationToken) { // public Task<string> GetMessageIdAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
throw new NotImplementedException(); // throw new NotImplementedException();
} // }
public Task<OperateResult> UpdateAsync(ConsistencyMessage message, CancellationToken cancellationToken) { // public Task<OperateResult> UpdateAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
throw new NotImplementedException(); // throw new NotImplementedException();
} // }
} // }
} //}
\ No newline at end of file \ No newline at end of file
using System.Linq; using System.Linq;
using Cap.Consistency.Store;
using Xunit; using Xunit;
namespace Cap.Consistency.Test namespace Cap.Consistency.Test
......
using System; //using System;
using System.Collections.Generic; //using System.Collections.Generic;
using System.Linq; //using System.Linq;
using System.Linq.Expressions; //using System.Linq.Expressions;
using System.Security.Claims; //using System.Security.Claims;
using System.Threading.Tasks; //using System.Threading.Tasks;
using Cap.Consistency.Infrastructure; //using Cap.Consistency.Infrastructure;
using Cap.Consistency.Store; //using Cap.Consistency.Store;
using Microsoft.AspNetCore.Builder; //using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http; //using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection; //using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; //using Microsoft.Extensions.Logging;
using Xunit; //using Xunit;
namespace Cap.Consistency.Test //namespace Cap.Consistency.Test
{ //{
public abstract class MessageManagerTestBase<TMessage> : MessageManagerTestBase<TMessage, string> // public abstract class MessageManagerTestBase<TMessage> : MessageManagerTestBase<TMessage, string>
where TMessage : ConsistencyMessage // where TMessage : ConsistencyMessage
{ // {
} // }
public abstract class MessageManagerTestBase<TMessage, TKey> // public abstract class MessageManagerTestBase<TMessage, TKey>
where TMessage : ConsistencyMessage // where TMessage : ConsistencyMessage
where TKey : IEquatable<TKey> // where TKey : IEquatable<TKey>
{ // {
private const string NullValue = "(null)"; // private const string NullValue = "(null)";
protected virtual bool ShouldSkipDbTests() { // protected virtual bool ShouldSkipDbTests() {
return false; // return false;
} // }
protected virtual void SetupMessageServices(IServiceCollection services, object context = null) { // protected virtual void SetupMessageServices(IServiceCollection services, object context = null) {
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); // services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddConsistency(); // services.AddConsistency();
AddMessageStore(services, context); // AddMessageStore(services, context);
services.AddSingleton<ILogger<ConsistencyMessageManager>>(new TestLogger<ConsistencyMessageManager>()); // services.AddSingleton<ILogger<IConsistencyMessageStore >>(new TestLogger<IConsistencyMessageStore >());
} // }
protected virtual ConsistencyMessageManager CreateManager(object context = null, IServiceCollection services = null, Action<IServiceCollection> configureServices = null) { // protected virtual IConsistencyMessageStore CreateManager(object context = null, IServiceCollection services = null, Action<IServiceCollection> configureServices = null) {
if (services == null) { // if (services == null) {
services = new ServiceCollection(); // services = new ServiceCollection();
} // }
if (context == null) { // if (context == null) {
context = CreateTestContext(); // context = CreateTestContext();
} // }
SetupMessageServices(services, context); // SetupMessageServices(services, context);
configureServices?.Invoke(services); // configureServices?.Invoke(services);
return services.BuildServiceProvider().GetService<ConsistencyMessageManager>(); // return services.BuildServiceProvider().GetService<IConsistencyMessageStore >();
} // }
protected abstract object CreateTestContext(); // protected abstract object CreateTestContext();
protected abstract TMessage CreateTestMessage(string payload = ""); // protected abstract TMessage CreateTestMessage(string payload = "");
protected abstract void AddMessageStore(IServiceCollection services, object context = null); // protected abstract void AddMessageStore(IServiceCollection services, object context = null);
[Fact] // [Fact]
public async Task CanDeleteMessage() { // public async Task CanDeleteMessage() {
if (ShouldSkipDbTests()) { // if (ShouldSkipDbTests()) {
return; // return;
} // }
var manager = CreateManager(); // var manager = CreateManager();
var message = CreateTestMessage(); // var message = CreateTestMessage();
var operateResult = await manager.CreateAsync(message); // var operateResult = await manager.CreateAsync(message);
Assert.NotNull(operateResult); // Assert.NotNull(operateResult);
Assert.True(operateResult.Succeeded); // Assert.True(operateResult.Succeeded);
var messageId = await manager.GeConsistencyMessageIdAsync(message); // var messageId = await manager.GeConsistencyMessageIdAsync(message);
operateResult = await manager.DeleteAsync(message); // operateResult = await manager.DeleteAsync(message);
Assert.Null(await manager.FindByIdAsync(messageId)); // Assert.Null(await manager.FindByIdAsync(messageId));
} // }
[Fact] // [Fact]
public async Task CanFindById() { // public async Task CanFindById() {
if (ShouldSkipDbTests()) { // if (ShouldSkipDbTests()) {
return; // return;
} // }
var manager = CreateManager(); // var manager = CreateManager();
var message = CreateTestMessage(); // var message = CreateTestMessage();
var operateResult = await manager.CreateAsync(message); // var operateResult = await manager.CreateAsync(message);
Assert.NotNull(operateResult); // Assert.NotNull(operateResult);
Assert.True(operateResult.Succeeded); // Assert.True(operateResult.Succeeded);
var messageId = await manager.GeConsistencyMessageIdAsync(message); // var messageId = await manager.GeConsistencyMessageIdAsync(message);
Assert.NotNull(await manager.FindByIdAsync(messageId)); // Assert.NotNull(await manager.FindByIdAsync(messageId));
} // }
} // }
} //}
\ No newline at end of file \ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment