public async Task ReturnsDailyLeaderboards() { // Arrange var today = DateTime.UtcNow.Date; using (var context = new NecroDancerContext(necroDancerContextOptions)) { context.DailyLeaderboards.AddRange(new[] { new DailyLeaderboard { Date = today.AddDays(-1) }, }); context.Products.AddRange(new[] { new Product(0, "classic", "Classic"), }); context.SaveChanges(); } mockSteamClientApiClient .Setup(s => s.FindLeaderboardAsync(appId, It.IsAny <string>(), cancellationToken)) .ReturnsAsync(Mock.Of <IFindOrCreateLeaderboardCallback>()); // Act var dailyLeaderboards2 = await worker.GetDailyLeaderboardsAsync(limit, cancellationToken); // Assert Assert.Equal(2, dailyLeaderboards2.Count()); }
public async Task ReturnsStaleDailyLeaderboards() { // Arrange var today = new DateTime(2017, 9, 13); using (var db = new NecroDancerContext(necroDancerContextOptions)) { db.DailyLeaderboards.AddRange(new[] { new DailyLeaderboard { LeaderboardId = 1, Date = today.AddDays(-1), }, new DailyLeaderboard { LeaderboardId = 2, Date = today, }, }); db.SaveChanges(); } // Act var staleDailyLeaderboards = await worker.GetStaleDailyLeaderboardsAsync(today, limit, cancellationToken); // Assert Assert.IsAssignableFrom <IEnumerable <DailyLeaderboard> >(staleDailyLeaderboards); foreach (var staleDailyLeaderboard in staleDailyLeaderboards) { Assert.NotEqual(today, staleDailyLeaderboard.Date); } }
public async Task CurrentDailyLeaderboardsDoNotExist_GetsAndReturnsCurrentDailyLeaderboards() { // Arrange var today = new DateTime(2017, 9, 13); using (var db = new NecroDancerContext(necroDancerContextOptions)) { db.Products.AddRange(new[] { new Product(0, "classic", "Classic"), new Product(1, "amplified", "Amplified"), }); db.SaveChanges(); } mockSteamClientApiClient .Setup(s => s.FindLeaderboardAsync(appId, It.IsAny <string>(), cancellationToken)) .ReturnsAsync(Mock.Of <IFindOrCreateLeaderboardCallback>()); // Act var leaderboards = await worker.GetCurrentDailyLeaderboardsAsync(today, cancellationToken); // Assert var leaderboard = leaderboards.First(); Assert.Equal(today, leaderboard.Date); Assert.Equal(0, leaderboard.ProductId); mockSteamClientApiClient.Verify(s => s.FindLeaderboardAsync(appId, It.IsAny <string>(), cancellationToken), Times.Exactly(2)); }
private static string GetLeaderboardsConnectionString(IContext c) { var settings = c.Kernel.Get <IDailyLeaderboardsSettings>(); // If Steam Client API credentials are not set, use the dev database as test data will be returned from Steam Client API. if (!SteamClientApiCredentialsAreSet(c)) { return(StorageHelper.GetLocalDbConnectionString(DevDatabaseName)); } // Get the connection string from settings if it's available; otherwise, use the default. var connectionString = settings.LeaderboardsConnectionString?.Decrypt() ?? StorageHelper.GetLocalDbConnectionString("NecroDancer"); // Check if any players are in the database. If there are none (i.e. toofz Leaderboards Service hasn't been run), // use the dev database instead as it will be seeded with test data. var options = new DbContextOptionsBuilder <NecroDancerContext>() .UseSqlServer(connectionString) .Options; using (var context = new NecroDancerContext(options)) { InitializeNecroDancerContext(context); } return(connectionString); }
public async Task CurrentDailyLeaderboardsExist_ReturnsExistingCurrentDailyLeaderboards() { // Arrange var today = new DateTime(2017, 9, 13); var current = new DailyLeaderboard { Date = today, ProductId = 0, Product = new Product(0, "classic", "Classic"), }; using (var db = new NecroDancerContext(necroDancerContextOptions)) { db.DailyLeaderboards.Add(current); db.SaveChanges(); } // Act var leaderboards = await worker.GetCurrentDailyLeaderboardsAsync(today, cancellationToken); // Assert var leaderboard = leaderboards.First(); Assert.Equal(today, leaderboard.Date); Assert.Equal("classic", leaderboard.Product.Name); mockSteamClientApiClient.Verify(s => s.FindLeaderboardAsync(appId, It.IsAny <string>(), cancellationToken), Times.Never); }
public NecroDancerContextTests() { var options = new DbContextOptionsBuilder <NecroDancerContext>() .UseInMemoryDatabase(databaseName: Constants.NecroDancerContextName) .Options; db = new NecroDancerContext(options); }
public void ReturnsPlayersController() { // Arrange var db = new NecroDancerContext(); // Act var controller = new PlayersController(db); // Assert Assert.IsAssignableFrom <PlayersController>(controller); }
public NecroDancerIntegrationTestsBase() { var connectionString = StorageHelper.GetDatabaseConnectionString(Constants.NecroDancerContextName); var options = new DbContextOptionsBuilder <NecroDancerContext>() .UseSqlServer(connectionString) .Options; db = new NecroDancerContext(options); db.Database.EnsureDeleted(); db.Database.Migrate(); }
public void ReturnsNecroDancerContext() { // Arrange var options = new DbContextOptionsBuilder <NecroDancerContext>() .UseInMemoryDatabase(databaseName: Constants.NecroDancerContextName) .Options; // Act var db = new NecroDancerContext(options); // Assert Assert.IsAssignableFrom <NecroDancerContext>(db); }
public IntegrationTestsBase() { var connectionString = StorageHelper.GetDatabaseConnectionString(Constants.LeaderboardsStoreClientName); var options = new DbContextOptionsBuilder <NecroDancerContext>() .UseSqlServer(connectionString) .Options; db = new NecroDancerContext(options); db.Database.EnsureDeleted(); db.Database.Migrate(); db.EnsureSeedData(); storeClient = new LeaderboardsStoreClient(connectionString); }
private static NecroDancerContext InitializeContext() { var connectionString = StorageHelper.GetDatabaseConnectionString(Constants.NecroDancerContextName); var options = new DbContextOptionsBuilder <NecroDancerContext>() .UseSqlServer(connectionString) .Options; using (var context = new NecroDancerContext(options)) { context.Database.EnsureDeleted(); context.Database.Migrate(); context.EnsureSeedData(); } return(new NecroDancerContext(options)); }
public static void EnsureSeedData(this NecroDancerContext context) { context.Items.AddRange(Util.ReadJsonArray <Data.Item>(NecroDancerResources.Items)); context.Enemies.AddRange(Util.ReadJsonArray <Data.Enemy>(NecroDancerResources.Enemies)); context.Products.AddRange(Util.ReadJsonArray <Product>(LeaderboardsResources.Products)); context.Modes.AddRange(Util.ReadJsonArray <Mode>(LeaderboardsResources.Modes)); context.Runs.AddRange(Util.ReadJsonArray <Run>(LeaderboardsResources.Runs)); context.Characters.AddRange(Util.ReadJsonArray <Character>(LeaderboardsResources.Characters)); context.Leaderboards.AddRange(Util.ReadJsonArray <Leaderboard>(LeaderboardsResources.Leaderboards)); context.Entries.AddRange(Util.ReadJsonArray <Entry>(LeaderboardsResources.Entries)); context.DailyLeaderboards.AddRange(Util.ReadJsonArray <DailyLeaderboard>(LeaderboardsResources.DailyLeaderboards)); context.DailyEntries.AddRange(Util.ReadJsonArray <DailyEntry>(LeaderboardsResources.DailyEntries)); context.Players.AddRange(Util.ReadJsonArray <Player>(LeaderboardsResources.Players)); context.Replays.AddRange(Util.ReadJsonArray <Replay>(LeaderboardsResources.Replays)); context.SaveChanges(); }
public IntegrationTestsBase() { settings = Settings.Default; // Should only loop once foreach (SettingsProvider provider in settings.Providers) { var ssp = (ServiceSettingsProvider)provider; ssp.GetSettingsReader = () => File.OpenText(settingsFileName); ssp.GetSettingsWriter = () => File.CreateText(settingsFileName); } var options = new DbContextOptionsBuilder <NecroDancerContext>() .UseSqlServer(databaseConnectionString) .Options; context = new NecroDancerContext(options); context.Database.EnsureDeleted(); context.Database.Migrate(); }
public DailyLeaderboardsWorkerTests() { var context = new NecroDancerContext(necroDancerContextOptions); worker = new DailyLeaderboardsWorker(appId, context, mockSteamClientApiClient.Object, mockStoreClient.Object, telemetryClient); }
private static void InitializeNecroDancerContext(NecroDancerContext context) { context.Database.Migrate(); context.EnsureSeedData(); }