public async Task FindAsyncLoadsEntityWithComplexId() { DbContextDataProvider <DefaultDataProvider, TestContext> provider = CreateProvider(); var dbEntity = new DbEntityWithComplexId { Id = 1, Version = 1, Value = Guid.NewGuid().ToString() }; TestContext testContext = provider.GetContext(); testContext.ComplexEntities.Add(dbEntity); await testContext.SaveChangesAsync(); TestContextComplexIdRepository repository = CreateComplexIdRepository(provider); EntityWithComplexId result = await repository.FindAsync( new VersionId(dbEntity.Id, dbEntity.Version), CancellationToken.None); result.Id.Should() .Be(new VersionId(dbEntity.Id, dbEntity.Version)); result.Should() .BeEquivalentTo(result); }
public async Task UpdateSucceedsIfExpectedChangeTokenMatches() { DbContextDataProvider <DefaultDataProvider, TestContext> provider = CreateProvider(); string changeToken = Guid.NewGuid().ToString("N"); ITokenGenerator generator = CreateTokenGenerator(changeToken); TestContext testContext = provider.GetContext(); var dbEntity = new DbEntityWithChangeToken() { ChangeToken = changeToken }; testContext.ChangeTokenEntities.Add(dbEntity); await testContext.SaveChangesAsync(); TestContextChangeTokenExRepository repository = CreateChangeTokenExRepository(provider, generator); await repository.UpdateAsync( new EntityWithChangeTokenEx { Id = dbEntity.Id, ChangeToken = "abc", ExpectedChangeToken = changeToken }, CancellationToken.None); }
public async Task CreateUsesExplicitChangeToken() { DbContextDataProvider <DefaultDataProvider, TestContext> provider = CreateProvider(); string changeToken = Guid.NewGuid().ToString("N"); TestContextChangeTokenExRepository repository = CreateChangeTokenExRepository(provider, Substitute.For <ITokenGenerator>()); EntityWithChangeTokenEx result = await repository.CreateAsync( new EntityWithChangeTokenEx { ChangeToken = changeToken }, CancellationToken.None); result.ChangeToken.Should() .Be(changeToken); DbEntityWithChangeToken dbEntity = await provider.GetContext() .ChangeTokenEntities.FirstAsync(e => e.Id == result.Id); dbEntity.ChangeToken.Should() .Be(changeToken); }
public async Task CreateInitializesChangeTokenEx() { DbContextDataProvider <DefaultDataProvider, TestContext> provider = CreateProvider(); string changeToken = Guid.NewGuid().ToString("N"); ITokenGenerator generator = CreateTokenGenerator(changeToken); TestContextChangeTokenExRepository repository = CreateChangeTokenExRepository(provider, generator); EntityWithChangeTokenEx result = await repository.CreateAsync( new EntityWithChangeTokenEx(), CancellationToken.None); result.ChangeToken.Should() .Be(changeToken); DbEntityWithChangeToken dbEntity = await provider.GetContext() .ChangeTokenEntities.FirstAsync(e => e.Id == result.Id); dbEntity.ChangeToken.Should() .Be(changeToken); }
public async Task UpdateThrowsIfExpectedChangeTokenDoesNotMatch() { DbContextDataProvider <DefaultDataProvider, TestContext> provider = CreateProvider(); string changeToken = Guid.NewGuid().ToString("N"); ITokenGenerator generator = CreateTokenGenerator(changeToken); TestContext testContext = provider.GetContext(); var dbEntity = new DbEntityWithChangeToken() { ChangeToken = changeToken }; testContext.ChangeTokenEntities.Add(dbEntity); await testContext.SaveChangesAsync(); TestContextChangeTokenExRepository repository = CreateChangeTokenExRepository(provider, generator); await Assert.ThrowsAsync <EntityConcurrencyException>( () => repository.UpdateAsync( new EntityWithChangeTokenEx { Id = dbEntity.Id, ExpectedChangeToken = "abc" }, CancellationToken.None)); }