public void UnchangedExpiryDateDoesNotGenerateMetric() { // Arrange IDbSet <Poll> existingPolls = DbSetTestHelper.CreateMockDbSet <Poll>(); Poll existingPoll = CreatePoll(); DateTime currentExpiry = DateTime.UtcNow.AddHours(1); existingPoll.ExpiryDateUtc = currentExpiry; existingPolls.Add(existingPoll); IContextFactory contextFactory = ContextFactoryTestHelper.CreateContextFactory(existingPolls); ManagePollExpiryRequest request = new ManagePollExpiryRequest { ExpiryDateUtc = currentExpiry }; Mock <IMetricHandler> metricHandler = new Mock <IMetricHandler>(); ManageExpiryController controller = CreateManageExpiryController(contextFactory, metricHandler.Object); // Act controller.Put(PollManageGuid, request); // Assert metricHandler.Verify(m => m.HandleExpiryChangedEvent(It.IsAny <DateTimeOffset?>(), It.IsAny <Guid>()), Times.Never()); }
public void Put(Guid manageId, ManagePollExpiryRequest updateRequest) { using (var context = _contextFactory.CreateContext()) { Poll poll = PollByManageId(manageId, context); if (updateRequest.ExpiryDateUtc.HasValue && updateRequest.ExpiryDateUtc < DateTime.UtcNow) { ModelState.AddModelError("ExpiryDateUtc", "Invalid ExpiryDateUtc"); } if (!ModelState.IsValid) { ThrowError(HttpStatusCode.BadRequest, ModelState); } if (poll.ExpiryDateUtc == updateRequest.ExpiryDateUtc) { return; } poll.ExpiryDateUtc = updateRequest.ExpiryDateUtc; poll.LastUpdatedUtc = DateTime.UtcNow; _metricHandler.HandleExpiryChangedEvent(poll.ExpiryDateUtc, poll.UUID); context.SaveChanges(); } }
public void UnknownManageId_ReturnsNotFound() { IDbSet <Poll> existingPolls = DbSetTestHelper.CreateMockDbSet <Poll>(); IContextFactory contextFactory = ContextFactoryTestHelper.CreateContextFactory(existingPolls); ManagePollExpiryRequest request = new ManagePollExpiryRequest { }; ManageExpiryController controller = CreateManageExpiryController(contextFactory, new Mock <IMetricHandler>().Object); controller.Put(Guid.NewGuid(), request); }
public void ExpiryInThePast_IsRejected() { IDbSet <Poll> existingPolls = DbSetTestHelper.CreateMockDbSet <Poll>(); Poll existingPoll = CreatePoll(); existingPolls.Add(existingPoll); DateTime past = DateTime.UtcNow.AddHours(-1); IContextFactory contextFactory = ContextFactoryTestHelper.CreateContextFactory(existingPolls); ManagePollExpiryRequest request = new ManagePollExpiryRequest { ExpiryDateUtc = past }; ManageExpiryController controller = CreateManageExpiryController(contextFactory, new Mock <IMetricHandler>().Object); controller.Put(PollManageGuid, request); }
public void SetExpiry_SetsExpiry() { IDbSet <Poll> existingPolls = DbSetTestHelper.CreateMockDbSet <Poll>(); Poll existingPoll = CreatePoll(); existingPolls.Add(existingPoll); DateTime expiry = DateTime.UtcNow.AddHours(1); IContextFactory contextFactory = ContextFactoryTestHelper.CreateContextFactory(existingPolls); ManagePollExpiryRequest request = new ManagePollExpiryRequest { ExpiryDateUtc = expiry }; ManageExpiryController controller = CreateManageExpiryController(contextFactory, new Mock <IMetricHandler>().Object); controller.Put(PollManageGuid, request); Assert.AreEqual(expiry, existingPoll.ExpiryDateUtc); }
public void NullExpiry_SetsExpiryToNull() { // Arrange IDbSet <Poll> existingPolls = DbSetTestHelper.CreateMockDbSet <Poll>(); Poll existingPoll = CreatePoll(); existingPolls.Add(existingPoll); IContextFactory contextFactory = ContextFactoryTestHelper.CreateContextFactory(existingPolls); ManagePollExpiryRequest request = new ManagePollExpiryRequest { }; ManageExpiryController controller = CreateManageExpiryController(contextFactory, new Mock <IMetricHandler>().Object); controller.Validate(request); // Act controller.Put(PollManageGuid, request); // Assert Assert.IsNull(existingPoll.ExpiryDateUtc); }
public void ChangedExpiryDateGeneratesMetric() { // Arrange IDbSet <Poll> existingPolls = DbSetTestHelper.CreateMockDbSet <Poll>(); Poll existingPoll = CreatePoll(); existingPolls.Add(existingPoll); DateTime future = DateTime.UtcNow.AddHours(1); IContextFactory contextFactory = ContextFactoryTestHelper.CreateContextFactory(existingPolls); ManagePollExpiryRequest request = new ManagePollExpiryRequest { ExpiryDateUtc = future }; Mock <IMetricHandler> metricHandler = new Mock <IMetricHandler>(); ManageExpiryController controller = CreateManageExpiryController(contextFactory, metricHandler.Object); // Act controller.Put(PollManageGuid, request); // Assert metricHandler.Verify(m => m.HandleExpiryChangedEvent(future, existingPoll.UUID), Times.Once()); }