public async Task add_async_same_customer_multiple_times_expect_exception()
        {
            var customerId = Guid.NewGuid();
            var customer   = DomainTestsHelper.ValidCustomerWithId(customerId);
            await customerRepository.AddCustomerAsync(customer);

            var exception = await Assert.ThrowsAsync <DomainException>(() => customerRepository.AddCustomerAsync(customer));

            exception.ErrorCode.Should().Be(DomainErrorCodes.CustomerAlreadyExists);
        }
        public async Task add_async_with_proper_data_should_create_customer_expect_success()
        {
            var customerId = Guid.NewGuid();
            var customer   = DomainTestsHelper.ValidCustomerWithId(customerId);
            await customerRepository.AddCustomerAsync(customer);

            var fetchedCustomer = await customerRepository.GetCustomerAsync(customerId);

            Assert.Same(customer, fetchedCustomer);
        }
        public async Task add_async_same_customer_multiple_times_expect_exception()
        {
            var tripId = Guid.NewGuid();
            var trip   = DomainTestsHelper.ValidTripWithIdAndName(tripId, "tripName");
            await tripRepository.AddTripAsync(trip);

            var exception = await Assert.ThrowsAsync <DomainException>(() => tripRepository.AddTripAsync(trip));

            exception.ErrorCode.Should().Be(DomainErrorCodes.TripAlreadyExists);
        }
        public async Task add_async_proper_data_should_create_trip_expect_success()
        {
            var tripId = Guid.NewGuid();
            var trip   = DomainTestsHelper.ValidTripWithIdAndName(tripId, "trip");
            await tripRepository.AddTripAsync(trip);

            var fetchedTrip = await tripRepository.GetTripAsync(tripId);

            Assert.Same(trip, fetchedTrip);
        }
        public async Task add_async_multiple_customers_get_customers_return_all_expect_success()
        {
            var customerId = Guid.NewGuid();
            var customer   = DomainTestsHelper.ValidCustomerWithId(customerId);
            var customer2  = new Customer(Guid.NewGuid(), "Adamu", "ADamu");

            await customerRepository.AddCustomerAsync(customer);

            await customerRepository.AddCustomerAsync(customer2);

            var customers = await customerRepository.GetCustomersAsync();

            customers.Should().Contain(customer);
            customers.Should().Contain(customer2);
        }
        public async Task add_async_multiple_trips_get_customers_return_all_expect_success()
        {
            var tripId1 = Guid.NewGuid();
            var tripId2 = Guid.NewGuid();
            var trip1   = DomainTestsHelper.ValidTripWithIdAndName(tripId1, "trip1");
            var trip2   = DomainTestsHelper.ValidTripWithIdAndName(tripId2, "trip2");

            await tripRepository.AddTripAsync(trip1);

            await tripRepository.AddTripAsync(trip2);

            var trips = await tripRepository.GetTripsAsync();

            trips.Should().Contain(trip1);
            trips.Should().Contain(trip2);
        }