static void activateReservation() { Console.WriteLine("Activating reservation, to go back input '_back_'."); Console.WriteLine("Format: 'reservationId'"); Console.WriteLine("Example: 1"); Console.Write(">"); var input = Console.ReadLine(); if (input == "_back_") { return; } try { var param = int.Parse(input.Trim()); using (var crs = new CarReservationService()) { var asyncAr = crs.activateReservation(param); asyncAr.Wait(); var ar = asyncAr.Result; Console.WriteLine("Reservation with id " + param + " has been activated."); Console.WriteLine("ActivatedReservation id is " + ar.id + "."); } } catch (Exception e) { printExceptions(e); } }
static void deactivateReservation() { Console.WriteLine("Deactivating activated reservation, to go back input '_back_'."); Console.WriteLine("Format: 'activatedReservationId'"); Console.WriteLine("Example: 1"); Console.Write(">"); var input = Console.ReadLine(); if (input == "_back_") { return; } try { var param = int.Parse(input.Trim()); using (var crs = new CarReservationService()) { crs.deactivateActivatedReservation(param).Wait(); Console.WriteLine("Reservation with id " + param + " has been deactivated."); } } catch (Exception e) { printExceptions(e); } }
public void FailsToMakeReservationWhenInvalidCarType() { var customerMockSet = new Mock <DbSet <BasicCustomer> >(); var rentalCarMockSet = new Mock <DbSet <RentalCar> >(); var carTypeMockSet = new Mock <DbSet <RentalCarType> >(); var mockContext = new Mock <CarRentalContext>(); var reservationMockSet = new Mock <DbSet <Reservation> >(); unitTestHelper.setUpMockBasicCustomers(customerMockSet, mockContext); unitTestHelper.setUpMockCars(rentalCarMockSet, carTypeMockSet, mockContext); unitTestHelper.setUpEmptyMockReservations(reservationMockSet, mockContext); using (var csr = new CarReservationService(mockContext.Object)) { try { var asyncReturnVal = csr.requestReservation( customerMockSet.Object.First().id, "a", DateTime.Now, new DateTime(2019, 10, 10)); asyncReturnVal.Wait(); var returnVal = asyncReturnVal.Result; } catch (Exception e) { Assert.IsTrue(e.GetType() == new ArgumentException().GetType() || e.InnerException.GetType() == new ArgumentException().GetType()); } } }
public void SuccessfullyActivatesReservationAfterCollidingActivatedReservationIsDeactivated() { var customerMockSet = new Mock <DbSet <BasicCustomer> >(); var rentalCarMockSet = new Mock <DbSet <RentalCar> >(); var carTypeMockSet = new Mock <DbSet <RentalCarType> >(); var mockContext = new Mock <CarRentalContext>(); var reservationMockSet = new Mock <DbSet <Reservation> >(); var activatedReservationMockSet = new Mock <DbSet <ActivatedReservation> >(); unitTestHelper.setUpMockBasicCustomers(customerMockSet, mockContext); unitTestHelper.setUpMockCars(rentalCarMockSet, carTypeMockSet, mockContext); var carTypes = carTypeMockSet.Object.ToArray(); var carType1 = carTypes[0]; var carType2 = carTypes[1]; var customer = customerMockSet.Object.ToArray()[0]; var reservation1 = new Reservation( customer, carType2, DateTime.Now, DateTime.Now.AddDays(2)); var reservation2 = new Reservation( customer, carType2, DateTime.Now, DateTime.Now.AddDays(2)); reservation1.id = 0; reservation2.id = 1; unitTestHelper.setUpMockReservations(new List <Reservation> { reservation1, reservation2 }, carTypeMockSet, customerMockSet, reservationMockSet, mockContext); using (var csr = new CarReservationService(mockContext.Object)) { var reservations = reservationMockSet.Object.ToArray(); var rentalcars = rentalCarMockSet.Object.ToArray(); var existingActivatedReservation = new ActivatedReservation(reservations[0], rentalcars[1], 0, false); unitTestHelper.setUpMockActivatedReservations(new List <ActivatedReservation> { existingActivatedReservation }, activatedReservationMockSet, mockContext); var asyncActivatedReservation = csr.activateReservation(reservation1.id); asyncActivatedReservation.Wait(); var activatedReservation = asyncActivatedReservation.Result; activatedReservationMockSet.Verify(a => a.Add(It.IsAny <ActivatedReservation>()), Times.Once()); mockContext.Verify(a => a.SaveChangesAsync(), Times.Once()); } }
public void FailsToDeactivateActivatedReservationWhenItIsAlreadyDeactivated() { var customerMockSet = new Mock <DbSet <BasicCustomer> >(); var rentalCarMockSet = new Mock <DbSet <RentalCar> >(); var carTypeMockSet = new Mock <DbSet <RentalCarType> >(); var mockContext = new Mock <CarRentalContext>(); var reservationMockSet = new Mock <DbSet <Reservation> >(); var activatedReservationMockSet = new Mock <DbSet <ActivatedReservation> >(); unitTestHelper.setUpMockBasicCustomers(customerMockSet, mockContext); unitTestHelper.setUpMockCars(rentalCarMockSet, carTypeMockSet, mockContext); var carTypes = carTypeMockSet.Object.ToArray(); var carType1 = carTypes[0]; var carType2 = carTypes[1]; var customer = customerMockSet.Object.ToArray()[0]; var reservation1 = new Reservation( customer, carType2, DateTime.Now, DateTime.Now.AddDays(2)); reservation1.id = 0; var rentalcars = rentalCarMockSet.Object.ToArray(); var existingActivatedReservation = new ActivatedReservation(reservation1, rentalcars[1], 0, false); existingActivatedReservation.id = 1; unitTestHelper.setUpMockActivatedReservations(new List <ActivatedReservation> { existingActivatedReservation }, activatedReservationMockSet, mockContext); using (var csr = new CarReservationService(mockContext.Object)) { try { var asyncActivatedReservation = csr.deactivateActivatedReservation(existingActivatedReservation.id); asyncActivatedReservation.Wait(); var activatedReservation = asyncActivatedReservation.Result; activatedReservationMockSet.Verify(a => a.Add(It.IsAny <ActivatedReservation>()), Times.Never()); mockContext.Verify(a => a.SaveChangesAsync(), Times.Never()); } catch (Exception e) { Assert.IsTrue(e.GetType() == new InvalidOperationException().GetType() || e.InnerException is InvalidOperationException); } } }
public void FailsToActivateReservationWhenRentalDateHasNotYetBeenMet() { var customerMockSet = new Mock <DbSet <BasicCustomer> >(); var rentalCarMockSet = new Mock <DbSet <RentalCar> >(); var carTypeMockSet = new Mock <DbSet <RentalCarType> >(); var mockContext = new Mock <CarRentalContext>(); var reservationMockSet = new Mock <DbSet <Reservation> >(); var activatedReservationMockSet = new Mock <DbSet <ActivatedReservation> >(); unitTestHelper.setUpMockBasicCustomers(customerMockSet, mockContext); unitTestHelper.setUpMockCars(rentalCarMockSet, carTypeMockSet, mockContext); var carTypes = carTypeMockSet.Object.ToArray(); var carType1 = carTypes[0]; var carType2 = carTypes[1]; var customer = customerMockSet.Object.ToArray()[0]; var reservation1 = new Reservation( customer, carType2, DateTime.Now.AddDays(1), DateTime.Now.AddDays(2)); reservation1.id = 0; unitTestHelper.setUpMockReservations(new List <Reservation> { reservation1 }, carTypeMockSet, customerMockSet, reservationMockSet, mockContext); unitTestHelper.setUpMockActivatedReservations(new List <ActivatedReservation>(), activatedReservationMockSet, mockContext); using (var csr = new CarReservationService(mockContext.Object)) { try { var reservations = reservationMockSet.Object.ToArray(); var reservation = reservations[0]; var asyncActivatedReservation = csr.activateReservation(reservation.id); asyncActivatedReservation.Wait(); var activatedReservation = asyncActivatedReservation.Result; Assert.IsNull(activatedReservation); activatedReservationMockSet.Verify(a => a.Add(It.IsAny <ActivatedReservation>()), Times.Never()); } catch (Exception e) { Assert.IsTrue(e.GetType() == new InvalidOperationException().GetType() || e.InnerException is InvalidOperationException); } } }
public void FailsToMakeReservationWhenNoFreeCarsOfGivenType1() { var customerMockSet = new Mock <DbSet <BasicCustomer> >(); var rentalCarMockSet = new Mock <DbSet <RentalCar> >(); var carTypeMockSet = new Mock <DbSet <RentalCarType> >(); var mockContext = new Mock <CarRentalContext>(); var reservationMockSet = new Mock <DbSet <Reservation> >(); unitTestHelper.setUpMockBasicCustomers(customerMockSet, mockContext); unitTestHelper.setUpMockCars(rentalCarMockSet, carTypeMockSet, mockContext); var carTypes = carTypeMockSet.Object.ToArray(); var carType1 = carTypes[0]; var carType2 = carTypes[1]; var customer = customerMockSet.Object.ToArray()[0]; var reservation1 = new Reservation( customer, carType1, new DateTime(2018, 11, 12), new DateTime(2018, 12, 12)); reservation1.id = 0; unitTestHelper.setUpMockReservations(new List <Reservation> { reservation1 }, carTypeMockSet, customerMockSet, reservationMockSet, mockContext); using (var csr = new CarReservationService(mockContext.Object)) { try { var asyncReturnVal = csr.requestReservation( customerMockSet.Object.First().id, carTypeMockSet.Object.First().carTypeName, DateTime.Now, new DateTime(2018, 12, 10)); asyncReturnVal.Wait(); var returnVal = asyncReturnVal.Result; reservationMockSet.Verify(m => m.Add(It.IsAny <Reservation>()), Times.Never()); Assert.IsNull(returnVal); } catch (Exception e) { Assert.IsTrue(e.GetType() == new ArgumentException().GetType() || e.InnerException is ArgumentException); } } }
static void requestReservation() { Console.WriteLine("Adding reservation, to go back input '_back_'."); Console.WriteLine("Format: 'customerId', 'carTypeName', 'startDate', 'endDate'"); Console.WriteLine("Example: 1, Small car, 2018-10-19, 2018-11-19"); Console.Write(">"); var input = Console.ReadLine(); if (input == "_back_") { return; } List <string> untrimmedParams = input.Split(',').ToList(); List <string> parameters = untrimmedParams.Select(x => x.Trim()).ToList(); if (parameters.Count() != 4) { Console.WriteLine("Input format is incorrect"); return; } try { var id = int.Parse(parameters[0]); var carType = parameters[1]; var startDate = DateTime.Parse(parameters[2]); var endDate = DateTime.Parse(parameters[3]); using (var service = new CarReservationService()) { Console.WriteLine("Creating reservation..."); var asyncR = service.requestReservation(id, carType, startDate, endDate); asyncR.Wait(); var r = asyncR.Result; Console.WriteLine("Reservation successful. The reservation id is:" + r.id); } } catch (Exception e) { printExceptions(e); } }
public void SuccessfullyRequestsReservationWithDateBeforeOtherReservation() { var customerMockSet = new Mock <DbSet <BasicCustomer> >(); var rentalCarMockSet = new Mock <DbSet <RentalCar> >(); var carTypeMockSet = new Mock <DbSet <RentalCarType> >(); var mockContext = new Mock <CarRentalContext>(); var reservationMockSet = new Mock <DbSet <Reservation> >(); unitTestHelper.setUpMockBasicCustomers(customerMockSet, mockContext); unitTestHelper.setUpMockCars(rentalCarMockSet, carTypeMockSet, mockContext); var carTypes = carTypeMockSet.Object.ToArray(); var carType1 = carTypes[0]; var carType2 = carTypes[1]; var customer = customerMockSet.Object.ToArray()[0]; var reservation1 = new Reservation( customer, carType1, new DateTime(2018, 11, 12), new DateTime(2018, 12, 12)); reservation1.id = 0; unitTestHelper.setUpMockReservations(new List <Reservation> { reservation1 }, carTypeMockSet, customerMockSet, reservationMockSet, mockContext); using (var csr = new CarReservationService(mockContext.Object)) { var asyncReturnVal = csr.requestReservation( customerMockSet.Object.First().id, carTypeMockSet.Object.First().carTypeName, new DateTime(2018, 11, 1), new DateTime(2018, 11, 11)); asyncReturnVal.Wait(); var returnVal = asyncReturnVal.Result; reservationMockSet.Verify(m => m.Add(It.IsAny <Reservation>()), Times.Once()); mockContext.Verify(m => m.SaveChangesAsync(), Times.Once()); } }
public void SuccessfullyActivatesReservationWhenCarsAreAvailable() { var customerMockSet = new Mock <DbSet <BasicCustomer> >(); var rentalCarMockSet = new Mock <DbSet <RentalCar> >(); var carTypeMockSet = new Mock <DbSet <RentalCarType> >(); var mockContext = new Mock <CarRentalContext>(); var reservationMockSet = new Mock <DbSet <Reservation> >(); var activatedReservationMockSet = new Mock <DbSet <ActivatedReservation> >(); unitTestHelper.setUpMockBasicCustomers(customerMockSet, mockContext); unitTestHelper.setUpMockCars(rentalCarMockSet, carTypeMockSet, mockContext); var carTypes = carTypeMockSet.Object.ToArray(); var carType1 = carTypes[0]; var carType2 = carTypes[1]; var customer = customerMockSet.Object.ToArray()[0]; var reservation1 = new Reservation( customer, carType2, DateTime.Now.Subtract(new TimeSpan(1, 0, 0, 0)), DateTime.Now.AddDays(1)); reservation1.id = 0; unitTestHelper.setUpMockReservations(new List <Reservation> { reservation1 }, carTypeMockSet, customerMockSet, reservationMockSet, mockContext); unitTestHelper.setUpMockActivatedReservations(new List <ActivatedReservation>(), activatedReservationMockSet, mockContext); using (var csr = new CarReservationService(mockContext.Object)) { var reservation = reservationMockSet.Object.First(); var asyncActivatedReservation = csr.activateReservation(reservation.id); asyncActivatedReservation.Wait(); var activatedReservation = asyncActivatedReservation.Result; activatedReservationMockSet.Verify(a => a.Add(It.IsAny <ActivatedReservation>()), Times.Once()); mockContext.Verify(a => a.SaveChangesAsync(), Times.Once()); } }