/// <summary>
        /// Should throw the InvalidPlacesCount error code.
        /// </summary>
        private void ShouldThrowInvalidPlacesCountErrorCode(int placesCount)
        {
            // Build the test harness.
            SchedulingBusinessLogicComponentTestHarness testHarness = new SchedulingBusinessLogicComponentTestHarness();

            // Build the NewCourseSchedule business request.
            NewCourseScheduleBusinessRequest newCourseScheduleBusinessRequest = new NewCourseScheduleBusinessRequest();

            // Build the Session business request element.
            NewCourseScheduleBusinessRequest.SessionBusinessRequestElement sessionBusinessRequestElement = new NewCourseScheduleBusinessRequest.SessionBusinessRequestElement();
            sessionBusinessRequestElement.SessionCode = "6dk61ufcuzp3f7vs";
            newCourseScheduleBusinessRequest.Session  = sessionBusinessRequestElement;

            // Build the CourseSchedule business request element.
            NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement courseScheduleBusinessRequestElement = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement();
            courseScheduleBusinessRequestElement.DayOfWeek  = DayOfWeek.Monday;
            courseScheduleBusinessRequestElement.Time       = new TimeSpan(9, 15, 0);
            newCourseScheduleBusinessRequest.CourseSchedule = courseScheduleBusinessRequestElement;

            // Build the CourseGroup business request elements.
            List <NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement> courseGroupBusinessRequestElements = new List <NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement>();

            // Build the CourseGroup business request element.
            NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement courseGroupBusinessRequestElement = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement();
            courseGroupBusinessRequestElement.PlacesCount = placesCount;
            courseGroupBusinessRequestElements.Add(courseGroupBusinessRequestElement);

            // Set the CourseGroup business request elements.
            courseScheduleBusinessRequestElement.CourseGroups = courseGroupBusinessRequestElements.ToArray();

            try
            {
                // Invoke the NewCourseSchedule business operation.
                testHarness.SchedulingBusinessLogicComponent.NewCourseSchedule(testHarness.MockedDatabaseConnection, newCourseScheduleBusinessRequest).Wait();

                // Validate an exception was thrown.
                Assert.Fail();
            }
            catch (AggregateException ex)
            {
                // Verify the mocked components.
                testHarness.VerifyMockedComponents();

                // Validate a NewCourseSchedule business exception was thrown.
                NewCourseScheduleBusinessException NewCourseScheduleBusinessException = ex.InnerExceptions[0] as NewCourseScheduleBusinessException;
                Assert.IsNotNull(NewCourseScheduleBusinessException);
                Assert.AreEqual("SchedulingBusinessLogicComponent.NewCourseSchedule() has thrown a NewCourseSchedule business exception. See the Errors property for details.", NewCourseScheduleBusinessException.Message);

                // Validate the NewCourseSchedule business exception contains the InvalidPlacesCount error code.
                Assert.IsNotNull(NewCourseScheduleBusinessException.Errors);
                Assert.AreEqual(1, NewCourseScheduleBusinessException.Errors.Length);
                Assert.AreEqual(NewCourseScheduleBusinessException.ErrorCodes.InvalidPlacesCount, NewCourseScheduleBusinessException.Errors[0].ErrorCode);
                Assert.AreEqual(placesCount, NewCourseScheduleBusinessException.Errors[0].ErroneousValue);
            }
        }
        public void ShouldThrowInvalidSessionCodeErrorCode_GivenNonExistingSessionCode()
        {
            // Build the test harness.
            SchedulingBusinessLogicComponentTestHarness testHarness = new SchedulingBusinessLogicComponentTestHarness();

            // Mock the reading of the Session data row.
            testHarness.MockedSessionDataAccessComponent
            .Setup(mock => mock.ReadBySessionCode(It.IsAny <IDatabaseConnection>(), "6dk61ufcuzp3f7vs"))
            .Returns(Task.FromResult <SessionDataRow>(null))
            .Verifiable();

            // Build the NewCourseSchedule business request.
            NewCourseScheduleBusinessRequest newCourseScheduleBusinessRequest = new NewCourseScheduleBusinessRequest();

            // Build the Session business request element.
            NewCourseScheduleBusinessRequest.SessionBusinessRequestElement sessionBusinessRequestElement = new NewCourseScheduleBusinessRequest.SessionBusinessRequestElement();
            sessionBusinessRequestElement.SessionCode = "6dk61ufcuzp3f7vs";
            newCourseScheduleBusinessRequest.Session  = sessionBusinessRequestElement;

            // Build the CourseSchedule business request element.
            NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement courseScheduleBusinessRequestElement = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement();
            courseScheduleBusinessRequestElement.DayOfWeek  = DayOfWeek.Monday;
            courseScheduleBusinessRequestElement.Time       = new TimeSpan(9, 15, 0);
            newCourseScheduleBusinessRequest.CourseSchedule = courseScheduleBusinessRequestElement;

            // Build the CourseGroup business request elements.
            courseScheduleBusinessRequestElement.CourseGroups = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement[0];

            try
            {
                // Invoke the NewCourseSchedule business operation.
                testHarness.SchedulingBusinessLogicComponent.NewCourseSchedule(testHarness.MockedDatabaseConnection, newCourseScheduleBusinessRequest).Wait();

                // Validate an exception was thrown.
                Assert.Fail();
            }
            catch (AggregateException ex)
            {
                // Verify the mocked components.
                testHarness.VerifyMockedComponents();

                // Validate a NewCourseSchedule business exception was thrown.
                NewCourseScheduleBusinessException NewCourseScheduleBusinessException = ex.InnerExceptions[0] as NewCourseScheduleBusinessException;
                Assert.IsNotNull(NewCourseScheduleBusinessException);
                Assert.AreEqual("SchedulingBusinessLogicComponent.NewCourseSchedule() has thrown a NewCourseSchedule business exception. See the Errors property for details.", NewCourseScheduleBusinessException.Message);

                // Validate the NewCourseSchedule business exception contains the InvalidSessionCode error code.
                Assert.IsNotNull(NewCourseScheduleBusinessException.Errors);
                Assert.AreEqual(1, NewCourseScheduleBusinessException.Errors.Length);
                Assert.AreEqual(NewCourseScheduleBusinessException.ErrorCodes.InvalidSessionCode, NewCourseScheduleBusinessException.Errors[0].ErrorCode);
                Assert.AreEqual("6dk61ufcuzp3f7vs", NewCourseScheduleBusinessException.Errors[0].ErroneousValue);
            }
        }
        /// <summary>
        /// Validates the NewCourseSchedule business request.
        /// </summary>
        private void ValidateNewCourseScheduleRequest(NewCourseScheduleBusinessRequest businessRequest)
        {
            // Build the list of errors.
            List <NewCourseScheduleBusinessException.ErrorBusinessExceptionElement> errorBusinessExceptionElements = new List <NewCourseScheduleBusinessException.ErrorBusinessExceptionElement>();

            // Validate the Session business request element.
            this.ValidateNewCourseScheduleRequestProperty(businessRequest, "Session", businessRequest.Session, NewCourseScheduleBusinessException.ErrorCodes.InvalidSession, errorBusinessExceptionElements);
            if (businessRequest.Session != null)
            {
                // Validate the Session business request element properties.
                NewCourseScheduleBusinessRequest.SessionBusinessRequestElement sessionBusinessRequestElement = businessRequest.Session;
                this.ValidateNewCourseScheduleRequestProperty(sessionBusinessRequestElement, "SessionCode", sessionBusinessRequestElement.SessionCode, NewCourseScheduleBusinessException.ErrorCodes.InvalidSessionCode, errorBusinessExceptionElements);
            }

            // Validate the CourseSchedule business request element.
            this.ValidateNewCourseScheduleRequestProperty(businessRequest, "CourseSchedule", businessRequest.CourseSchedule, NewCourseScheduleBusinessException.ErrorCodes.InvalidCourseSchedule, errorBusinessExceptionElements);
            if (businessRequest.CourseSchedule != null)
            {
                // Validate the CourseSchedule business request element properties.
                NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement courseScheduleBusinessRequestElement = businessRequest.CourseSchedule;
                this.ValidateNewCourseScheduleRequestProperty(courseScheduleBusinessRequestElement, "Time", courseScheduleBusinessRequestElement.Time, NewCourseScheduleBusinessException.ErrorCodes.InvalidTime, errorBusinessExceptionElements);

                // Validate the CourseGroup business request elements.
                this.ValidateNewCourseScheduleRequestProperty(courseScheduleBusinessRequestElement, "CourseGroups", courseScheduleBusinessRequestElement.CourseGroups, NewCourseScheduleBusinessException.ErrorCodes.InvalidCourseGroups, errorBusinessExceptionElements);
                if (courseScheduleBusinessRequestElement.CourseGroups != null)
                {
                    // Skip the null business request elements.
                    NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement[] nonNullCourseGroupBusinessRequestElements = courseScheduleBusinessRequestElement.CourseGroups.Where(courseGroupBusinessRequestElement => courseGroupBusinessRequestElement != null).ToArray();
                    foreach (NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement courseGroupBusinessRequestElement in nonNullCourseGroupBusinessRequestElements)
                    {
                        // Validate the CourseGroup business request element properties.
                        this.ValidateNewCourseScheduleRequestProperty(courseGroupBusinessRequestElement, "PlacesCount", courseGroupBusinessRequestElement.PlacesCount, NewCourseScheduleBusinessException.ErrorCodes.InvalidPlacesCount, errorBusinessExceptionElements);
                    }
                }
            }

            // Check if any errors were added to the list.
            if (errorBusinessExceptionElements.Any())
            {
                // Throw a NewCourseSchedule business exception.
                NewCourseScheduleBusinessException businessException = this.BuildNewCourseScheduleBusinessException(errorBusinessExceptionElements.ToArray());
                throw businessException;
            }
        }
        /// <summary>
        /// Invokes the NewCourseSchedule business operation.
        /// </summary>
        private async Task<NewCourseScheduleBusinessResponse> InvokeNewCourseSchedule(IDatabaseConnection databaseConnection, CourseScheduleResource resource)
        {
            try
            {
                // Build the NewCourseSchedule business request.
                NewCourseScheduleBusinessRequest newCourseScheduleBusinessRequest = new NewCourseScheduleBusinessRequest();

                // Build the Session business request element.
                if (resource.Session != null)
                {
                    NewCourseScheduleBusinessRequest.SessionBusinessRequestElement sessionBusinessRequestElement = new NewCourseScheduleBusinessRequest.SessionBusinessRequestElement();
                    sessionBusinessRequestElement.SessionCode = resource.Session.SessionCode;
                    newCourseScheduleBusinessRequest.Session = sessionBusinessRequestElement;
                }

                // Build the CourseSchedule business request element.
                if (resource.CourseSchedule != null)
                {
                    NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement courseScheduleBusinessRequestElement = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement();
                    courseScheduleBusinessRequestElement.DayOfWeek = resource.CourseSchedule.DayOfWeek;
                    courseScheduleBusinessRequestElement.Time = resource.CourseSchedule.Time;
                    newCourseScheduleBusinessRequest.CourseSchedule = courseScheduleBusinessRequestElement;
                }

                // Invoke the NewCourseSchedule business operation.
                NewCourseScheduleBusinessResponse newCourseScheduleBusinessResponse = await this.schedulingBusinessLogicComponent.NewCourseSchedule(databaseConnection, newCourseScheduleBusinessRequest);

                // The business operation succeeded.
                return newCourseScheduleBusinessResponse;
            }
            catch (NewCourseScheduleBusinessException newCourseScheduleBusinessException)
            {
                // Wrap the NewCourseSchedule business exception into a service exception.
                ServiceException serviceException = ServiceExceptionBuilder.BuildServiceException(
                    "SchedulingServiceComponent.CourseSchedulesController.Post()",
                    newCourseScheduleBusinessException,
                    newCourseScheduleBusinessException.Errors.Select(error => error.ErrorCode.ToString()).ToArray(),
                    newCourseScheduleBusinessException.Errors.Select(error => error.ErroneousValue).ToArray());
                
                // Throw the service exception.
                throw serviceException;
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Invokes the NewCourseSchedule business operation.
        /// </summary>
        private async Task <NewCourseScheduleBusinessResponse> InvokeNewCourseSchedule(IDatabaseConnection databaseConnection, CourseScheduleResource resource)
        {
            try
            {
                // Build the NewCourseSchedule business request.
                NewCourseScheduleBusinessRequest newCourseScheduleBusinessRequest = new NewCourseScheduleBusinessRequest();

                // Build the Session business request element.
                if (resource.Session != null)
                {
                    NewCourseScheduleBusinessRequest.SessionBusinessRequestElement sessionBusinessRequestElement = new NewCourseScheduleBusinessRequest.SessionBusinessRequestElement();
                    sessionBusinessRequestElement.SessionCode = resource.Session.SessionCode;
                    newCourseScheduleBusinessRequest.Session  = sessionBusinessRequestElement;
                }

                // Build the CourseSchedule business request element.
                if (resource.CourseSchedule != null)
                {
                    NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement courseScheduleBusinessRequestElement = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement();
                    courseScheduleBusinessRequestElement.DayOfWeek  = resource.CourseSchedule.DayOfWeek;
                    courseScheduleBusinessRequestElement.Time       = resource.CourseSchedule.Time;
                    newCourseScheduleBusinessRequest.CourseSchedule = courseScheduleBusinessRequestElement;
                }

                // Invoke the NewCourseSchedule business operation.
                NewCourseScheduleBusinessResponse newCourseScheduleBusinessResponse = await this.schedulingBusinessLogicComponent.NewCourseSchedule(databaseConnection, newCourseScheduleBusinessRequest);

                // The business operation succeeded.
                return(newCourseScheduleBusinessResponse);
            }
            catch (NewCourseScheduleBusinessException newCourseScheduleBusinessException)
            {
                // Wrap the NewCourseSchedule business exception into a service exception.
                ServiceException serviceException = ServiceExceptionBuilder.BuildServiceException(
                    "SchedulingServiceComponent.CourseSchedulesController.Post()",
                    newCourseScheduleBusinessException,
                    newCourseScheduleBusinessException.Errors.Select(error => error.ErrorCode.ToString()).ToArray(),
                    newCourseScheduleBusinessException.Errors.Select(error => error.ErroneousValue).ToArray());

                // Throw the service exception.
                throw serviceException;
            }
        }
        public void ShouldThrowInvalidCourseScheduleErrorCode()
        {
            // Build the test harness.
            SchedulingBusinessLogicComponentTestHarness testHarness = new SchedulingBusinessLogicComponentTestHarness();

            // Build the NewCourseSchedule business request.
            NewCourseScheduleBusinessRequest newCourseScheduleBusinessRequest = new NewCourseScheduleBusinessRequest();

            // Build the Session business request element.
            NewCourseScheduleBusinessRequest.SessionBusinessRequestElement sessionBusinessRequestElement = new NewCourseScheduleBusinessRequest.SessionBusinessRequestElement();
            sessionBusinessRequestElement.SessionCode = "6dk61ufcuzp3f7vs";
            newCourseScheduleBusinessRequest.Session  = sessionBusinessRequestElement;

            // Build the CourseSchedule business request element.
            newCourseScheduleBusinessRequest.CourseSchedule = null;

            try
            {
                // Invoke the NewCourseSchedule business operation.
                testHarness.SchedulingBusinessLogicComponent.NewCourseSchedule(testHarness.MockedDatabaseConnection, newCourseScheduleBusinessRequest).Wait();

                // Validate an exception was thrown.
                Assert.Fail();
            }
            catch (AggregateException ex)
            {
                // Verify the mocked components.
                testHarness.VerifyMockedComponents();

                // Validate a NewCourseSchedule business exception was thrown.
                NewCourseScheduleBusinessException NewCourseScheduleBusinessException = ex.InnerExceptions[0] as NewCourseScheduleBusinessException;
                Assert.IsNotNull(NewCourseScheduleBusinessException);
                Assert.AreEqual("SchedulingBusinessLogicComponent.NewCourseSchedule() has thrown a NewCourseSchedule business exception. See the Errors property for details.", NewCourseScheduleBusinessException.Message);

                // Validate the NewCourseSchedule business exception contains the InvalidCourseSchedule error code.
                Assert.IsNotNull(NewCourseScheduleBusinessException.Errors);
                Assert.AreEqual(1, NewCourseScheduleBusinessException.Errors.Length);
                Assert.AreEqual(NewCourseScheduleBusinessException.ErrorCodes.InvalidCourseSchedule, NewCourseScheduleBusinessException.Errors[0].ErrorCode);
                Assert.AreEqual(null, NewCourseScheduleBusinessException.Errors[0].ErroneousValue);
            }
        }
        /// <summary>
        /// Should throw the InvalidTime error code.
        /// </summary>
        private void ShouldThrowInvalidTimeErrorCode(TimeSpan time)
        {
            // Build the test harness.
            SchedulingBusinessLogicComponentTestHarness testHarness = new SchedulingBusinessLogicComponentTestHarness();

            // Build the NewCourseSchedule business request.
            NewCourseScheduleBusinessRequest newCourseScheduleBusinessRequest = new NewCourseScheduleBusinessRequest();

            // Build the Session business request element.
            NewCourseScheduleBusinessRequest.SessionBusinessRequestElement sessionBusinessRequestElement = new NewCourseScheduleBusinessRequest.SessionBusinessRequestElement();
            sessionBusinessRequestElement.SessionCode = "6dk61ufcuzp3f7vs";
            newCourseScheduleBusinessRequest.Session = sessionBusinessRequestElement;

            // Build the CourseSchedule business request element.
            NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement courseScheduleBusinessRequestElement = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement();
            courseScheduleBusinessRequestElement.DayOfWeek = DayOfWeek.Monday;
            courseScheduleBusinessRequestElement.Time = time;
            newCourseScheduleBusinessRequest.CourseSchedule = courseScheduleBusinessRequestElement;

            // Build the CourseGroup business request elements.
            courseScheduleBusinessRequestElement.CourseGroups = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement[0];

            try
            {
                // Invoke the NewCourseSchedule business operation.
                testHarness.SchedulingBusinessLogicComponent.NewCourseSchedule(testHarness.MockedDatabaseConnection, newCourseScheduleBusinessRequest).Wait();

                // Validate an exception was thrown.
                Assert.Fail();
            }
            catch (AggregateException ex)
            {
                // Verify the mocked components.
                testHarness.VerifyMockedComponents();

                // Validate a NewCourseSchedule business exception was thrown.
                NewCourseScheduleBusinessException NewCourseScheduleBusinessException = ex.InnerExceptions[0] as NewCourseScheduleBusinessException;
                Assert.IsNotNull(NewCourseScheduleBusinessException);
                Assert.AreEqual("SchedulingBusinessLogicComponent.NewCourseSchedule() has thrown a NewCourseSchedule business exception. See the Errors property for details.", NewCourseScheduleBusinessException.Message);

                // Validate the NewCourseSchedule business exception contains the InvalidTime error code.
                Assert.IsNotNull(NewCourseScheduleBusinessException.Errors);
                Assert.AreEqual(1, NewCourseScheduleBusinessException.Errors.Length);
                Assert.AreEqual(NewCourseScheduleBusinessException.ErrorCodes.InvalidTime, NewCourseScheduleBusinessException.Errors[0].ErrorCode);
                Assert.AreEqual(time, NewCourseScheduleBusinessException.Errors[0].ErroneousValue);
            }
        }
        public void ShouldThrowInvalidSessionCodeErrorCode_GivenNonExistingSessionCode()
        {
            // Build the test harness.
            SchedulingBusinessLogicComponentTestHarness testHarness = new SchedulingBusinessLogicComponentTestHarness();

            // Mock the reading of the Session data row.
            testHarness.MockedSessionDataAccessComponent
                .Setup(mock => mock.ReadBySessionCode(It.IsAny<IDatabaseConnection>(), "6dk61ufcuzp3f7vs"))
                .Returns(Task.FromResult<SessionDataRow>(null))
                .Verifiable();

            // Build the NewCourseSchedule business request.
            NewCourseScheduleBusinessRequest newCourseScheduleBusinessRequest = new NewCourseScheduleBusinessRequest();

            // Build the Session business request element.
            NewCourseScheduleBusinessRequest.SessionBusinessRequestElement sessionBusinessRequestElement = new NewCourseScheduleBusinessRequest.SessionBusinessRequestElement();
            sessionBusinessRequestElement.SessionCode = "6dk61ufcuzp3f7vs";
            newCourseScheduleBusinessRequest.Session = sessionBusinessRequestElement;

            // Build the CourseSchedule business request element.
            NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement courseScheduleBusinessRequestElement = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement();
            courseScheduleBusinessRequestElement.DayOfWeek = DayOfWeek.Monday;
            courseScheduleBusinessRequestElement.Time = new TimeSpan(9, 15, 0);
            newCourseScheduleBusinessRequest.CourseSchedule = courseScheduleBusinessRequestElement;

            // Build the CourseGroup business request elements.
            courseScheduleBusinessRequestElement.CourseGroups = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement[0];

            try
            {
                // Invoke the NewCourseSchedule business operation.
                testHarness.SchedulingBusinessLogicComponent.NewCourseSchedule(testHarness.MockedDatabaseConnection, newCourseScheduleBusinessRequest).Wait();

                // Validate an exception was thrown.
                Assert.Fail();
            }
            catch (AggregateException ex)
            {
                // Verify the mocked components.
                testHarness.VerifyMockedComponents();

                // Validate a NewCourseSchedule business exception was thrown.
                NewCourseScheduleBusinessException NewCourseScheduleBusinessException = ex.InnerExceptions[0] as NewCourseScheduleBusinessException;
                Assert.IsNotNull(NewCourseScheduleBusinessException);
                Assert.AreEqual("SchedulingBusinessLogicComponent.NewCourseSchedule() has thrown a NewCourseSchedule business exception. See the Errors property for details.", NewCourseScheduleBusinessException.Message);

                // Validate the NewCourseSchedule business exception contains the InvalidSessionCode error code.
                Assert.IsNotNull(NewCourseScheduleBusinessException.Errors);
                Assert.AreEqual(1, NewCourseScheduleBusinessException.Errors.Length);
                Assert.AreEqual(NewCourseScheduleBusinessException.ErrorCodes.InvalidSessionCode, NewCourseScheduleBusinessException.Errors[0].ErrorCode);
                Assert.AreEqual("6dk61ufcuzp3f7vs", NewCourseScheduleBusinessException.Errors[0].ErroneousValue);
            }
        }
        public void ShouldReturnZeroCourseGroupsResponseElements()
        {
            // Build the test harness.
            SchedulingBusinessLogicComponentTestHarness testHarness = new SchedulingBusinessLogicComponentTestHarness();

            // Mock the reading of the Session data row.
            testHarness.MockedSessionDataAccessComponent
                .Setup(mock => mock.ReadBySessionCode(It.IsAny<IDatabaseConnection>(), "6dk61ufcuzp3f7vs"))
                .Returns(Task.FromResult(new SessionDataRow()
                {
                    SessionID = 10001,
                    SessionCode = "6dk61ufcuzp3f7vs",
                    Name = "Session Alpha",
                    StartDate = new DateTime(2001, 1, 1)
                }))
                .Verifiable();

            // Mock the generation of the unique token.
            testHarness.MockedUniqueTokenGenerator
                .Setup(mock => mock.GenerateUniqueToken())
                .Returns("zzcj32kpd6huzp1n")
                .Verifiable();

            // Mock the creation of the CourseSchedule data row.
            testHarness.MockedCourseScheduleDataAccessComponent
                .Setup(mock => mock.Create(
                    It.IsAny<IDatabaseConnection>(),
                    It.Is<CourseScheduleDataRow>(courseScheduleDataRow =>
                    (
                        courseScheduleDataRow.CourseScheduleCode == "zzcj32kpd6huzp1n" &&
                        courseScheduleDataRow.SessionID == 10001 &&
                        courseScheduleDataRow.DayOfWeek == (int)DayOfWeek.Monday &&
                        courseScheduleDataRow.Time == new TimeSpan(9, 15, 0)
                    ))))
                .Returns(Task.FromResult<object>(null))
                .Callback((IDatabaseConnection databaseConnection, CourseScheduleDataRow courseScheduleDataRow) =>
                {
                    courseScheduleDataRow.CourseScheduleID = 20001;
                })
                .Verifiable();

            // Build the NewCourseSchedule business request.
            NewCourseScheduleBusinessRequest newCourseScheduleBusinessRequest = new NewCourseScheduleBusinessRequest();

            // Build the Session business request element.
            NewCourseScheduleBusinessRequest.SessionBusinessRequestElement sessionBusinessRequestElement = new NewCourseScheduleBusinessRequest.SessionBusinessRequestElement();
            sessionBusinessRequestElement.SessionCode = "6dk61ufcuzp3f7vs";
            newCourseScheduleBusinessRequest.Session = sessionBusinessRequestElement;

            // Build the CourseSchedule business request element.
            NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement courseScheduleBusinessRequestElement = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement();
            courseScheduleBusinessRequestElement.DayOfWeek = DayOfWeek.Monday;
            courseScheduleBusinessRequestElement.Time = new TimeSpan(9, 15, 0);
            newCourseScheduleBusinessRequest.CourseSchedule = courseScheduleBusinessRequestElement;

            // Build the CourseGroup business request elements.
            List<NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement> courseGroupBusinessRequestElements = new List<NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement>();

            // Set the CourseGroup business request elements.
            courseScheduleBusinessRequestElement.CourseGroups = courseGroupBusinessRequestElements.ToArray();

            // Invoke the NewCourseSchedule business operation.
            NewCourseScheduleBusinessResponse newCourseScheduleBusinessResponse = testHarness.SchedulingBusinessLogicComponent.NewCourseSchedule(testHarness.MockedDatabaseConnection, newCourseScheduleBusinessRequest).Result;

            // Verify the mocked components.
            testHarness.VerifyMockedComponents();

            // Validate the CourseGroup business response elements count.
            Assert.IsNotNull(newCourseScheduleBusinessResponse);
            Assert.IsNotNull(newCourseScheduleBusinessResponse.CourseSchedule.CourseGroups);
            Assert.AreEqual(0, newCourseScheduleBusinessResponse.CourseSchedule.CourseGroups.Length);
        }
        public void ShouldReturnMultipleCourseGroupsResponseElements()
        {
            // Build the test harness.
            SchedulingBusinessLogicComponentTestHarness testHarness = new SchedulingBusinessLogicComponentTestHarness();

            // Mock the reading of the Session data row.
            testHarness.MockedSessionDataAccessComponent
                .Setup(mock => mock.ReadBySessionCode(It.IsAny<IDatabaseConnection>(), "6dk61ufcuzp3f7vs"))
                .Returns(Task.FromResult(new SessionDataRow()
                {
                    SessionID = 10001,
                    SessionCode = "6dk61ufcuzp3f7vs",
                    Name = "Session Alpha",
                    StartDate = new DateTime(2001, 1, 1)
                }))
                .Verifiable();

            // Mock the generation of the unique tokens.
            Queue<string> uniqueTokens = new Queue<string>(new string[] { "zzcj32kpd6huzp1n", "5s1cgndj6e5x0uvz", "78zcn25ynkaz50ef", "q5692qwy70qde9uv" });
            testHarness.MockedUniqueTokenGenerator
                .Setup(mock => mock.GenerateUniqueToken())
                .Returns(() => uniqueTokens.Dequeue())
                .Verifiable();

            // Mock the creation of the CourseSchedule data row.
            testHarness.MockedCourseScheduleDataAccessComponent
                .Setup(mock => mock.Create(
                    It.IsAny<IDatabaseConnection>(),
                    It.Is<CourseScheduleDataRow>(courseScheduleDataRow =>
                    (
                        courseScheduleDataRow.CourseScheduleCode == "zzcj32kpd6huzp1n" &&
                        courseScheduleDataRow.SessionID == 10001 &&
                        courseScheduleDataRow.DayOfWeek == (int)DayOfWeek.Monday &&
                        courseScheduleDataRow.Time == new TimeSpan(9, 15, 0)
                    ))))
                .Returns(Task.FromResult<object>(null))
                .Callback((IDatabaseConnection databaseConnection, CourseScheduleDataRow courseScheduleDataRow) =>
                {
                    courseScheduleDataRow.CourseScheduleID = 20001;
                })
                .Verifiable();

            // Mock the creation of the first CourseGroup data row.
            testHarness.MockedCourseGroupDataAccessComponent
                .Setup(mock => mock.Create(
                    It.IsAny<IDatabaseConnection>(),
                    It.Is<CourseGroupDataRow>(courseGroupDataRow =>
                    (
                        courseGroupDataRow.CourseGroupCode == "5s1cgndj6e5x0uvz" &&
                        courseGroupDataRow.CourseScheduleID == 20001 &&
                        courseGroupDataRow.PlacesCount == 1
                    ))))
                .Returns(Task.FromResult<object>(null))
                .Callback((IDatabaseConnection databaseConnection, CourseGroupDataRow courseGroupDataRow) =>
                {
                    courseGroupDataRow.CourseGroupID = 30001;
                })
                .Verifiable();

            // Mock the creation of the second CourseGroup data row.
            testHarness.MockedCourseGroupDataAccessComponent
                .Setup(mock => mock.Create(
                    It.IsAny<IDatabaseConnection>(),
                    It.Is<CourseGroupDataRow>(courseGroupDataRow =>
                    (
                        courseGroupDataRow.CourseGroupCode == "78zcn25ynkaz50ef" &&
                        courseGroupDataRow.CourseScheduleID == 20001 &&
                        courseGroupDataRow.PlacesCount == 2
                    ))))
                .Returns(Task.FromResult<object>(null))
                .Callback((IDatabaseConnection databaseConnection, CourseGroupDataRow courseGroupDataRow) =>
                {
                    courseGroupDataRow.CourseGroupID = 30002;
                })
                .Verifiable();

            // Mock the creation of the third CourseGroup data row.
            testHarness.MockedCourseGroupDataAccessComponent
                .Setup(mock => mock.Create(
                    It.IsAny<IDatabaseConnection>(),
                    It.Is<CourseGroupDataRow>(courseGroupDataRow =>
                    (
                        courseGroupDataRow.CourseGroupCode == "q5692qwy70qde9uv" &&
                        courseGroupDataRow.CourseScheduleID == 20001 &&
                        courseGroupDataRow.PlacesCount == 3
                    ))))
                .Returns(Task.FromResult<object>(null))
                .Callback((IDatabaseConnection databaseConnection, CourseGroupDataRow courseGroupDataRow) =>
                {
                    courseGroupDataRow.CourseGroupID = 30003;
                })
                .Verifiable();

            // Build the NewCourseSchedule business request.
            NewCourseScheduleBusinessRequest newCourseScheduleBusinessRequest = new NewCourseScheduleBusinessRequest();

            // Build the Session business request element.
            NewCourseScheduleBusinessRequest.SessionBusinessRequestElement sessionBusinessRequestElement = new NewCourseScheduleBusinessRequest.SessionBusinessRequestElement();
            sessionBusinessRequestElement.SessionCode = "6dk61ufcuzp3f7vs";
            newCourseScheduleBusinessRequest.Session = sessionBusinessRequestElement;

            // Build the CourseSchedule business request element.
            NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement courseScheduleBusinessRequestElement = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement();
            courseScheduleBusinessRequestElement.DayOfWeek = DayOfWeek.Monday;
            courseScheduleBusinessRequestElement.Time = new TimeSpan(9, 15, 0);
            newCourseScheduleBusinessRequest.CourseSchedule = courseScheduleBusinessRequestElement;

            // Build the CourseGroup business request elements.
            List<NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement> courseGroupBusinessRequestElements = new List<NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement>();

            // Build the first CourseGroup business request element.
            NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement firstCourseGroupBusinessRequestElement = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement();
            firstCourseGroupBusinessRequestElement.PlacesCount = 1;
            courseGroupBusinessRequestElements.Add(firstCourseGroupBusinessRequestElement);

            // Build the second CourseGroup business request element.
            NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement secondCourseGroupBusinessRequestElement = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement();
            secondCourseGroupBusinessRequestElement.PlacesCount = 2;
            courseGroupBusinessRequestElements.Add(secondCourseGroupBusinessRequestElement);

            // Build the third CourseGroup business request element.
            NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement thirdCourseGroupBusinessRequestElement = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement();
            thirdCourseGroupBusinessRequestElement.PlacesCount = 3;
            courseGroupBusinessRequestElements.Add(thirdCourseGroupBusinessRequestElement);

            // Set the CourseGroup business request elements.
            courseScheduleBusinessRequestElement.CourseGroups = courseGroupBusinessRequestElements.ToArray();

            // Invoke the NewCourseSchedule business operation.
            NewCourseScheduleBusinessResponse newCourseScheduleBusinessResponse = testHarness.SchedulingBusinessLogicComponent.NewCourseSchedule(testHarness.MockedDatabaseConnection, newCourseScheduleBusinessRequest).Result;

            // Verify the mocked components.
            testHarness.VerifyMockedComponents();

            // Validate the CourseGroup business response elements count.
            Assert.IsNotNull(newCourseScheduleBusinessResponse);
            Assert.IsNotNull(newCourseScheduleBusinessResponse.CourseSchedule.CourseGroups);
            Assert.AreEqual(3, newCourseScheduleBusinessResponse.CourseSchedule.CourseGroups.Length);

            // Validate the first CourseGroup business response element.
            Assert.IsNotNull(newCourseScheduleBusinessResponse.CourseSchedule.CourseGroups[0]);
            Assert.AreEqual("5s1cgndj6e5x0uvz", newCourseScheduleBusinessResponse.CourseSchedule.CourseGroups[0].CourseGroupCode);

            // Validate the second CourseGroup business response element.
            Assert.IsNotNull(newCourseScheduleBusinessResponse.CourseSchedule.CourseGroups[1]);
            Assert.AreEqual("78zcn25ynkaz50ef", newCourseScheduleBusinessResponse.CourseSchedule.CourseGroups[1].CourseGroupCode);

            // Validate the third CourseGroup business response element.
            Assert.IsNotNull(newCourseScheduleBusinessResponse.CourseSchedule.CourseGroups[2]);
            Assert.AreEqual("q5692qwy70qde9uv", newCourseScheduleBusinessResponse.CourseSchedule.CourseGroups[2].CourseGroupCode);
        }
        public void ShouldReturnMultipleCourseGroupsResponseElements()
        {
            // Build the test harness.
            SchedulingBusinessLogicComponentTestHarness testHarness = new SchedulingBusinessLogicComponentTestHarness();

            // Mock the reading of the Session data row.
            testHarness.MockedSessionDataAccessComponent
            .Setup(mock => mock.ReadBySessionCode(It.IsAny <IDatabaseConnection>(), "6dk61ufcuzp3f7vs"))
            .Returns(Task.FromResult(new SessionDataRow()
            {
                SessionID   = 10001,
                SessionCode = "6dk61ufcuzp3f7vs",
                Name        = "Session Alpha",
                StartDate   = new DateTime(2001, 1, 1)
            }))
            .Verifiable();

            // Mock the generation of the unique tokens.
            Queue <string> uniqueTokens = new Queue <string>(new string[] { "zzcj32kpd6huzp1n", "5s1cgndj6e5x0uvz", "78zcn25ynkaz50ef", "q5692qwy70qde9uv" });

            testHarness.MockedUniqueTokenGenerator
            .Setup(mock => mock.GenerateUniqueToken())
            .Returns(() => uniqueTokens.Dequeue())
            .Verifiable();

            // Mock the creation of the CourseSchedule data row.
            testHarness.MockedCourseScheduleDataAccessComponent
            .Setup(mock => mock.Create(
                       It.IsAny <IDatabaseConnection>(),
                       It.Is <CourseScheduleDataRow>(courseScheduleDataRow =>
                                                     (
                                                         courseScheduleDataRow.CourseScheduleCode == "zzcj32kpd6huzp1n" &&
                                                         courseScheduleDataRow.SessionID == 10001 &&
                                                         courseScheduleDataRow.DayOfWeek == (int)DayOfWeek.Monday &&
                                                         courseScheduleDataRow.Time == new TimeSpan(9, 15, 0)
                                                     ))))
            .Returns(Task.FromResult <object>(null))
            .Callback((IDatabaseConnection databaseConnection, CourseScheduleDataRow courseScheduleDataRow) =>
            {
                courseScheduleDataRow.CourseScheduleID = 20001;
            })
            .Verifiable();

            // Mock the creation of the first CourseGroup data row.
            testHarness.MockedCourseGroupDataAccessComponent
            .Setup(mock => mock.Create(
                       It.IsAny <IDatabaseConnection>(),
                       It.Is <CourseGroupDataRow>(courseGroupDataRow =>
                                                  (
                                                      courseGroupDataRow.CourseGroupCode == "5s1cgndj6e5x0uvz" &&
                                                      courseGroupDataRow.CourseScheduleID == 20001 &&
                                                      courseGroupDataRow.PlacesCount == 1
                                                  ))))
            .Returns(Task.FromResult <object>(null))
            .Callback((IDatabaseConnection databaseConnection, CourseGroupDataRow courseGroupDataRow) =>
            {
                courseGroupDataRow.CourseGroupID = 30001;
            })
            .Verifiable();

            // Mock the creation of the second CourseGroup data row.
            testHarness.MockedCourseGroupDataAccessComponent
            .Setup(mock => mock.Create(
                       It.IsAny <IDatabaseConnection>(),
                       It.Is <CourseGroupDataRow>(courseGroupDataRow =>
                                                  (
                                                      courseGroupDataRow.CourseGroupCode == "78zcn25ynkaz50ef" &&
                                                      courseGroupDataRow.CourseScheduleID == 20001 &&
                                                      courseGroupDataRow.PlacesCount == 2
                                                  ))))
            .Returns(Task.FromResult <object>(null))
            .Callback((IDatabaseConnection databaseConnection, CourseGroupDataRow courseGroupDataRow) =>
            {
                courseGroupDataRow.CourseGroupID = 30002;
            })
            .Verifiable();

            // Mock the creation of the third CourseGroup data row.
            testHarness.MockedCourseGroupDataAccessComponent
            .Setup(mock => mock.Create(
                       It.IsAny <IDatabaseConnection>(),
                       It.Is <CourseGroupDataRow>(courseGroupDataRow =>
                                                  (
                                                      courseGroupDataRow.CourseGroupCode == "q5692qwy70qde9uv" &&
                                                      courseGroupDataRow.CourseScheduleID == 20001 &&
                                                      courseGroupDataRow.PlacesCount == 3
                                                  ))))
            .Returns(Task.FromResult <object>(null))
            .Callback((IDatabaseConnection databaseConnection, CourseGroupDataRow courseGroupDataRow) =>
            {
                courseGroupDataRow.CourseGroupID = 30003;
            })
            .Verifiable();

            // Build the NewCourseSchedule business request.
            NewCourseScheduleBusinessRequest newCourseScheduleBusinessRequest = new NewCourseScheduleBusinessRequest();

            // Build the Session business request element.
            NewCourseScheduleBusinessRequest.SessionBusinessRequestElement sessionBusinessRequestElement = new NewCourseScheduleBusinessRequest.SessionBusinessRequestElement();
            sessionBusinessRequestElement.SessionCode = "6dk61ufcuzp3f7vs";
            newCourseScheduleBusinessRequest.Session  = sessionBusinessRequestElement;

            // Build the CourseSchedule business request element.
            NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement courseScheduleBusinessRequestElement = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement();
            courseScheduleBusinessRequestElement.DayOfWeek  = DayOfWeek.Monday;
            courseScheduleBusinessRequestElement.Time       = new TimeSpan(9, 15, 0);
            newCourseScheduleBusinessRequest.CourseSchedule = courseScheduleBusinessRequestElement;

            // Build the CourseGroup business request elements.
            List <NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement> courseGroupBusinessRequestElements = new List <NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement>();

            // Build the first CourseGroup business request element.
            NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement firstCourseGroupBusinessRequestElement = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement();
            firstCourseGroupBusinessRequestElement.PlacesCount = 1;
            courseGroupBusinessRequestElements.Add(firstCourseGroupBusinessRequestElement);

            // Build the second CourseGroup business request element.
            NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement secondCourseGroupBusinessRequestElement = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement();
            secondCourseGroupBusinessRequestElement.PlacesCount = 2;
            courseGroupBusinessRequestElements.Add(secondCourseGroupBusinessRequestElement);

            // Build the third CourseGroup business request element.
            NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement thirdCourseGroupBusinessRequestElement = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement();
            thirdCourseGroupBusinessRequestElement.PlacesCount = 3;
            courseGroupBusinessRequestElements.Add(thirdCourseGroupBusinessRequestElement);

            // Set the CourseGroup business request elements.
            courseScheduleBusinessRequestElement.CourseGroups = courseGroupBusinessRequestElements.ToArray();

            // Invoke the NewCourseSchedule business operation.
            NewCourseScheduleBusinessResponse newCourseScheduleBusinessResponse = testHarness.SchedulingBusinessLogicComponent.NewCourseSchedule(testHarness.MockedDatabaseConnection, newCourseScheduleBusinessRequest).Result;

            // Verify the mocked components.
            testHarness.VerifyMockedComponents();

            // Validate the CourseGroup business response elements count.
            Assert.IsNotNull(newCourseScheduleBusinessResponse);
            Assert.IsNotNull(newCourseScheduleBusinessResponse.CourseSchedule.CourseGroups);
            Assert.AreEqual(3, newCourseScheduleBusinessResponse.CourseSchedule.CourseGroups.Length);

            // Validate the first CourseGroup business response element.
            Assert.IsNotNull(newCourseScheduleBusinessResponse.CourseSchedule.CourseGroups[0]);
            Assert.AreEqual("5s1cgndj6e5x0uvz", newCourseScheduleBusinessResponse.CourseSchedule.CourseGroups[0].CourseGroupCode);

            // Validate the second CourseGroup business response element.
            Assert.IsNotNull(newCourseScheduleBusinessResponse.CourseSchedule.CourseGroups[1]);
            Assert.AreEqual("78zcn25ynkaz50ef", newCourseScheduleBusinessResponse.CourseSchedule.CourseGroups[1].CourseGroupCode);

            // Validate the third CourseGroup business response element.
            Assert.IsNotNull(newCourseScheduleBusinessResponse.CourseSchedule.CourseGroups[2]);
            Assert.AreEqual("q5692qwy70qde9uv", newCourseScheduleBusinessResponse.CourseSchedule.CourseGroups[2].CourseGroupCode);
        }
        public void ShouldReturnCourseScheduleResponseElement()
        {
            // Build the test harness.
            SchedulingBusinessLogicComponentTestHarness testHarness = new SchedulingBusinessLogicComponentTestHarness();

            // Mock the reading of the Session data row.
            testHarness.MockedSessionDataAccessComponent
            .Setup(mock => mock.ReadBySessionCode(It.IsAny <IDatabaseConnection>(), "6dk61ufcuzp3f7vs"))
            .Returns(Task.FromResult(new SessionDataRow()
            {
                SessionID   = 10001,
                SessionCode = "6dk61ufcuzp3f7vs",
                Name        = "Session Alpha",
                StartDate   = new DateTime(2001, 1, 1)
            }))
            .Verifiable();

            // Mock the generation of the unique token.
            testHarness.MockedUniqueTokenGenerator
            .Setup(mock => mock.GenerateUniqueToken())
            .Returns("zzcj32kpd6huzp1n")
            .Verifiable();

            // Mock the creation of the CourseSchedule data row.
            testHarness.MockedCourseScheduleDataAccessComponent
            .Setup(mock => mock.Create(
                       It.IsAny <IDatabaseConnection>(),
                       It.Is <CourseScheduleDataRow>(courseScheduleDataRow =>
                                                     (
                                                         courseScheduleDataRow.CourseScheduleCode == "zzcj32kpd6huzp1n" &&
                                                         courseScheduleDataRow.SessionID == 10001 &&
                                                         courseScheduleDataRow.DayOfWeek == (int)DayOfWeek.Monday &&
                                                         courseScheduleDataRow.Time == new TimeSpan(9, 15, 0)
                                                     ))))
            .Returns(Task.FromResult <object>(null))
            .Callback((IDatabaseConnection databaseConnection, CourseScheduleDataRow courseScheduleDataRow) =>
            {
                courseScheduleDataRow.CourseScheduleID = 20001;
            })
            .Verifiable();

            // Build the NewCourseSchedule business request.
            NewCourseScheduleBusinessRequest newCourseScheduleBusinessRequest = new NewCourseScheduleBusinessRequest();

            // Build the Session business request element.
            NewCourseScheduleBusinessRequest.SessionBusinessRequestElement sessionBusinessRequestElement = new NewCourseScheduleBusinessRequest.SessionBusinessRequestElement();
            sessionBusinessRequestElement.SessionCode = "6dk61ufcuzp3f7vs";
            newCourseScheduleBusinessRequest.Session  = sessionBusinessRequestElement;

            // Build the CourseSchedule business request element.
            NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement courseScheduleBusinessRequestElement = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement();
            courseScheduleBusinessRequestElement.DayOfWeek  = DayOfWeek.Monday;
            courseScheduleBusinessRequestElement.Time       = new TimeSpan(9, 15, 0);
            newCourseScheduleBusinessRequest.CourseSchedule = courseScheduleBusinessRequestElement;

            // Build the CourseGroup business request elements.
            courseScheduleBusinessRequestElement.CourseGroups = new NewCourseScheduleBusinessRequest.CourseScheduleBusinessRequestElement.CourseGroupBusinessRequestElement[0];

            // Invoke the NewCourseSchedule business operation.
            NewCourseScheduleBusinessResponse newCourseScheduleBusinessResponse = testHarness.SchedulingBusinessLogicComponent.NewCourseSchedule(testHarness.MockedDatabaseConnection, newCourseScheduleBusinessRequest).Result;

            // Verify the mocked components.
            testHarness.VerifyMockedComponents();

            // Validate the CourseSchedule business response element.
            Assert.IsNotNull(newCourseScheduleBusinessResponse);
            Assert.IsNotNull(newCourseScheduleBusinessResponse.CourseSchedule);
            Assert.AreEqual("zzcj32kpd6huzp1n", newCourseScheduleBusinessResponse.CourseSchedule.CourseScheduleCode);
        }