public async Task GetSortedBridgesReturnsSortedBridgesCollection() { // Arrange var options = new DbContextOptionsBuilder <GeojamDbContext>() .UseInMemoryDatabase(nameof(GetSortedBridgesReturnsSortedBridgesCollection)) .Options; var dbContext = new GeojamDbContext(options); GenerateDbContext(dbContext); var hikerProvider = new HikerProvider(dbContext, null, mapper); var bridgesProvider = new BridgesProvider(dbContext, null, mapper, hikerProvider, null); var bridges = await bridgesProvider.GetBridgesAsync(); // Act var actual = await bridgesProvider.GetSortedBridgesAsync(bridges.Bridges.ToArray()); Assert.True(actual.IsSuccess); Assert.Null(actual.ErrorMessage); Assert.True(actual.SortedBridges.Any()); Assert.Equal(actual.SortedBridges.Count(), dbContext.Bridges.Count()); for (int i = 1; i < actual.SortedBridges.Count; i++) { Assert.True(actual.SortedBridges.Keys[i - 1] <= actual.SortedBridges.Keys[i]); } }
public BridgesProvider(GeojamDbContext dbContext, ILogger <BridgesProvider> logger, IMapper mapper, IHikerProvider hikerProvider, IWebHostEnvironment env) { this.dbContext = dbContext; this.logger = logger; this.mapper = mapper; this.hikerProvider = hikerProvider; SeedData(env); }
public async Task CrossBridgesReturnsTimeToCrossAllBridgesByAllHikers(int dbContextUniqueIndex, int[] includeBridgeIds, double expected) { // Arrange var dbName = $"{nameof(CrossBridgesReturnsTimeToCrossAllBridgesByAllHikers)}{dbContextUniqueIndex}"; var options = new DbContextOptionsBuilder <GeojamDbContext>() .UseInMemoryDatabase(dbName) .Options; var dbContext = new GeojamDbContext(options); GenerateDbContext(dbContext, includeBridgeIds); var hikerProvider = new HikerProvider(dbContext, null, mapper); var bridgesProvider = new BridgesProvider(dbContext, null, mapper, hikerProvider, null); // Act var actual = await bridgesProvider.CrossBridgesAsync(); Assert.True(actual.IsSuccess); Assert.Null(actual.ErrorMessage); Assert.True(actual.CrossingTime == expected); }
public async Task GetBridgesReturnsAllBridges() { // Arrange var options = new DbContextOptionsBuilder <GeojamDbContext>() .UseInMemoryDatabase(nameof(GetBridgesReturnsAllBridges)) .Options; var dbContext = new GeojamDbContext(options); GenerateDbContext(dbContext); var hikerProvider = new HikerProvider(dbContext, null, mapper); var bridgesProvider = new BridgesProvider(dbContext, null, mapper, hikerProvider, null); // Act var actual = await bridgesProvider.GetBridgesAsync(); // Assert Assert.True(actual.IsSuccess); Assert.Null(actual.ErrorMessage); Assert.True(actual.Bridges.Any()); Assert.Equal(actual.Bridges.Count(), dbContext.Bridges.Count()); Assert.IsType <Models.Bridge>(actual.Bridges.First()); }
private void GenerateDbContext(GeojamDbContext dbContext, int[] includeBridgeIds = null) { if (includeBridgeIds == null || !includeBridgeIds.Any()) { includeBridgeIds = bridges.Select(b => b.Id).ToArray(); } foreach (var bridge in bridges.Where(b => includeBridgeIds.Contains(b.Id))) { dbContext.Bridges.Add(bridge); } foreach (var hiker in hikers.Where(h => includeBridgeIds.Contains(h.BridgeId))) { dbContext.Hikers.Add(hiker); } foreach (var bridge in dbContext.Bridges) { bridge.Hikers = new List <Db.Hiker>(); bridge.Hikers = dbContext.Hikers.Where(h => h.BridgeId == bridge.Id); } dbContext.SaveChanges(); }
public HikerProvider(GeojamDbContext dbContext, ILogger <BridgesProvider> logger, IMapper mapper) { this.dbContext = dbContext; this.logger = logger; this.mapper = mapper; }