Beispiel #1
0
        public async Task TestRead()
        {
            using (raceRepository)
            {
                var track = new Track()
                {
                    BestTime       = 121213123,
                    LengthInMeters = 123214,
                    MaxCars        = 50,
                    Name           = "RaceTrack"
                };
                var race = new Race()
                {
                    NumberOfLaps = 5,
                    PlannedEnd   = new DateTime(1920, 11, 11),
                    PlannedStart = new DateTime(1920, 11, 11),
                    Track        = track
                };
                context.Add(race);
                await context.SaveChangesAsync();

                var raceCreate = new RaceCreateDTO()
                {
                    PlannedEnd   = race.PlannedEnd,
                    PlannedStart = race.PlannedStart,
                    Id           = race.Id,
                    ActualEnd    = race.ActualEnd,
                    ActualStart  = race.ActualStart,
                    NumberOfLaps = race.NumberOfLaps,
                    TrackId      = race.Track.Id
                };

                Assert.Equal(raceCreate, await raceRepository.ReadAsync(race.Id));
            }
        }
        public async void ReadAsync_given_raceid_returns_race()
        {
            var connection = new SqliteConnection("DataSource=:memory:");

            connection.Open();
            var builder = new DbContextOptionsBuilder <SlotCarContext>().UseSqlite(connection);

            _context = new SlotCarContext(builder.Options);
            _context.Database.EnsureCreated();

            var track = new Track()
            {
                Id             = 1,
                Name           = "Huge Lane",
                LengthInMeters = 1000,
                MaxCars        = 4
            };

            var race = new Race()
            {
                Id           = 1,
                TrackId      = 1,
                Track        = track,
                NumberOfLaps = 2,
                ActualStart  = new DateTime(2015, 09, 28),
                PlannedEnd   = new DateTime(2017, 09, 28)
            };
            await _context.Races.AddAsync(race);

            await _context.SaveChangesAsync();

            using (var repository = new RaceRepository(_context))
            {
                var dto = await repository.ReadAsync(1);

                Assert.Equal(1, dto.Id);
                Assert.Equal(1, dto.TrackId);
                Assert.Equal(2, dto.NumberOfLaps);
                Assert.Equal(null, dto.PlannedStart);
                Assert.Equal(new DateTime(2015, 09, 28), dto.ActualStart);
                Assert.Equal(new DateTime(2017, 09, 28), dto.PlannedEnd);
                Assert.Equal(null, dto.ActualEnd);
            }
        }
        public async void ReadAsync_returns_mapped_races()
        {
            var connection = new SqliteConnection("DataSource=:memory:");

            connection.Open();
            var builder = new DbContextOptionsBuilder <SlotCarContext>().UseSqlite(connection);

            _context = new SlotCarContext(builder.Options);
            _context.Database.EnsureCreated();

            var track = new Track()
            {
                Id             = 1,
                Name           = "Huge Lane",
                LengthInMeters = 1000,
                MaxCars        = 4
            };

            var race = new Race()
            {
                Id           = 1,
                TrackId      = 1,
                Track        = track,
                NumberOfLaps = 2,
                ActualStart  = new DateTime(2015, 09, 28),
                PlannedEnd   = new DateTime(2017, 09, 28)
            };

            var car = new Car()
            {
                Id = 1, Name = "BMW", Driver = "Hugh Hefner"
            };
            var car2 = new Car()
            {
                Id = 2, Name = "Opel", Driver = "Barack Obama"
            };

            var raceCar = new CarInRace()
            {
                CarId       = car.Id,
                RaceId      = race.Id,
                Car         = car,
                Race        = race,
                EndPosition = 2
            };

            var raceCar2 = new CarInRace()
            {
                CarId       = car2.Id,
                RaceId      = race.Id,
                Car         = car2,
                Race        = race,
                EndPosition = 1
            };

            await _context.Cars.AddAsync(car);

            await _context.Cars.AddAsync(car2);

            await _context.Races.AddAsync(race);

            await _context.CarsInRace.AddAsync(raceCar);

            await _context.CarsInRace.AddAsync(raceCar2);

            await _context.SaveChangesAsync();

            using (var repository = new RaceRepository(_context))
            {
                var dtos = await repository.ReadAsync();

                var result   = dtos.FirstOrDefault();
                var expected = new List <RaceListDTO>();
                expected.Add(new RaceListDTO()
                {
                    Id            = 1,
                    TrackName     = "Huge Lane",
                    NumberOfLaps  = 2,
                    Start         = new DateTime(2015, 09, 28),
                    End           = new DateTime(2017, 09, 28),
                    MaxCars       = 4,
                    NumberOfCars  = 2,
                    WinningCar    = "Opel",
                    WinningDriver = "Barack Obama"
                });

                var expectedFinal = expected.FirstOrDefault();
                Assert.Equal(expectedFinal.Id, result.Id);
                Assert.Equal(expectedFinal.TrackName, result.TrackName);
                Assert.Equal(expectedFinal.Start, result.Start);
                Assert.Equal(expectedFinal.End, result.End);
                Assert.Equal(expectedFinal.MaxCars, result.MaxCars);
                Assert.Equal(expectedFinal.NumberOfCars, result.NumberOfCars);
                Assert.Equal(expectedFinal.WinningCar, result.WinningCar);
                Assert.Equal(expectedFinal.WinningDriver, result.WinningDriver);
            }
        }