public async Task DoesNotFilterByCursor() { var change = new ManualStatusChangeEntity() { Timestamp = DateTimeOffset.MinValue }; Table.SetupQuery(change); Handler .Setup(x => x.Handle(Table.Object, change)) .Returns(Task.CompletedTask) .Verifiable(); var result = await Processor.FetchSince(Cursor); Assert.Equal(change.Timestamp.UtcDateTime, result); Handler.Verify(); }
private async Task <ActionResult> RunUpdateStatusTask(ManualStatusChangeEntity entity, [CallerMemberName] string memberName = "") { bool success = false; // Enumerate through the configured storages, trying to insert the entity. foreach (var storageService in new[] { StorageHelper.PrimaryStorage, StorageHelper.SecondaryStorage }) { if (success = await InsertEntityToStorage(storageService, entity)) { break; } } QuietLog.Event(ManuallyUpdatedStatusEvent, new Dictionary <string, string> { { "success", success.ToString() } }); TempData[UpdatedTempDataKey] = success; return(RedirectToAction(nameof(Index))); }
public async Task HandlesManualChanges() { var firstChange = new ManualStatusChangeEntity() { Timestamp = Cursor.ToUniversalTime() + TimeSpan.FromMinutes(1) }; var secondChange = new ManualStatusChangeEntity() { Timestamp = Cursor.ToUniversalTime() + TimeSpan.FromMinutes(2) }; Table.SetupQuery(secondChange, firstChange); var lastTimestamp = DateTimeOffset.MinValue; Handler .Setup(x => x.Handle(Table.Object, It.IsAny <ManualStatusChangeEntity>())) .Returns(Task.CompletedTask) .Callback <ITableWrapper, ManualStatusChangeEntity>((table, entity) => { var nextTimestamp = entity.Timestamp; Assert.True(nextTimestamp > lastTimestamp); lastTimestamp = nextTimestamp; }); var result = await Processor.FetchSince(Cursor); Assert.Equal(secondChange.Timestamp.UtcDateTime, result); Handler .Verify( x => x.Handle(Table.Object, firstChange), Times.Once()); Handler .Verify( x => x.Handle(Table.Object, secondChange), Times.Once()); }
private async Task <bool> InsertEntityToStorage(StorageService storageService, ManualStatusChangeEntity entity) { try { var table = storageService.GetCloudTable(); var operation = TableOperation.Insert(entity); await table.ExecuteAsync(operation); return(true); } catch (Exception e) { QuietLog.Log($"{nameof(AdminController)}.{nameof(InsertEntityToStorage)}", $"Failed to insert entity to table in {storageService.Name} storage!", e); } return(false); }