Example #1
0
        /// <summary>
        /// Performs a submission action on an Enrollee.
        /// Returns true if the Action was successfully performed.
        /// </summary>
        public async Task <bool> PerformSubmissionActionAsync(int enrolleeId, SubmissionAction action, bool isAdmin, object additionalParameters = null)
        {
            var enrollee = await _context.Enrollees
                           .Include(e => e.PhysicalAddress)
                           .Include(e => e.MailingAddress)
                           .Include(e => e.EnrolmentStatuses)
                           .ThenInclude(es => es.Status)
                           .Include(e => e.EnrolmentStatuses)
                           .ThenInclude(es => es.EnrolmentStatusReasons)
                           .ThenInclude(esr => esr.StatusReason)
                           .Include(e => e.Certifications)
                           .ThenInclude(cer => cer.College)
                           .Include(e => e.Certifications)
                           .ThenInclude(l => l.License)
                           .SingleOrDefaultAsync(e => e.Id == enrolleeId);

            var allowed = new SubmissionStateEngine().AllowableAction(action, enrollee, isAdmin);

            if (!allowed)
            {
                return(false);
            }

            return(await HandleSubmissionActionAsync(action, enrollee, additionalParameters));
        }
Example #2
0
        public void TestAllowableActions_Declined(SubmissionAction action, bool asAdmin)
        {
            // Arrange
            var enrollee = EnrolleeWithCurrentStatus(StatusType.Declined);
            var expected = (action == SubmissionAction.EnableEditing && asAdmin);

            // Act
            var allowed = SubmissionStateEngine.AllowableAction(action, enrollee, asAdmin);

            // Assert
            Assert.Equal(expected, allowed);
        }
Example #3
0
        public void TestAllowableActions_Editable(SubmissionAction action, bool asAdmin)
        {
            // Arrange
            var enrollee = EnrolleeWithCurrentStatus(StatusType.Editable);
            var expected = (action == SubmissionAction.LockProfile && asAdmin) ||
                           (action == SubmissionAction.DeclineProfile && asAdmin);

            // Act
            var allowed = SubmissionStateEngine.AllowableAction(action, enrollee, asAdmin);

            // Assert
            Assert.Equal(expected, allowed);
        }
Example #4
0
        public void TestAllowableActions_RequiresToa(SubmissionAction action, bool asAdmin)
        {
            // Arrange
            var enrollee = EnrolleeWithCurrentStatus(StatusType.RequiresToa);
            var expected = (action == SubmissionAction.AcceptToa && !asAdmin) ||
                           (action == SubmissionAction.DeclineToa && !asAdmin) ||
                           (action == SubmissionAction.EnableEditing && asAdmin) ||
                           (action == SubmissionAction.LockProfile && asAdmin) ||
                           (action == SubmissionAction.DeclineProfile && asAdmin);

            // Act
            var allowed = SubmissionStateEngine.AllowableAction(action, enrollee, asAdmin);

            // Assert
            Assert.Equal(expected, allowed);
        }
Example #5
0
        public void TestAllowableActions_UnderReview(SubmissionAction action, bool asAdmin)
        {
            // Arrange
            var enrollee = EnrolleeWithCurrentStatus(StatusType.UnderReview);
            var expected = (action == SubmissionAction.Approve && asAdmin) ||
                           (action == SubmissionAction.EnableEditing && asAdmin) ||
                           (action == SubmissionAction.LockProfile && asAdmin) ||
                           (action == SubmissionAction.DeclineProfile && asAdmin) ||
                           (action == SubmissionAction.RerunRules && asAdmin);

            // Act
            var allowed = SubmissionStateEngine.AllowableAction(action, enrollee, asAdmin);

            // Assert
            Assert.Equal(expected, allowed);
        }