コード例 #1
0
        public async Task CreateBooking_WithNotValidUser_ShouldReturnFailMessage()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;

            var userRepository    = new EfDeletableEntityRepository <ApplicationUser>(new ApplicationDbContext(options));
            var bookingRepository = new EfDeletableEntityRepository <Model4You.Data.Models.Booking>(new ApplicationDbContext(options));

            var service = new BookingService.BookingService(bookingRepository, userRepository, null);
            var user1   = await this.CreateUserWithNoInformationAsync(
                "*****@*****.**", "Pesho", "Peshev", userRepository);

            var fakeUserId = "FakeUser6006";
            var booking    = await service.CreateBooking(
                fakeUserId,
                DateTime.UtcNow,
                "TestName",
                "TestCompany",
                "*****@*****.**",
                "059593",
                3,
                "descriptionTest");

            var failedNoUser = "******";
            var getBooking   = await bookingRepository
                               .All()
                               .Where(x => x.UserId == fakeUserId)
                               .FirstOrDefaultAsync();

            Assert.Equal(failedNoUser, booking);
            Assert.Null(getBooking);
        }
コード例 #2
0
        public async Task GetBookingById_WithWrongInformation_ShouldReturnNull()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;

            var userRepository    = new EfDeletableEntityRepository <ApplicationUser>(new ApplicationDbContext(options));
            var bookingRepository = new EfDeletableEntityRepository <Model4You.Data.Models.Booking>(new ApplicationDbContext(options));

            var service = new BookingService.BookingService(bookingRepository, userRepository, null);
            var user1   = await this.CreateUserWithNoInformationAsync
                              ("*****@*****.**", "Pesho", "Peshev", userRepository);

            for (int i = 0; i < 2; i++)
            {
                await this.CreateBookingForTest(
                    user1,
                    DateTime.UtcNow,
                    $"TestName{i}",
                    "TestCompany",
                    $"test{i}@abv.bg",
                    $"059593{i}",
                    1,
                    $"descriptionTest{i}",
                    false,
                    userRepository,
                    bookingRepository);
            }
            var getBookingById = await service.GetBookingById <InboxViewModel>("FakeUser6006", user1);

            Assert.Null(getBookingById);
        }
コード例 #3
0
        public async Task CreateBooking_ShouldCreateBookingForTheModel()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;

            var userRepository    = new EfDeletableEntityRepository <ApplicationUser>(new ApplicationDbContext(options));
            var bookingRepository = new EfDeletableEntityRepository <Model4You.Data.Models.Booking>(new ApplicationDbContext(options));

            var service = new BookingService.BookingService(bookingRepository, userRepository, null);
            var user1   = await this.CreateUserWithNoInformationAsync
                              ("*****@*****.**", "Pesho", "Peshev", userRepository);

            var booking = await service.CreateBooking(
                user1,
                DateTime.UtcNow,
                "TestName",
                "TestCompany",
                "*****@*****.**",
                "059593",
                3,
                "descriptionTest");

            var success    = "Booking was successful! Please wait for the model to contact you back";
            var getBooking = await bookingRepository
                             .All()
                             .Where(x => x.UserId == user1)
                             .FirstOrDefaultAsync();

            Assert.Equal(success, booking);
            Assert.NotNull(getBooking);
        }
コード例 #4
0
 public ApplicationController()
 {
     this.creditCardService = new CreditCardService.CreditCardService();
     this.bookingService = new BookingService.BookingService();
     this.airportService = new AirportService.AirportService();
     this.hotelService = new HotelService.HotelService();
     this.bookingRepository = new BookingRepository();
     this.userRepository = new UserRepository();
 }
コード例 #5
0
        public async Task DeleteBooking_ShouldDeleteTheBookingByIdForTheUser()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;

            var userRepository    = new EfDeletableEntityRepository <ApplicationUser>(new ApplicationDbContext(options));
            var bookingRepository = new EfDeletableEntityRepository <Model4You.Data.Models.Booking>(new ApplicationDbContext(options));

            var service = new BookingService.BookingService(bookingRepository, userRepository, null);
            var user1   = await this.CreateUserWithNoInformationAsync(
                "*****@*****.**", "Pesho", "Peshev", userRepository);

            var booking = await this.CreateBookingForTest(
                user1,
                DateTime.UtcNow,
                "TestName",
                "TestCompany",
                "*****@*****.**",
                "059593",
                1,
                "descriptionTest",
                false,
                userRepository,
                bookingRepository);

            for (int i = 0; i < 2; i++)
            {
                await this.CreateBookingForTest(
                    user1,
                    DateTime.UtcNow,
                    $"TestName{i}",
                    "TestCompany",
                    $"test{i}@abv.bg",
                    $"059593{i}",
                    1,
                    $"descriptionTest{i}",
                    false,
                    userRepository,
                    bookingRepository);
            }

            var getBookingId = await bookingRepository.All()
                               .Where(x => x.UserId == user1 && x.HireDescription == "descriptionTest")
                               .Select(x => x.Id)
                               .FirstOrDefaultAsync();

            await service.DeleteBooking(getBookingId, user1);

            var bookingCount = await bookingRepository
                               .All()
                               .Where(x => x.UserId == user1)
                               .CountAsync();

            // We have 3 bookings calling Delete makes the bookings 2 in count;
            Assert.Equal(2, bookingCount);
        }
コード例 #6
0
        public async Task GetBookingById_ShouldReturnTheBookingByUserIdAndBookingId()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;

            var userRepository    = new EfDeletableEntityRepository <ApplicationUser>(new ApplicationDbContext(options));
            var bookingRepository = new EfDeletableEntityRepository <Model4You.Data.Models.Booking>(new ApplicationDbContext(options));

            var service = new BookingService.BookingService(bookingRepository, userRepository, null);
            var user1   = await this.CreateUserWithNoInformationAsync
                              ("*****@*****.**", "Pesho", "Peshev", userRepository);

            var booking = await this.CreateBookingForTest(
                user1,
                DateTime.UtcNow,
                "TestName",
                "TestCompany",
                "*****@*****.**",
                "059593",
                1,
                "descriptionTest",
                false,
                userRepository,
                bookingRepository);

            for (int i = 0; i < 3; i++)
            {
                await this.CreateBookingForTest(
                    user1,
                    DateTime.UtcNow,
                    $"TestName{i}",
                    "TestCompany",
                    $"test{i}@abv.bg",
                    $"059593{i}",
                    1,
                    $"descriptionTest{i}",
                    false,
                    userRepository,
                    bookingRepository);
            }

            var getBookingId = await bookingRepository.All()
                               .Where(x => x.UserId == user1 && x.HireDescription == "descriptionTest")
                               .Select(x => x.Id)
                               .FirstOrDefaultAsync();

            var getBookingById = await service.GetBookingById <InboxViewModel>(getBookingId, user1);

            Assert.Equal("TestName", getBookingById.FullName);
            Assert.Equal("*****@*****.**", getBookingById.Email);
        }
コード例 #7
0
        public async Task TakeAllDeletedBookings_ShouldReturnAllDeletedBookingsForTheUser()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;

            var userRepository    = new EfDeletableEntityRepository <ApplicationUser>(new ApplicationDbContext(options));
            var bookingRepository = new EfDeletableEntityRepository <Model4You.Data.Models.Booking>(new ApplicationDbContext(options));

            var service = new BookingService.BookingService(bookingRepository, userRepository, null);
            var user1   = await this.CreateUserWithNoInformationAsync(
                "*****@*****.**", "Pesho", "Peshev", userRepository);

            for (int i = 0; i < 3; i++)
            {
                await this.CreateBookingForTest(
                    user1,
                    DateTime.UtcNow,
                    $"TestName{i}",
                    "TestCompany",
                    $"test{i}@abv.bg",
                    $"059593{i}",
                    1,
                    $"descriptionTest{i}",
                    false,
                    userRepository,
                    bookingRepository);
            }

            for (int i = 0; i < 2; i++)
            {
                await this.CreateBookingForTest(
                    user1,
                    DateTime.UtcNow,
                    $"TestName{i}",
                    "TestCompany",
                    $"test{i}@abv.bg",
                    $"059593{i}",
                    1,
                    $"descriptionTest{i}",
                    true,
                    userRepository,
                    bookingRepository);
            }

            var takeAllDeleted = await service.TakeAllDeletedBookings <InboxViewModel>(user1);

            var countDeleted = takeAllDeleted.Count();

            Assert.Equal(2, countDeleted);
        }
コード例 #8
0
        public async Task GetUserEmail_ShouldReturnUserEmail()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;

            var userRepository    = new EfDeletableEntityRepository <ApplicationUser>(new ApplicationDbContext(options));
            var bookingRepository = new EfDeletableEntityRepository <Model4You.Data.Models.Booking>(new ApplicationDbContext(options));

            var service = new BookingService.BookingService(bookingRepository, userRepository, null);
            var user1   = await this.CreateUserWithNoInformationAsync
                              ("*****@*****.**", "Pesho", "Peshev", userRepository);

            var getUserEmail = await service.GetUserEmail(user1);

            Assert.Equal("*****@*****.**", getUserEmail);
        }
コード例 #9
0
        public async Task TakeAllBookingsForCurrentUser_DependingOnPerPage_ShouldReturnAllBookingsForTheUser_DependingOnPerPageNumber()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;

            var userRepository    = new EfDeletableEntityRepository <ApplicationUser>(new ApplicationDbContext(options));
            var bookingRepository = new EfDeletableEntityRepository <Model4You.Data.Models.Booking>(new ApplicationDbContext(options));

            var service = new BookingService.BookingService(bookingRepository, userRepository, null);
            var user1   = await this.CreateUserWithNoInformationAsync(
                "*****@*****.**", "Pesho", "Peshev", userRepository);

            for (int i = 0; i < 18; i++)
            {
                await this.CreateBookingForTest(
                    user1,
                    DateTime.UtcNow,
                    $"TestName{i}",
                    "TestCompany",
                    $"test{i}@abv.bg",
                    $"059593{i}",
                    1,
                    $"descriptionTest{i}",
                    false,
                    userRepository,
                    bookingRepository);
            }

            var perPage    = 10;
            var pagesCount = await service.GetPagesCount(perPage, user1);

            var takeAllBookings = await service
                                  .TakeAllBookingsForCurrentUser <InboxViewModel>(user1, 1, perPage);

            var takeAllBookingsTwo = await service
                                     .TakeAllBookingsForCurrentUser <InboxViewModel>(user1, 2, perPage);

            var bookingsReturned        = takeAllBookings.Count();
            var bookingsReturnedPageTwo = takeAllBookingsTwo.Count();

            // First page should return 10 and second 8 for overall 18 blogs
            Assert.Equal(10, bookingsReturned);
            Assert.Equal(8, bookingsReturnedPageTwo);
            Assert.Equal(2, pagesCount);
        }
コード例 #10
0
        public async Task TakeAllBookingsForCurrentUser_WithNoBookings_ShouldReturnEmptyCollection()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;

            var userRepository    = new EfDeletableEntityRepository <ApplicationUser>(new ApplicationDbContext(options));
            var bookingRepository = new EfDeletableEntityRepository <Model4You.Data.Models.Booking>(new ApplicationDbContext(options));

            var service = new BookingService.BookingService(bookingRepository, userRepository, null);
            var user1   = await this.CreateUserWithNoInformationAsync(
                "*****@*****.**", "Pesho", "Peshev", userRepository);

            var perPage    = 10;
            var pagesCount = await service.GetPagesCount(perPage, user1);

            var takeAllBookings = await service
                                  .TakeAllBookingsForCurrentUser <InboxViewModel>(user1, 1, perPage);

            Assert.Empty(takeAllBookings);
        }
コード例 #11
0
        public void SetUp()
        {
            // Boilerplate
            _mockRepository = new MockRepository(MockBehavior.Strict);
            _fixture        = new Fixture();

            //Prevent fixture from generating circular references
            _fixture.Behaviors.Add(new OmitOnRecursionBehavior(1));

            // Mock setup
            _context   = new PatientBookingContext(new DbContextOptionsBuilder <PatientBookingContext>().UseInMemoryDatabase(Guid.NewGuid().ToString()).Options);
            _validator = _mockRepository.Create <IAddBookingRequestValidator>();

            // Mock default
            SetupMockDefaults();

            // Sut instantiation
            _bookingService = new BookingService.BookingService(
                _context,
                _validator.Object
                );
        }