protected void RegisterTestBooking(ExpectedCourseBooking booking, SetupData setup)
        {
            var json     = CreateBookingSaveCommandJson(booking);
            var response = PostCourseBooking(json, setup);

            if (response.Payload != null)
            {
                var courseBooking = (CourseBookingData)response.Payload;
                booking.Id = courseBooking.id;
                foreach (var sessionBooking in courseBooking.sessionBookings)
                {
                    booking.SessionBookingIds.Add(sessionBooking.id);
                }
            }
        }
        protected void RegisterFredOnTwoCourseSessionsInAaronOrakeiHolidayCamp9To15For3Days(SetupData setup)
        {
            if (setup.FredOnAaronOrakeiHolidayCamp9To15For3Days != null)
            {
                return;
            }

            RegisterCourseAaronOrakeiHolidayCamp9To15For3Days(setup);
            RegisterCustomerFred(setup);

            var courseSessionIds = new List <Guid>
            {
                setup.AaronOrakeiHolidayCamp9To15For3Days.Sessions[0].Id,
                setup.AaronOrakeiHolidayCamp9To15For3Days.Sessions[2].Id
            };

            var fredOnAaronOrakeiHolidayCamp9To15For3Days = new ExpectedCourseBooking(courseSessionIds, setup.Fred.Id);

            RegisterTestBooking(fredOnAaronOrakeiHolidayCamp9To15For3Days, setup);
            setup.FredOnAaronOrakeiHolidayCamp9To15For3Days = fredOnAaronOrakeiHolidayCamp9To15For3Days;
        }
        protected void RegisterFredOnAllCourseSessionsInAaronOrakeiHolidayCamp9To15For3Days(SetupData setup)
        {
            if (setup.FredOnAaronOrakeiHolidayCamp9To15For3Days != null)
            {
                return;
            }

            RegisterCourseAaronOrakeiHolidayCamp9To15For3Days(setup);
            RegisterCustomerFred(setup);

            var courseSessionIds = new List <Guid>
            {
                setup.AaronOrakeiHolidayCamp9To15For3Days.Sessions[0].Id,
                setup.AaronOrakeiHolidayCamp9To15For3Days.Sessions[1].Id,
                setup.AaronOrakeiHolidayCamp9To15For3Days.Sessions[2].Id
            };

            var fredOnAllCourseSessionInAaronOrakeiHolidayCamp9To15For3Days = new ExpectedCourseBooking(courseSessionIds,
                                                                                                        setup.Fred.Id);

            RegisterTestBooking(fredOnAllCourseSessionInAaronOrakeiHolidayCamp9To15For3Days, setup);
            setup.FredOnAaronOrakeiHolidayCamp9To15For3Days = fredOnAllCourseSessionInAaronOrakeiHolidayCamp9To15For3Days;

            var sessionBookingOne = new ExpectedBooking(setup.AaronOrakeiHolidayCamp9To15For3Days.Sessions[0].Id, setup.Fred.Id)
            {
                Id = fredOnAllCourseSessionInAaronOrakeiHolidayCamp9To15For3Days.SessionBookingIds[0]
            };
            var sessionBookingTwo = new ExpectedBooking(setup.AaronOrakeiHolidayCamp9To15For3Days.Sessions[1].Id, setup.Fred.Id)
            {
                Id = fredOnAllCourseSessionInAaronOrakeiHolidayCamp9To15For3Days.SessionBookingIds[1]
            };
            var sessionBookingThree = new ExpectedBooking(setup.AaronOrakeiHolidayCamp9To15For3Days.Sessions[2].Id, setup.Fred.Id)
            {
                Id = fredOnAllCourseSessionInAaronOrakeiHolidayCamp9To15For3Days.SessionBookingIds[2]
            };

            setup.FredOnFirstCourseSessionInAaronOrakeiHolidayCamp9To15For3Days  = sessionBookingOne;
            setup.FredOnSecondCourseSessionInAaronOrakeiHolidayCamp9To15For3Days = sessionBookingTwo;
            setup.FredOnLastCourseSessionInAaronOrakeiHolidayCamp9To15For3Days   = sessionBookingThree;
        }
 private string CreateBookingSaveCommandJson(ExpectedCourseBooking booking)
 {
     return(JsonSerialiser.Serialise(CreateBookingSaveCommand(booking)));
 }
 protected ApiBookingSaveCommand CreateBookingSaveCommand(ExpectedCourseBooking booking)
 {
     return(new ApiBookingSaveCommand(booking.SessionIds, booking.Customer.id.Value));
 }