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 UpdateDailyLeaderboardAsyncMethod()
 {
     leaderboard = new DailyLeaderboard();
     leaderboardEntriesCallback = new LeaderboardEntriesCallback();
     mockSteamClientApiClient
     .Setup(c => c.GetLeaderboardEntriesAsync(appId, leaderboard.LeaderboardId, cancellationToken))
     .ReturnsAsync(leaderboardEntriesCallback);
 }
Exemplo n.º 3
0
            public void GetsEntries()
            {
                // Arrange
                var dailyLeaderboard = new DailyLeaderboard();

                // Act -> Assert
                Assert.IsAssignableFrom <List <DailyEntry> >(dailyLeaderboard.Entries);
            }
Exemplo n.º 4
0
            public void GetsAndSetsIsProduction()
            {
                // Arrange -> Act
                var dailyLeaderboard = new DailyLeaderboard {
                    IsProduction = true
                };

                // Act -> Assert
                Assert.True(dailyLeaderboard.IsProduction);
            }
Exemplo n.º 5
0
            public void GetsAndSetsLastUpdate()
            {
                // Arrange -> Act
                var dailyLeaderboard = new DailyLeaderboard {
                    LastUpdate = new DateTime(2017, 8, 28, 16, 27, 58)
                };

                // Act -> Assert
                Assert.Equal(new DateTime(2017, 8, 28, 16, 27, 58), dailyLeaderboard.LastUpdate);
            }
Exemplo n.º 6
0
            public void GetsAndSetsDate()
            {
                // Arrange -> Act
                var dailyLeaderboard = new DailyLeaderboard {
                    Date = new DateTime(2017, 8, 28)
                };

                // Act -> Assert
                Assert.Equal(new DateTime(2017, 8, 28), dailyLeaderboard.Date);
            }
Exemplo n.º 7
0
            public void GetsAndSetsProductId()
            {
                // Arrange -> Act
                var dailyLeaderboard = new DailyLeaderboard {
                    ProductId = 1
                };

                // Act -> Assert
                Assert.Equal(1, dailyLeaderboard.ProductId);
            }
Exemplo n.º 8
0
            public void GetsAndSetsLeaderboardId()
            {
                // Arrange -> Act
                var dailyLeaderboard = new DailyLeaderboard {
                    LeaderboardId = 43895
                };

                // Act -> Assert
                Assert.Equal(43895, dailyLeaderboard.LeaderboardId);
            }
Exemplo n.º 9
0
            public void GetsAndSetsLeaderboard()
            {
                // Arrange -> Act
                var leaderboard = new DailyLeaderboard();
                var dailyEntry  = new DailyEntry {
                    Leaderboard = leaderboard
                };

                // Act -> Assert
                Assert.Equal(leaderboard, dailyEntry.Leaderboard);
            }
Exemplo n.º 10
0
            public void GetsAndSetsDisplayName()
            {
                // Arrange
                var displayName      = "MyDisplayName";
                var dailyLeaderboard = new DailyLeaderboard();

                // Act
                dailyLeaderboard.DisplayName = displayName;
                var displayName2 = dailyLeaderboard.DisplayName;

                // Assert
                Assert.Equal(displayName, displayName2);
            }
Exemplo n.º 11
0
            public void GetsAndSetsName()
            {
                // Arrange
                var name             = "myName";
                var dailyLeaderboard = new DailyLeaderboard();

                // Act
                dailyLeaderboard.Name = name;
                var name2 = dailyLeaderboard.Name;

                // Assert
                Assert.Equal(name, name2);
            }
            public async Task StoresDailyLeaderboards()
            {
                // Arrange
                var leaderboard  = new DailyLeaderboard();
                var leaderboards = new List <DailyLeaderboard> {
                    leaderboard
                };

                // Act
                await worker.StoreDailyLeaderboardsAsync(leaderboards, cancellationToken);

                // Assert
                mockStoreClient.Verify(s => s.BulkUpsertAsync(It.IsAny <IEnumerable <DailyLeaderboard> >(), null, cancellationToken), Times.Once);
            }
Exemplo n.º 13
0
            public void GetsAndSetsProduct()
            {
                // Arrange
                var product = new Product(1, "myProduct", "MyProduct");

                // Act
                var dailyLeaderboard = new DailyLeaderboard {
                    Product = product
                };
                var product2 = dailyLeaderboard.Product;

                // Assert
                Assert.Same(product, product2);
            }
            public async Task StoresReplays()
            {
                // Arrange
                var leaderboard = new DailyLeaderboard();

                leaderboard.Entries.Add(new DailyEntry {
                    ReplayId = 3849753489753975
                });
                var leaderboards = new List <DailyLeaderboard> {
                    leaderboard
                };

                // Act
                await worker.StoreDailyLeaderboardsAsync(leaderboards, cancellationToken);

                // Assert
                mockStoreClient.Verify(s => s.BulkUpsertAsync(It.IsAny <IEnumerable <Replay> >(), It.IsAny <BulkUpsertOptions>(), cancellationToken), Times.Once);
            }
            public async Task UpdatesLeaderboardsWithFreshEntries()
            {
                // Arrange
                var leaderboard1 = new DailyLeaderboard {
                    LeaderboardId = 1
                };
                var leaderboard2 = new DailyLeaderboard {
                    LeaderboardId = 2
                };
                var leaderboards = new[] { leaderboard1, leaderboard2 };
                var leaderboardEntriesCallback1 = new LeaderboardEntriesCallback();

                leaderboardEntriesCallback1.Entries.AddRange(new[]
                {
                    new LeaderboardEntry(),
                    new LeaderboardEntry(),
                    new LeaderboardEntry(),
                });
                mockSteamClientApiClient
                .Setup(c => c.GetLeaderboardEntriesAsync(appId, leaderboard1.LeaderboardId, cancellationToken))
                .ReturnsAsync(leaderboardEntriesCallback1);
                var leaderboardEntriesCallback2 = new LeaderboardEntriesCallback();

                leaderboardEntriesCallback2.Entries.AddRange(new[]
                {
                    new LeaderboardEntry(),
                    new LeaderboardEntry(),
                });
                mockSteamClientApiClient
                .Setup(c => c.GetLeaderboardEntriesAsync(appId, leaderboard2.LeaderboardId, cancellationToken))
                .ReturnsAsync(leaderboardEntriesCallback2);

                // Act
                await worker.UpdateDailyLeaderboardsAsync(leaderboards, cancellationToken);

                // Assert
                Assert.Equal(3, leaderboard1.Entries.Count);
                Assert.Equal(2, leaderboard2.Entries.Count);
            }
Exemplo n.º 16
0
        internal async Task UpdateDailyLeaderboardAsync(
            DailyLeaderboard leaderboard,
            CancellationToken cancellationToken)
        {
            var response = await steamClientApiClient
                           .GetLeaderboardEntriesAsync(appId, leaderboard.LeaderboardId, cancellationToken)
                           .ConfigureAwait(false);

            leaderboard.LastUpdate = DateTime.UtcNow;

            foreach (var entry in response.Entries)
            {
                leaderboard.Entries.Add(new DailyEntry
                {
                    LeaderboardId = leaderboard.LeaderboardId,
                    Rank          = entry.GlobalRank,
                    SteamId       = entry.SteamID.ToInt64(),
                    ReplayId      = entry.UGCId.ToReplayId(),
                    Score         = entry.Score,
                    Zone          = entry.Details[0],
                    Level         = entry.Details[1],
                });
            }
        }
        private static async Task UpdateDailyLeaderboardAsync(ISteamClientApiClient steamClient, DailyLeaderboard leaderboard)
        {
            try
            {
                var response = await steamClient.FindLeaderboardAsync(247080, leaderboard.Name).ConfigureAwait(false);

                leaderboard.LeaderboardId = response.ID;
            }
            catch (SteamClientApiException)
            {
                Log.Warn($"Leaderboard named '{leaderboard.Name}' could not be found.");
            }
        }