Пример #1
0
        public async Task GetResponse_Valid()
        {
            using (var context = new ApplicationDbContext(EntityFrameworkHelpers.SqlDb()))
            {
                await context.Database.EnsureDeletedAsync();

                await context.Database.EnsureCreatedAsync();

                await context.Database.MigrateAsync();

                var record = new SongPlaybackTracker()
                {
                    Id                = "foo",
                    SpotifySongUri    = "test-spotify-song-uri",
                    State             = PlaybackState.Playing,
                    Duration          = TimeSpan.FromSeconds(30),
                    StartedUtc        = DateTime.UtcNow,
                    PlaybackSession   = null,
                    PlaybackSessionId = null
                };

                await context.SongPlaybackTrackers.AddAsync(record);

                await context.SaveChangesAsync();

                var service = new SongPlaybackRepository(new NullLogger <SongPlaybackRepository>(), context);

                var result = await service.GetById("foo");

                Assert.NotNull(result);
                Assert.Equal(result, record);

                await context.Database.EnsureDeletedAsync();
            }
        }
Пример #2
0
        public async Task GetResponse_Null()
        {
            using (var context = new ApplicationDbContext(EntityFrameworkHelpers.InMemoryOptions()))
            {
                var service = new SongPlaybackRepository(new NullLogger <SongPlaybackRepository>(), context);

                var result = await service.GetById("foo");

                Assert.Null(result);
            }
        }
Пример #3
0
        public async Task GetResponse_Null()
        {
            using (var context = await EntityFrameworkHelpers.SqlContextAsync())
            {
                var songRepo    = new SongPlaybackRepository(new NullLogger <SongPlaybackRepository>(), context);
                var sessionRepo = new PlaybackSessionRepository(new NullLogger <PlaybackSessionRepository>(), context, songRepo);

                var result = await sessionRepo.GetById("foo");

                Assert.Null(result);
            }
        }
 public PlaybackSessionService(
     ILogger <PlaybackSessionService> logger,
     PlaybackSessionRepository sessionRepo,
     SongPlaybackRepository songRepo,
     IScheduler jobScheduler,
     SpotifyPlaybackService playbackService,
     UserService userService)
 {
     _logger          = logger;
     _sessionRepo     = sessionRepo;
     _songRepo        = songRepo;
     _jobScheduler    = jobScheduler;
     _playbackService = playbackService;
     _userService     = userService;
 }
Пример #5
0
 public SongFinishedJob(
     ILogger <SongFinishedJob> logger,
     PlaybackSessionRepository sessionRepo,
     SongPlaybackRepository songRepo,
     SpotifyHttpClientFactory spotifyApiFactory,
     UserTokenService tokenService,
     SpotifyPlaybackService playbackService,
     IScheduler jobScheduler,
     IHubContext <DiscordBotHub> botHub)
 {
     _logger            = logger;
     _sessionRepo       = sessionRepo;
     _songRepo          = songRepo;
     _spotifyApiFactory = spotifyApiFactory;
     _playbackService   = playbackService;
     _jobScheduler      = jobScheduler;
     _botHub            = botHub;
 }
Пример #6
0
        public async Task Upsert_New()
        {
            using (var context = await EntityFrameworkHelpers.SqlContextAsync())
            {
                var original = new PlaybackSession()
                {
                    Id = "foo",
                    SpotifyPlaylistId     = "spotify-playlist",
                    DiscordVoiceChannelId = "discord-channel-id"
                };

                var songRepo    = new SongPlaybackRepository(new NullLogger <SongPlaybackRepository>(), context);
                var sessionRepo = new PlaybackSessionRepository(new NullLogger <PlaybackSessionRepository>(), context, songRepo);

                await sessionRepo.UpsertSession(original);

                var result = await sessionRepo.GetById("foo");

                Assert.NotNull(result);
                Assert.Equal(result, original);
            }
        }
Пример #7
0
        public async Task Upsert_New_WithCurrentPlayback()
        {
            using (var context = await EntityFrameworkHelpers.SqlContextAsync())
            {
                var originalSongTracker = new SongPlaybackTracker()
                {
                    Id             = "foo-song",
                    SpotifySongUri = "test-spotify-song-uri",
                    State          = PlaybackState.Playing,
                    Duration       = TimeSpan.FromSeconds(30),
                    StartedUtc     = DateTime.UtcNow
                };

                var original = new PlaybackSession()
                {
                    Id = "foo",
                    SpotifyPlaylistId     = "spotify-playlist",
                    DiscordVoiceChannelId = "discord-channel-id",
                    CurrentSongPlayback   = originalSongTracker
                };

                var songRepo    = new SongPlaybackRepository(new NullLogger <SongPlaybackRepository>(), context);
                var sessionRepo = new PlaybackSessionRepository(new NullLogger <PlaybackSessionRepository>(), context, songRepo);

                await sessionRepo.UpsertSession(original);

                var result = await sessionRepo.GetById("foo");

                var songResult = await songRepo.GetById("foo-song");

                Assert.NotNull(result);
                Assert.Equal(result, original);
                Assert.NotNull(result.CurrentSongPlayback);
                Assert.Equal(result.CurrentSongPlayback, originalSongTracker);
                Assert.Equal(result, songResult.PlaybackSession);
            }
        }