コード例 #1
0
        public void AdminTest()
        {
            // Создадим пользователя
            var account = TestHelper.GetTestAccount();
            var user    = TestHelper.CreateTestUser(account.Id);
            var admin   = TestHelper.GetAccountAdminUser(account.Id);

            // Проверим, что админ может видеть чужие подписки
            SubscriptionListModel model;

            using (var controller = new SubscriptionsController(account.Id, admin.Id))
            {
                // прочитаем подписки админа
                var result = (ViewResultBase)controller.Index(user.Id);
                model = (SubscriptionListModel)result.Model;
            }
            Assert.Equal(user.Id, model.UserId);
            Assert.True(model.Subscriptions.Length > 0);
            Assert.True(model.Subscriptions.All(t => t.UserId == user.Id));

            // откроем подписку админа на редактирование
            var userSubscription            = model.Subscriptions.First();
            SubscriptionEditModel editModel = null;

            using (var controller = new SubscriptionsController(account.Id, user.Id))
            {
                var result = (ViewResultBase)controller.Edit(userSubscription.Id);
                editModel = (SubscriptionEditModel)result.Model;
                Assert.Null(editModel.MinimumDuration);
            }

            // сохраним изменения в подписке пользователя
            using (var controller = new SubscriptionsController(account.Id, admin.Id))
            {
                editModel.MinimumDuration = TimeSpan.FromSeconds(10);
                controller.Edit(editModel);
            }

            // проверим, что настройки подписки изменились
            using (var accountDbContext = account.CreateAccountDbContext())
            {
                var subscription = accountDbContext.Subscriptions.Find(userSubscription.Id);
                Assert.Equal(10, subscription.DurationMinimumInSeconds);
            }
        }