public async Task UpdateAsync_ValidData_Successful()
        {
            // Arrange.
            Seed(TripFlipDbContext, UserEntityToSeed);
            Seed(TripFlipDbContext, TripEntityToSeed);
            Seed(TripFlipDbContext, TripSubscriberEntityToSeed);
            Seed(TripFlipDbContext, TripSubscriberAdminRoleEntityToSeed);

            CurrentUserService = CreateCurrentUserServiceWithExistentUser();
            TripService        = new TripService(TripFlipDbContext, Mapper, CurrentUserService);

            var updateTripDto = GetUpdateTripDto();

            // Act.
            var resultTripDto = await TripService.UpdateAsync(updateTripDto);

            var expectedTripDto = new TripDto()
            {
                Id          = updateTripDto.Id,
                Title       = updateTripDto.Title,
                Description = updateTripDto.Description,
                StartsAt    = updateTripDto.StartsAt,
                EndsAt      = updateTripDto.EndsAt
            };

            var tripDtoComparer = new TripDtoComparer();

            // Assert.
            Assert.AreEqual(0,
                            tripDtoComparer.Compare(expectedTripDto, resultTripDto));
        }
        public async Task GetAllTripsAsync_SeededValidData_RecievedDataMatchesSeeded()
        {
            // Arrange.
            var tripEntitiesToSeed = TripEntitiesToSeed;

            Seed(TripFlipDbContext, tripEntitiesToSeed);
            TripService = new TripService(TripFlipDbContext, Mapper, CurrentUserService);

            var paginationDto = GetPaginationDto();

            // Act.
            var returnedTripDtosPagedList =
                await TripService.GetAllTripsAsync(
                    searchString : null,
                    paginationDto : paginationDto);

            var returnedTripDtosList = returnedTripDtosPagedList.Items.ToList();
            var expectedTripDtosList = Mapper.Map <List <TripDto> >(tripEntitiesToSeed);

            var tripDtoComparer = new TripDtoComparer();

            // Assert.
            Assert.AreEqual(expectedTripDtosList.Count, returnedTripDtosList.Count);

            for (int i = 0; i < expectedTripDtosList.Count; i++)
            {
                Assert.AreEqual(0,
                                tripDtoComparer.Compare(expectedTripDtosList[i], returnedTripDtosList[i]));
            }
        }
        public async Task Test_CreateAsync_Given_Valid_Data_validation_should_be_successful()
        {
            CurrentUserService = CreateCurrentUserServiceWithExistentUser();
            TripService        = new TripService(TripFlipDbContext, Mapper, CurrentUserService);

            Seed(TripFlipDbContext, UserEntityToSeed);
            Seed(TripFlipDbContext, TripRolesToSeed);

            var createTripDto = GetCreateTripDtoData();
            var resultTripDto = await TripService.CreateAsync(createTripDto);

            var tripDtoComparer = new TripDtoComparer();

            Assert.AreEqual(0, tripDtoComparer.Compare(resultTripDto, _expectedReturnTripDto));
        }
        public async Task GetByIdAsync_ValidTripId_Successful()
        {
            // Arrange
            Seed(TripFlipDbContext, TripEntityToSeed);

            int validTripId = 1;

            TripService = new TripService(
                tripFlipDbContext: TripFlipDbContext,
                mapper: Mapper,
                currentUserService: null);

            var expectedTripDto = Mapper.Map <TripDto>(TripEntityToSeed);

            expectedTripDto.Id = validTripId;

            // Act
            var resultTripDto = await TripService.GetByIdAsync(validTripId);

            // Assert
            var tripDtoComparer = new TripDtoComparer();

            Assert.AreEqual(0, tripDtoComparer.Compare(resultTripDto, expectedTripDto));
        }