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); } }
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)); } }
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)); } }
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); } }
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(); }
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(); }