コード例 #1
0
            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();
            }
コード例 #2
0
        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)));
        }
コード例 #3
0
            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());
            }
コード例 #4
0
        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);
        }