Browse Source

Tests fixed

pull/206/head
Sebastian Stehle 9 years ago
parent
commit
598af53457
  1. 8
      src/Squidex.Infrastructure/Commands/DomainObjectBase.cs
  2. 20
      tests/Squidex.Infrastructure.Tests/Commands/AggregateHandlerTests.cs
  3. 26
      tests/Squidex.Infrastructure.Tests/Commands/DomainObjectBaseTests.cs
  4. 2
      tests/Squidex.Infrastructure.Tests/PropertiesBagTests.cs

8
src/Squidex.Infrastructure/Commands/DomainObjectBase.cs

@ -84,17 +84,17 @@ namespace Squidex.Infrastructure.Commands
public async Task WriteAsync(ISemanticLog log) public async Task WriteAsync(ISemanticLog log)
{ {
var events = uncomittedEvents; var events = uncomittedEvents.ToArray();
if (events.Count > 0) if (events.Length > 0)
{ {
state.Version += events.Count; state.Version += events.Length;
await persistence.WriteSnapshotAsync(state); await persistence.WriteSnapshotAsync(state);
try try
{ {
await persistence.WriteEventsAsync(uncomittedEvents.ToArray()); await persistence.WriteEventsAsync(events);
} }
catch (Exception ex) catch (Exception ex)
{ {

20
tests/Squidex.Infrastructure.Tests/Commands/AggregateHandlerTests.cs

@ -25,7 +25,7 @@ namespace Squidex.Infrastructure.Commands
private readonly IServiceProvider serviceProvider = A.Fake<IServiceProvider>(); private readonly IServiceProvider serviceProvider = A.Fake<IServiceProvider>();
private readonly IStore store = A.Fake<IStore>(); private readonly IStore store = A.Fake<IStore>();
private readonly IStateFactory stateFactory = A.Fake<IStateFactory>(); private readonly IStateFactory stateFactory = A.Fake<IStateFactory>();
private readonly IPersistence<object> persistence = A.Fake<IPersistence<object>>(); private readonly IPersistence<MyDomainState> persistence = A.Fake<IPersistence<MyDomainState>>();
private readonly Envelope<IEvent> event1 = new Envelope<IEvent>(new MyEvent()); private readonly Envelope<IEvent> event1 = new Envelope<IEvent>(new MyEvent());
private readonly Envelope<IEvent> event2 = new Envelope<IEvent>(new MyEvent()); private readonly Envelope<IEvent> event2 = new Envelope<IEvent>(new MyEvent());
private readonly CommandContext context; private readonly CommandContext context;
@ -37,10 +37,10 @@ namespace Squidex.Infrastructure.Commands
public AggregateHandlerTests() public AggregateHandlerTests()
{ {
command = new MyCommand { AggregateId = domainObjectId }; command = new MyCommand { AggregateId = domainObjectId, ExpectedVersion = EtagVersion.Any };
context = new CommandContext(command); context = new CommandContext(command);
A.CallTo(() => store.WithSnapshots<MyDomainObject, object>(domainObjectId.ToString(), A<Func<object, Task>>.Ignored)) A.CallTo(() => store.WithSnapshots<MyDomainObject, MyDomainState>(domainObjectId.ToString(), A<Func<MyDomainState, Task>>.Ignored))
.Returns(persistence); .Returns(persistence);
A.CallTo(() => stateFactory.CreateAsync<MyDomainObject>(domainObjectId.ToString())) A.CallTo(() => stateFactory.CreateAsync<MyDomainObject>(domainObjectId.ToString()))
@ -111,12 +111,14 @@ namespace Squidex.Infrastructure.Commands
await sut.CreateSyncedAsync<MyDomainObject>(context, async x => await sut.CreateSyncedAsync<MyDomainObject>(context, async x =>
{ {
x.RaiseEvent(new MyEvent()); x.RaiseEvent(new MyEvent());
x.RaiseEvent(new MyEvent());
await Task.Yield(); await Task.Yield();
passedDomainObject = x; passedDomainObject = x;
}); });
Assert.Equal(1, domainObject.State.Version);
Assert.Equal(domainObject, passedDomainObject); Assert.Equal(domainObject, passedDomainObject);
Assert.NotNull(context.Result<EntityCreatedResult<Guid>>()); Assert.NotNull(context.Result<EntityCreatedResult<Guid>>());
@ -132,10 +134,12 @@ namespace Squidex.Infrastructure.Commands
await sut.CreateAsync<MyDomainObject>(context, x => await sut.CreateAsync<MyDomainObject>(context, x =>
{ {
x.RaiseEvent(new MyEvent()); x.RaiseEvent(new MyEvent());
x.RaiseEvent(new MyEvent());
passedDomainObject = x; passedDomainObject = x;
}); });
Assert.Equal(1, domainObject.State.Version);
Assert.Equal(domainObject, passedDomainObject); Assert.Equal(domainObject, passedDomainObject);
Assert.NotNull(context.Result<EntityCreatedResult<Guid>>()); Assert.NotNull(context.Result<EntityCreatedResult<Guid>>());
@ -151,10 +155,12 @@ namespace Squidex.Infrastructure.Commands
await sut.CreateSyncedAsync<MyDomainObject>(context, x => await sut.CreateSyncedAsync<MyDomainObject>(context, x =>
{ {
x.RaiseEvent(new MyEvent()); x.RaiseEvent(new MyEvent());
x.RaiseEvent(new MyEvent());
passedDomainObject = x; passedDomainObject = x;
}); });
Assert.Equal(1, domainObject.State.Version);
Assert.Equal(domainObject, passedDomainObject); Assert.Equal(domainObject, passedDomainObject);
Assert.NotNull(context.Result<EntityCreatedResult<Guid>>()); Assert.NotNull(context.Result<EntityCreatedResult<Guid>>());
@ -198,12 +204,14 @@ namespace Squidex.Infrastructure.Commands
await sut.UpdateAsync<MyDomainObject>(context, async x => await sut.UpdateAsync<MyDomainObject>(context, async x =>
{ {
x.RaiseEvent(new MyEvent()); x.RaiseEvent(new MyEvent());
x.RaiseEvent(new MyEvent());
await Task.Yield(); await Task.Yield();
passedDomainObject = x; passedDomainObject = x;
}); });
Assert.Equal(1, domainObject.State.Version);
Assert.Equal(domainObject, passedDomainObject); Assert.Equal(domainObject, passedDomainObject);
Assert.NotNull(context.Result<EntitySavedResult>()); Assert.NotNull(context.Result<EntitySavedResult>());
@ -219,12 +227,14 @@ namespace Squidex.Infrastructure.Commands
await sut.UpdateSyncedAsync<MyDomainObject>(context, async x => await sut.UpdateSyncedAsync<MyDomainObject>(context, async x =>
{ {
x.RaiseEvent(new MyEvent()); x.RaiseEvent(new MyEvent());
x.RaiseEvent(new MyEvent());
await Task.Yield(); await Task.Yield();
passedDomainObject = x; passedDomainObject = x;
}); });
Assert.Equal(1, domainObject.State.Version);
Assert.Equal(domainObject, passedDomainObject); Assert.Equal(domainObject, passedDomainObject);
Assert.NotNull(context.Result<EntitySavedResult>()); Assert.NotNull(context.Result<EntitySavedResult>());
@ -240,10 +250,12 @@ namespace Squidex.Infrastructure.Commands
await sut.UpdateAsync<MyDomainObject>(context, x => await sut.UpdateAsync<MyDomainObject>(context, x =>
{ {
x.RaiseEvent(new MyEvent()); x.RaiseEvent(new MyEvent());
x.RaiseEvent(new MyEvent());
passedDomainObject = x; passedDomainObject = x;
}); });
Assert.Equal(1, domainObject.State.Version);
Assert.Equal(domainObject, passedDomainObject); Assert.Equal(domainObject, passedDomainObject);
Assert.NotNull(context.Result<EntitySavedResult>()); Assert.NotNull(context.Result<EntitySavedResult>());
@ -259,10 +271,12 @@ namespace Squidex.Infrastructure.Commands
await sut.UpdateSyncedAsync<MyDomainObject>(context, x => await sut.UpdateSyncedAsync<MyDomainObject>(context, x =>
{ {
x.RaiseEvent(new MyEvent()); x.RaiseEvent(new MyEvent());
x.RaiseEvent(new MyEvent());
passedDomainObject = x; passedDomainObject = x;
}); });
Assert.Equal(1, domainObject.State.Version);
Assert.Equal(domainObject, passedDomainObject); Assert.Equal(domainObject, passedDomainObject);
Assert.NotNull(context.Result<EntitySavedResult>()); Assert.NotNull(context.Result<EntitySavedResult>());

26
tests/Squidex.Infrastructure.Tests/Commands/DomainObjectBaseTests.cs

@ -22,20 +22,20 @@ namespace Squidex.Infrastructure.Commands
public class DomainObjectBaseTests public class DomainObjectBaseTests
{ {
private readonly IStore store = A.Fake<IStore>(); private readonly IStore store = A.Fake<IStore>();
private readonly IPersistence<object> persistence = A.Fake<IPersistence<object>>(); private readonly IPersistence<MyDomainState> persistence = A.Fake<IPersistence<MyDomainState>>();
private readonly Guid id = Guid.NewGuid(); private readonly Guid id = Guid.NewGuid();
private readonly MyDomainObject sut = new MyDomainObject(); private readonly MyDomainObject sut = new MyDomainObject();
public DomainObjectBaseTests() public DomainObjectBaseTests()
{ {
A.CallTo(() => store.WithSnapshots<MyDomainObject, object>(id.ToString(), A<Func<object, Task>>.Ignored)) A.CallTo(() => store.WithSnapshots<MyDomainObject, MyDomainState>(id.ToString(), A<Func<MyDomainState, Task>>.Ignored))
.Returns(persistence); .Returns(persistence);
} }
[Fact] [Fact]
public void Should_instantiate() public void Should_instantiate()
{ {
Assert.Equal(EtagVersion.NotFound, sut.Version); Assert.Equal(EtagVersion.Empty, sut.Version);
} }
[Fact] [Fact]
@ -47,7 +47,7 @@ namespace Squidex.Infrastructure.Commands
sut.RaiseEvent(event1); sut.RaiseEvent(event1);
sut.RaiseEvent(event2); sut.RaiseEvent(event2);
Assert.Equal(EtagVersion.NotFound, sut.Version); Assert.Equal(EtagVersion.Empty, sut.Version);
Assert.Equal(new IEvent[] { event1, event2 }, sut.GetUncomittedEvents().Select(x => x.Payload).ToArray()); Assert.Equal(new IEvent[] { event1, event2 }, sut.GetUncomittedEvents().Select(x => x.Payload).ToArray());
sut.ClearUncommittedEvents(); sut.ClearUncommittedEvents();
@ -58,21 +58,14 @@ namespace Squidex.Infrastructure.Commands
[Fact] [Fact]
public async Task Should_write_state_and_events_when_saved() public async Task Should_write_state_and_events_when_saved()
{ {
A.CallTo(() => persistence.Version)
.Returns(100);
await sut.ActivateAsync(id.ToString(), store); await sut.ActivateAsync(id.ToString(), store);
Assert.Equal(100, sut.Version);
var event1 = new MyEvent(); var event1 = new MyEvent();
var event2 = new MyEvent(); var event2 = new MyEvent();
var newState = new MyDomainState();
sut.RaiseEvent(event1); sut.RaiseEvent(event1);
sut.RaiseEvent(event2); sut.RaiseEvent(event2);
var newState = new MyDomainState();
sut.UpdateState(newState); sut.UpdateState(newState);
await sut.WriteAsync(A.Fake<ISemanticLog>()); await sut.WriteAsync(A.Fake<ISemanticLog>());
@ -88,24 +81,17 @@ namespace Squidex.Infrastructure.Commands
[Fact] [Fact]
public async Task Should_ignore_exception_when_saving() public async Task Should_ignore_exception_when_saving()
{ {
A.CallTo(() => persistence.Version)
.Returns(100);
A.CallTo(() => persistence.WriteEventsAsync(A<IEnumerable<Envelope<IEvent>>>.Ignored)) A.CallTo(() => persistence.WriteEventsAsync(A<IEnumerable<Envelope<IEvent>>>.Ignored))
.Throws(new InvalidOperationException()); .Throws(new InvalidOperationException());
await sut.ActivateAsync(id.ToString(), store); await sut.ActivateAsync(id.ToString(), store);
Assert.Equal(100, sut.Version);
var event1 = new MyEvent(); var event1 = new MyEvent();
var event2 = new MyEvent(); var event2 = new MyEvent();
var newState = new MyDomainState();
sut.RaiseEvent(event1); sut.RaiseEvent(event1);
sut.RaiseEvent(event2); sut.RaiseEvent(event2);
var newState = new MyDomainState();
sut.UpdateState(newState); sut.UpdateState(newState);
await sut.WriteAsync(A.Fake<ISemanticLog>()); await sut.WriteAsync(A.Fake<ISemanticLog>());

2
tests/Squidex.Infrastructure.Tests/PropertiesBagTests.cs

@ -214,7 +214,7 @@ namespace Squidex.Infrastructure
{ {
bag.Set("Key", long.MaxValue); bag.Set("Key", long.MaxValue);
Assert.Throws<InvalidCastException>(() => bag["Key"].ToInt64(c)); Assert.Throws<InvalidCastException>(() => bag["Key"].ToInt32(c));
} }
[Fact] [Fact]

Loading…
Cancel
Save