public async Task SaveAsync() { var log = await _dailyRepository.AddAsync(LogEventGenerator.Default, o => o.Notifications(false)); Assert.NotNull(log?.Id); var disposables = new List <IDisposable>(); var countdownEvent = new AsyncCountdownEvent(5); try { disposables.Add(_dailyRepository.DocumentsChanging.AddSyncHandler((o, args) => { Assert.Equal(log, args.Documents.First().Value); countdownEvent.Signal(); })); disposables.Add(_dailyRepository.DocumentsChanged.AddSyncHandler((o, args) => { Assert.Equal(log, args.Documents.First().Value); countdownEvent.Signal(); })); disposables.Add(_dailyRepository.DocumentsSaving.AddSyncHandler((o, args) => { Assert.Equal(log, args.Documents.First().Value); countdownEvent.Signal(); })); disposables.Add(_dailyRepository.DocumentsSaved.AddSyncHandler((o, args) => { Assert.Equal(log, args.Documents.First().Value); countdownEvent.Signal(); })); await _messageBus.SubscribeAsync <EntityChanged>((msg, ct) => { Assert.Equal(nameof(LogEvent), msg.Type); Assert.Equal(log.Id, msg.Id); Assert.Equal(ChangeType.Saved, msg.ChangeType); countdownEvent.Signal(); return(Task.CompletedTask); }); log.CompanyId = ObjectId.GenerateNewId().ToString(); var result = await _dailyRepository.SaveAsync(log); Assert.Equal(log.CompanyId, result.CompanyId); await countdownEvent.WaitAsync(new CancellationTokenSource(TimeSpan.FromSeconds(2)).Token); Assert.Equal(0, countdownEvent.CurrentCount); } finally { foreach (var disposable in disposables) { disposable.Dispose(); } disposables.Clear(); } }
public async Task ScriptPatchAllWithNoCacheAsync() { var utcNow = SystemClock.UtcNow; var logs = new List <LogEvent> { LogEventGenerator.Generate(ObjectId.GenerateNewId(utcNow.AddDays(-1)).ToString(), createdUtc: utcNow.AddDays(-1), companyId: "1"), LogEventGenerator.Generate(createdUtc: utcNow, companyId: "1"), LogEventGenerator.Generate(createdUtc: utcNow, companyId: "2"), }; await _dailyRepositoryWithNoCaching.AddAsync(logs, o => o.ImmediateConsistency()); Assert.Equal(3, await _dailyRepositoryWithNoCaching.IncrementValueAsync(q => q.Id(logs.Select(l => l.Id).ToArray()))); var results = await _dailyRepositoryWithNoCaching.GetAllByCompanyAsync("1"); Assert.Equal(2, results.Documents.Count); foreach (var document in results.Documents) { Assert.Equal("1", document.CompanyId); Assert.Equal(1, document.Value); } await _dailyRepositoryWithNoCaching.SaveAsync(logs, o => o.ImmediateConsistency()); results = await _dailyRepositoryWithNoCaching.GetAllByCompanyAsync("1"); Assert.Equal(2, results.Documents.Count); foreach (var document in results.Documents) { Assert.Equal("1", document.CompanyId); Assert.Equal(0, document.Value); } }