示例#1
0
            public async Task SmokeTest()
            {
                var fileSystem = new MockFileSystem();
                fileSystem.Directory.CreateDirectory("C://Test");

                using (var library = new LibraryBuilder().WithFileSystem(fileSystem).Build())
                {
                    Guid token = library.LocalAccessControl.RegisterLocalAccessToken();

                    library.ChangeSongSourcePath("C://Test", token);

                    var isUpdating = library.IsUpdating.CreateCollection();

                    var last = library.IsUpdating.Where(x => !x).ElementAt(1).PublishLast();
                    last.Connect();

                    library.Initialize();

                    await last.Timeout(TimeSpan.FromSeconds(5));

                    Assert.Equal(new[] { false, true, false }, isUpdating);
                }
            }
示例#2
0
            public async Task TriggersUpdate()
            {
                var fileSystem = new MockFileSystem();
                fileSystem.Directory.CreateDirectory("C://Test");

                using (var library = new LibraryBuilder().WithFileSystem(fileSystem).Build())
                {
                    library.Initialize();

                    var updated = library.IsUpdating.FirstAsync(x => x).PublishLast();
                    updated.Connect();

                    Guid token = library.LocalAccessControl.RegisterLocalAccessToken();

                    library.ChangeSongSourcePath("C://Test", token);

                    await updated.Timeout(TimeSpan.FromSeconds(5));
                }
            }
示例#3
0
            public void ThrowsInvalidOperationExceptionIfVotingIsDisabled()
            {
                var settings = new CoreSettings
                {
                    EnableVotingSystem = false
                };

                using (var library = new LibraryBuilder().WithPlaylist().WithSettings(settings).Build())
                {
                    library.Initialize();
                    library.AddSongToPlaylist(Helpers.SetupSongMock());

                    Guid accessToken = library.RemoteAccessControl.RegisterRemoteAccessToken(Guid.NewGuid());

                    Assert.Throws<InvalidOperationException>(() => library.VoteForPlaylistEntry(0, accessToken));
                }
            }
示例#4
0
            public void IgnoresAccessPermission()
            {
                var settings = new CoreSettings
                {
                    EnableVotingSystem = true,
                    LockRemoteControl = true,
                    RemoteControlPassword = "******",
                    MaxVoteCount = 2,
                    EnablePlaylistTimeout = false
                };

                using (var library = new LibraryBuilder().WithPlaylist().WithSettings(settings).Build())
                {
                    library.Initialize();
                    library.AddSongToPlaylist(Helpers.SetupSongMock());
                    library.AddSongToPlaylist(Helpers.SetupSongMock());

                    Guid accessToken = library.RemoteAccessControl.RegisterRemoteAccessToken(Guid.NewGuid());

                    // Guests can vote
                    library.VoteForPlaylistEntry(0, accessToken);

                    library.RemoteAccessControl.UpgradeRemoteAccess(accessToken, "Password");

                    // Admins can vote
                    library.VoteForPlaylistEntry(1, accessToken);
                }
            }
示例#5
0
            public void RetriesLibraryLoadThreeTimesBeforeGivingUp()
            {
                var reader = Substitute.For<ILibraryReader>();
                reader.LibraryExists.Returns(true);
                reader.ReadSongs().Returns(_ => { throw new LibraryReadException("Yadda", null); });

                using (Library library = new LibraryBuilder().WithReader(reader).Build())
                {
                    library.Initialize();
                }

                reader.Received(3).ReadSongs();
            }
示例#6
0
            public void DisabledAutomaticUpdatesDoesntTriggerUpdate()
            {
                var settings = new CoreSettings
                {
                    EnableAutomaticLibraryUpdates = false
                };

                var libraryReader = Substitute.For<ILibraryReader>();
                libraryReader.LibraryExists.Returns(true);
                libraryReader.ReadSongSourcePath().Returns("C://");
                libraryReader.ReadPlaylists().Returns(new List<Playlist>());
                libraryReader.ReadSongs().Returns(new List<LocalSong>());

                var songFinder = Substitute.For<ILocalSongFinder>();
                songFinder.GetSongsAsync().Returns(Observable.Empty<Tuple<LocalSong, byte[]>>());

                var fileSystem = new MockFileSystem();
                fileSystem.Directory.CreateDirectory("C://");

                using (Library library = new LibraryBuilder().WithSettings(settings).WithReader(libraryReader).WithFileSystem(fileSystem).WithSongFinder(songFinder).Build())
                {
                    (new TestScheduler()).With(scheduler =>
                    {
                        library.Initialize();

                        scheduler.AdvanceByMs(settings.SongSourceUpdateInterval.TotalMilliseconds + 1);
                    });
                }

                songFinder.DidNotReceive().GetSongsAsync();
            }