/// <summary>
        /// Acts like a composition root for the Hexagonal Architecture.
        /// </summary>
        public static IReserveTrainSeats ComposeTheHexagon(IProvideBookingReferences bookingReferenceProvider, IProvideTrainData trainDataProvider)
        {
            var ticketOffice = new TicketOffice(bookingReferenceProvider, trainDataProvider);

            var reservationAdapter = new CliReservationAdapter(ticketOffice);

            return(reservationAdapter);
        }
        public void Should_serialize_in_JSON_as_expected()
        {
            var reservation = new Reservation("A-train", new BookingReference("RefDe0uf"), new Seats(new List <Seat>()
            {
                new Seat("A", 4), new Seat("A", 5)
            }));
            var json = CliReservationAdapter.AdaptInJSON(reservation);

            Check.That(json).IsEqualTo($"{{\"train_id\": \"A-train\", \"booking_reference\": \"RefDe0uf\", \"seats\": [\"4A\", \"5A\"]}}");
        }