Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
CAP
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tsai
CAP
Commits
17b28e66
Commit
17b28e66
authored
Jun 23, 2017
by
yangxiaodong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
comment test project
parent
391adbf1
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
445 additions
and
446 deletions
+445
-446
DefaultPocoTest.cs
...p.Consistency.EntityFrameworkCore.Test/DefaultPocoTest.cs
+55
-55
MessageStoreTest.cs
....Consistency.EntityFrameworkCore.Test/MessageStoreTest.cs
+89
-89
MessageStoreWithGenericsTest.cs
....EntityFrameworkCore.Test/MessageStoreWithGenericsTest.cs
+62
-62
ConsistencyBuilderTest.cs
test/Cap.Consistency.Test/ConsistencyBuilderTest.cs
+52
-52
ConsistencyMessageManagerTest.cs
test/Cap.Consistency.Test/ConsistencyMessageManagerTest.cs
+61
-61
NoopMessageStore.cs
test/Cap.Consistency.Test/NoopMessageStore.cs
+32
-32
OperateResultTest.cs
test/Cap.Consistency.Test/OperateResultTest.cs
+0
-1
MessageManagerTestBase.cs
test/Shared/MessageManagerTestBase.cs
+94
-94
No files found.
test/Cap.Consistency.EntityFrameworkCore.Test/DefaultPocoTest.cs
View file @
17b28e66
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
test/Cap.Consistency.EntityFrameworkCore.Test/MessageStoreTest.cs
View file @
17b28e66
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
test/Cap.Consistency.EntityFrameworkCore.Test/MessageStoreWithGenericsTest.cs
View file @
17b28e66
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
test/Cap.Consistency.Test/ConsistencyBuilderTest.cs
View file @
17b28e66
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
test/Cap.Consistency.Test/ConsistencyMessageManagerTest.cs
View file @
17b28e66
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
test/Cap.Consistency.Test/NoopMessageStore.cs
View file @
17b28e66
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
test/Cap.Consistency.Test/OperateResultTest.cs
View file @
17b28e66
using
System.Linq
;
using
System.Linq
;
using
Cap.Consistency.Store
;
using
Xunit
;
using
Xunit
;
namespace
Cap.Consistency.Test
namespace
Cap.Consistency.Test
...
...
test/Shared/MessageManagerTestBase.cs
View file @
17b28e66
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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment