예제 #1
0
        public void IsStatusChangeAllowed_As_Admin()
        {
            Status IN_PROGRESS  = _dbContext.Statuses.Single(s => s.Code == Status.IN_PROGRESS_CODE);
            Status SUBMITTED    = _dbContext.Statuses.Single(s => s.Code == Status.SUBMITTED_CODE);
            Status APPROVED     = _dbContext.Statuses.Single(s => s.Code == Status.APPROVED_CODE);
            Status DECLINED     = _dbContext.Statuses.Single(s => s.Code == Status.DECLINED_CODE);
            Status ACCEPTED_TOS = _dbContext.Statuses.Single(s => s.Code == Status.ACCEPTED_TOS_CODE);
            Status DECLINED_TOS = _dbContext.Statuses.Single(s => s.Code == Status.DECLINED_TOS_CODE);

            // add the admin role to the user
            TestUtils.AddAdminRoleToUser(_httpContext?.HttpContext?.User);

            // check all of the permutations for workflow state changes
            Assert.True(_service.IsStatusChangeAllowed(null, IN_PROGRESS));
            Assert.False(_service.IsStatusChangeAllowed(null, SUBMITTED));
            Assert.False(_service.IsStatusChangeAllowed(null, APPROVED));
            Assert.False(_service.IsStatusChangeAllowed(null, DECLINED));
            Assert.False(_service.IsStatusChangeAllowed(null, ACCEPTED_TOS));
            Assert.False(_service.IsStatusChangeAllowed(null, DECLINED_TOS));

            Assert.False(_service.IsStatusChangeAllowed(IN_PROGRESS, null));
            Assert.False(_service.IsStatusChangeAllowed(IN_PROGRESS, IN_PROGRESS));
            Assert.True(_service.IsStatusChangeAllowed(IN_PROGRESS, SUBMITTED));
            Assert.False(_service.IsStatusChangeAllowed(IN_PROGRESS, APPROVED));
            Assert.False(_service.IsStatusChangeAllowed(IN_PROGRESS, DECLINED));
            Assert.False(_service.IsStatusChangeAllowed(IN_PROGRESS, ACCEPTED_TOS));
            Assert.False(_service.IsStatusChangeAllowed(IN_PROGRESS, DECLINED_TOS));

            Assert.False(_service.IsStatusChangeAllowed(SUBMITTED, null));
            Assert.True(_service.IsStatusChangeAllowed(SUBMITTED, IN_PROGRESS));
            Assert.False(_service.IsStatusChangeAllowed(SUBMITTED, SUBMITTED));
            Assert.True(_service.IsStatusChangeAllowed(SUBMITTED, APPROVED));
            Assert.True(_service.IsStatusChangeAllowed(SUBMITTED, DECLINED));
            Assert.False(_service.IsStatusChangeAllowed(SUBMITTED, ACCEPTED_TOS));
            Assert.False(_service.IsStatusChangeAllowed(SUBMITTED, DECLINED_TOS));

            Assert.False(_service.IsStatusChangeAllowed(APPROVED, null));
            Assert.False(_service.IsStatusChangeAllowed(APPROVED, IN_PROGRESS));
            Assert.False(_service.IsStatusChangeAllowed(APPROVED, SUBMITTED));
            Assert.False(_service.IsStatusChangeAllowed(APPROVED, APPROVED));
            Assert.False(_service.IsStatusChangeAllowed(APPROVED, DECLINED));
            Assert.True(_service.IsStatusChangeAllowed(APPROVED, ACCEPTED_TOS));
            Assert.True(_service.IsStatusChangeAllowed(APPROVED, DECLINED_TOS));

            Assert.False(_service.IsStatusChangeAllowed(DECLINED, null));
            Assert.True(_service.IsStatusChangeAllowed(DECLINED, IN_PROGRESS));
            Assert.False(_service.IsStatusChangeAllowed(DECLINED, SUBMITTED));
            Assert.False(_service.IsStatusChangeAllowed(DECLINED, APPROVED));
            Assert.False(_service.IsStatusChangeAllowed(DECLINED, DECLINED));
            Assert.False(_service.IsStatusChangeAllowed(DECLINED, ACCEPTED_TOS));
            Assert.False(_service.IsStatusChangeAllowed(DECLINED, DECLINED_TOS));

            Assert.False(_service.IsStatusChangeAllowed(ACCEPTED_TOS, null));
            Assert.True(_service.IsStatusChangeAllowed(ACCEPTED_TOS, IN_PROGRESS));
            Assert.False(_service.IsStatusChangeAllowed(ACCEPTED_TOS, SUBMITTED));
            Assert.False(_service.IsStatusChangeAllowed(ACCEPTED_TOS, APPROVED));
            Assert.False(_service.IsStatusChangeAllowed(ACCEPTED_TOS, DECLINED));
            Assert.False(_service.IsStatusChangeAllowed(ACCEPTED_TOS, ACCEPTED_TOS));
            Assert.False(_service.IsStatusChangeAllowed(ACCEPTED_TOS, DECLINED_TOS));

            Assert.False(_service.IsStatusChangeAllowed(DECLINED_TOS, null));
            Assert.True(_service.IsStatusChangeAllowed(DECLINED_TOS, IN_PROGRESS));
            Assert.False(_service.IsStatusChangeAllowed(DECLINED_TOS, SUBMITTED));
            Assert.False(_service.IsStatusChangeAllowed(DECLINED_TOS, APPROVED));
            Assert.False(_service.IsStatusChangeAllowed(DECLINED_TOS, DECLINED));
            Assert.False(_service.IsStatusChangeAllowed(DECLINED_TOS, ACCEPTED_TOS));
            Assert.False(_service.IsStatusChangeAllowed(DECLINED_TOS, DECLINED_TOS));

            // remove the admin role from the user
            TestUtils.RemoveAdminRoleFromUser(_httpContext?.HttpContext?.User);
        }