public void CourseAdminGivenValidState_Action_TransitionsToCorrectState(CourseAdminContext contextInstance, Action contextAction, SubjectState expectedState)
        {
            contextAction.Invoke();
            var state   = contextInstance.SubjectState;
            var theType = expectedState.GetType();

            Assert.IsType(theType, state);
        }
 public void CourseAdminGivenInvalidState_Action_ThrowsException(CourseAdminContext contextInstance, Action contextAction)
 {
     Assert.Throws <InvalidOperationException>(() => contextAction?.Invoke());
 }
 private static CourseAdminContext InitializeCourseAdminContext(CourseAdminContext context)
 {
     _adminContext = context;
     return(_adminContext);
 }
 public SubjectStateMachineTests()
 {
     _adminContext   = new CourseAdminContext(new New());
     _teacherContext = new TeacherContext(new InProgress());
 }