Пример #1
0
        public async Task GetApplicableRateAsync_NightRate()
        {
            //Night Rate
            using (var context = new CarParkContext())
            {
                var repository = new CarParkRepository(context);

                var entry = DateTime.Parse("20/08/2020 07:30:00 PM");
                var exit  = DateTime.Parse("21/08/2020 04:30:00 PM");

                //Act
                var rate = await repository.GetApplicableRateAsync(entry, exit);

                //Assert
                Assert.True(rate.Name == "Night Rate");
                Assert.True(rate.Price == 6.5);
            }

            //Night Rate instead of Weekend rate
            using (var context = new CarParkContext())
            {
                var repository = new CarParkRepository(context);

                var entry = DateTime.Parse("21/08/2020 11:30:00 PM");
                var exit  = DateTime.Parse("22/08/2020 04:30:00 PM");

                //Act
                var rate = await repository.GetApplicableRateAsync(entry, exit);

                //Assert
                Assert.True(rate.Name == "Night Rate");
                Assert.True(rate.Price == 6.5);
            }
        }
Пример #2
0
 public void Dispose()
 {
     using (var context = new CarParkContext())
     {
         context.Database.EnsureDeleted();
     }
 }
Пример #3
0
 public CarParkRepositoryTests()
 {
     using (var context = new CarParkContext())
     {
         context.Database.EnsureCreated();
         //Arrange
         context.Seed().ConfigureAwait(true);
     }
 }
Пример #4
0
        public async Task GetApplicableRateAsync_StandardRate_Hourly()
        {
            //Standard Rate - Hourly
            using (var context = new CarParkContext())
            {
                var repository = new CarParkRepository(context);

                var entry = DateTime.Parse("20/08/2020 09:30:00 PM");
                var exit  = DateTime.Parse("20/08/2020 11:35:00 PM");

                //Act
                var rate = await repository.GetApplicableRateAsync(entry, exit);

                //Assert
                Assert.True(rate.Name == "Standard Rate");
                Assert.True(rate.Price == 15);
            }
        }
Пример #5
0
        public async Task GetApplicableRateAsync_WeekendRate()
        {
            //Weekend Rate
            using (var context = new CarParkContext())
            {
                var repository = new CarParkRepository(context);

                var entry = DateTime.Parse("22/08/2020 07:30:00 PM");
                var exit  = DateTime.Parse("23/08/2020 04:30:00 PM");

                //Act
                var rate = await repository.GetApplicableRateAsync(entry, exit);

                //Assert
                Assert.True(rate.Name == "Weekend Rate");
                Assert.True(rate.Price == 10);
            }
        }
Пример #6
0
        public async Task GetApplicableRateAsync_EarlyBird()
        {
            //Early Bird
            using (var context = new CarParkContext())
            {
                var repository = new CarParkRepository(context);

                var entry = DateTime.Parse("20/08/2020 08:00:00 AM");
                var exit  = DateTime.Parse("20/08/2020 04:30:00 PM");

                //Act
                var rate = await repository.GetApplicableRateAsync(entry, exit);

                //Assert
                Assert.True(rate.Name == "Early Bird");
                Assert.True(rate.Price == 13);
            }
        }
Пример #7
0
        public async static Task Seed(this CarParkContext context)
        {
            await context.Database.EnsureDeletedAsync();

            await context.Database.EnsureCreatedAsync();

            context.Rates.Add(new RateEntity
            {
                Name     = "Early Bird",
                Type     = RateType.Flat,
                RateDay  = RateDay.Weekday,
                EntryMin = DateTime.ParseExact("06:00:00 AM", "h:mm:ss tt", CultureInfo.InvariantCulture),
                EntryMax = DateTime.ParseExact("09:00:00 AM", "h:mm:ss tt", CultureInfo.InvariantCulture),
                ExitMin  = DateTime.ParseExact("03:30:00 PM", "h:mm:ss tt", CultureInfo.InvariantCulture),
                ExitMax  = DateTime.ParseExact("11:30:00 PM", "h:mm:ss tt", CultureInfo.InvariantCulture),
                Price    = 13
            });

            context.Rates.Add(new RateEntity
            {
                Name     = "Night Rate",
                Type     = RateType.Flat,
                RateDay  = RateDay.Weekday,
                EntryMin = DateTime.ParseExact("06:00:00 PM", "h:mm:ss tt", CultureInfo.InvariantCulture),
                EntryMax = DateTime.ParseExact("11:59:00 PM", "h:mm:ss tt", CultureInfo.InvariantCulture),
                ExitMin  = DateTime.ParseExact("03:30:00 PM", "h:mm:ss tt", CultureInfo.InvariantCulture).AddDays(1),
                ExitMax  = DateTime.ParseExact("11:30:00 PM", "h:mm:ss tt", CultureInfo.InvariantCulture).AddDays(1),
                Price    = 6.5
            });

            context.Rates.Add(new RateEntity
            {
                Name     = "Weekend Rate",
                Type     = RateType.Flat,
                RateDay  = RateDay.Weekend,
                EntryMin = DateTime.ParseExact("12:00:00 AM", "h:mm:ss tt", CultureInfo.InvariantCulture),
                ExitMax  = DateTime.ParseExact("12:00:00 AM", "h:mm:ss tt", CultureInfo.InvariantCulture),
                Price    = 10
            });

            context.HourlyRates.Add(new HourlyRateEntity
            {
                Name        = "Standard Rate",
                DurationMin = 0,
                DurationMax = 1,
                IsHourly    = true,
                Price       = 5
            });

            context.HourlyRates.Add(new HourlyRateEntity
            {
                Name        = "Standard Rate",
                DurationMin = 1,
                DurationMax = 2,
                IsHourly    = true,
                Price       = 10
            });

            context.HourlyRates.Add(new HourlyRateEntity
            {
                Name        = "Standard Rate",
                DurationMin = 2,
                DurationMax = 3,
                IsHourly    = true,
                Price       = 15
            });

            context.HourlyRates.Add(new HourlyRateEntity
            {
                Name        = "Standard Rate",
                DurationMin = 3,
                DurationMax = int.MaxValue,
                IsDaily     = true,
                Price       = 20
            });

            await context.SaveChangesAsync();
        }
Пример #8
0
 public HomeController(CarParkContext parkcontext)
 {
     _parkcontext = parkcontext;
 }
Пример #9
0
 public CarParkRepository(CarParkContext carParkContext)
 {
     carParkContext.Database.EnsureCreated();
     this.carParkContext = carParkContext;
 }
Пример #10
0
 public RecordSelectedController(CarParkContext parkcontext)
 {
     _parkcontext = parkcontext;
 }