Beispiel #1
0
        private static DateTime SetupDuration(CountdownViewModel model) {
            switch (model.SelectedDurationType) {
                case CountdownViewModel.DurationType.Seconds:
                    return DateTime.UtcNow.AddSeconds(model.Duration);

                case CountdownViewModel.DurationType.Minutes:
                    return DateTime.UtcNow.AddMinutes(model.Duration);

                case CountdownViewModel.DurationType.Hours:
                    return DateTime.UtcNow.AddHours(model.Duration);

                case CountdownViewModel.DurationType.Days:
                    return DateTime.UtcNow.AddDays(model.Duration);

                case CountdownViewModel.DurationType.Months:
                    return DateTime.UtcNow.AddMonths(model.Duration);

                case CountdownViewModel.DurationType.Years:
                    return DateTime.UtcNow.AddYears(model.Duration);

                default:
                    throw new ArgumentException("Invalid duration");
            }
        }
Beispiel #2
0
        public async void PostCountdownViewModel_RedirectsToIndexContainingTheCountdownIdInUrlHash() {
            var fakeAccount = new Account {
                Id = 123,
                DisplayName = "TestDisplayName"
            };
            const long fakeId = 12345;
            var fakeCountdownViewModel = new CountdownViewModel {
                Description = "Test description",
                EndsOnYear = 2013,
                EndsOnMonth = 12,
                EndsOnDay = 15,
                EndsOnHour = 22,
                EndsOnMinute = 37
            };

            var countdownController = TestableCountdownController.Create();
            countdownController.MockContextService
                .Setup(x => x.GetCurrentAccountAsync())
                .Returns(Task.FromResult(fakeAccount));

            countdownController.MockCountdownRepository
                .Setup(x => x.CreateAsync(It.IsAny<Countdown>()))
                .Returns((Countdown c) => {
                    c.Id = fakeId;
                    return Task.FromResult(c);
                });

            var result = await countdownController.Create(fakeCountdownViewModel) as RedirectResult;

            Assert.IsNotNull(result);
            StringAssert.EndsWith(string.Format("/Countdown/{0}", fakeId), result.Url);
        }
Beispiel #3
0
        public async void PostCountdownViewModel_CorrectlyCreatesCountdown() {
            var fakeRepository = new FakeCountdownRepository();
            var fakeAccount = new Account {
                Id = 123,
                DisplayName = "TestDisplayName"
            };
            var mockVoteService = new Mock<IVoteService>();
            var mockUserContextService = new Mock<IContextService>();
            mockUserContextService
                .Setup(x => x.GetCurrentAccountAsync())
                .Returns(Task.FromResult(fakeAccount));
            
            var countdownController = new CountdownController(fakeRepository, mockVoteService.Object, mockUserContextService.Object);
            ControllerContextHelper.SetupMockContext(countdownController);

            var fakeCountdownViewModel1 = new CountdownViewModel {
                Id = 12,
                Description = "Test description 1",
                SelectedCountdownType = CountdownViewModel.CountdownType.Duration,
                SelectedDurationType = CountdownViewModel.DurationType.Minutes,
                Duration = 10
            };

            var fakeCountdownViewModel2 = new CountdownViewModel {
                Id = 123,
                Description = "Test description 2",
                EndsOnYear = 2013,
                EndsOnMonth = 11,
                EndsOnDay = 14,
                EndsOnHour = 21,
                EndsOnMinute = 39,
                SelectedCountdownType = CountdownViewModel.CountdownType.Date
            };

            var expectedEndDate = new DateTime(
                fakeCountdownViewModel2.EndsOnYear, 
                fakeCountdownViewModel2.EndsOnMonth,
                fakeCountdownViewModel2.EndsOnDay,
                (int) fakeCountdownViewModel2.EndsOnHour,
                (int) fakeCountdownViewModel2.EndsOnMinute, 0).ToUniversalTime();

            await countdownController.Create(fakeCountdownViewModel1);
            await countdownController.Create(fakeCountdownViewModel2);

            IEnumerable<CountdownAggregate> countdowns = (await fakeRepository.GetLatestAsync(0, 10)).ToList();

            Assert.AreEqual(2, countdowns.Count());
            CountdownAggregate dateCountdown = countdowns.First(x => x.Id == 123);
            CountdownAggregate durationCountdown = countdowns.First(x => x.Id == 12);

            // Date countdown verification
            Assert.AreEqual(fakeCountdownViewModel2.Description, dateCountdown.Description);
            Assert.AreEqual(expectedEndDate, dateCountdown.EndsOn);
            Assert.IsTrue(dateCountdown.IsCreatedByCurrentUser);
            Assert.AreEqual(fakeAccount.DisplayName, dateCountdown.CreatedByName);
            Assert.AreEqual(DateTime.Today.Date, dateCountdown.CreatedOn.Date);

            // Duration countdown verification
            Assert.AreEqual(fakeCountdownViewModel1.Description, durationCountdown.Description);
            // difference of 10 min
            Assert.AreEqual(DateTimeOffset.UtcNow.AddMinutes(10).Minute, durationCountdown.EndsOn.Minute);
        }
 private async Task<Countdown> CreateCountdownAsync(CountdownViewModel countdownViewModel) {
     Account currentAccount = await _contextService.GetCurrentAccountAsync();
     Countdown countdown = countdownViewModel.ToCountdown(currentAccount);
     await _countdownRepository.CreateAsync(countdown);
     return countdown;
 }
 public async Task<ActionResult> Create(CountdownViewModel countdownViewModel) {
     Countdown countdown = await CreateCountdownAsync(countdownViewModel);
     string url = string.Concat("/Countdown/", countdown.Id);
     return Redirect(url);
 }