public void GetMostPopular_ShouldReturnTrackWithMostAttempts() { var options = GetDbOptions("GetMostPopular_Database"); var dummyAttempt1 = new Attempt(); var dummyAttempt2 = new Attempt(); var dummyAttempt3 = new Attempt(); var dummyTrack1 = new Track(); var dummyTrack2 = new Track(); dummyTrack1.Attempts.Add(dummyAttempt1); dummyTrack1.Attempts.Add(dummyAttempt2); dummyTrack2.Attempts.Add(dummyAttempt3); using (var context = new RiderDBContext(options)) { context.Tracks.Add(dummyTrack1); context.Tracks.Add(dummyTrack2); context.SaveChanges(); } Track actual; using (var context = new RiderDBContext(options)) { var tracksService = new TracksService(context); actual = tracksService.GetMostPopular(); } Assert.Equal(2, actual.Attempts.Count()); Assert.Contains(actual.Attempts, x => x.Id == dummyAttempt1.Id); Assert.Contains(actual.Attempts, x => x.Id == dummyAttempt2.Id); }
public void GetTrackById_ShouldReturnCorrectTrack() { var options = GetDbOptions("_Database"); var dummyTrack1 = new Track(); var dummyTrack2 = new Track(); var dummyTrack3 = new Track(); using (var context = new RiderDBContext(options)) { context.Tracks.Add(dummyTrack1); context.Tracks.Add(dummyTrack2); context.Tracks.Add(dummyTrack3); context.SaveChanges(); } Track actual; using (var context = new RiderDBContext(options)) { var tracksService = new TracksService(context); actual = tracksService.GetTrackById(dummyTrack2.Id); } Assert.Equal(dummyTrack2.Id, actual.Id); }
public void GetAllTracks_ShouldReturnAllTracks() { var options = GetDbOptions("GetAllTracks_Database"); var dummyTrack1 = new Track(); var dummyTrack2 = new Track(); var dummyTrack3 = new Track(); using (var context = new RiderDBContext(options)) { context.Tracks.Add(dummyTrack1); context.Tracks.Add(dummyTrack2); context.Tracks.Add(dummyTrack3); context.SaveChanges(); } List <Track> actual; using (var context = new RiderDBContext(options)) { var tracksService = new TracksService(context); actual = tracksService.GetAllTracks().ToList(); } Assert.Equal(3, actual.Count); Assert.Contains(actual, x => x.Id == dummyTrack1.Id); Assert.Contains(actual, x => x.Id == dummyTrack3.Id); Assert.Contains(actual, x => x.Id == dummyTrack2.Id); }
public void EditTrack_ShouldSaveEditedTrack() { var options = GetDbOptions("EditTrack_Database"); var dummyTrack = new Track(); using (var context = new RiderDBContext(options)) { context.Tracks.Add(dummyTrack); context.SaveChanges(); } dummyTrack.Name = "Edited"; dummyTrack.Description = "Edited"; dummyTrack.Distance = 10; dummyTrack.Elevation = 100; Track actual; using (var context = new RiderDBContext(options)) { var tracksService = new TracksService(context); actual = tracksService.EditTrack(dummyTrack); } Assert.Equal("Edited", actual.Name); Assert.Equal("Edited", actual.Description); Assert.Equal(10, dummyTrack.Distance); Assert.Equal(100, dummyTrack.Elevation); }
public void Returns_AllCategoriesOfATrack() { // Arrange var tracksRepositoryFake = new Mock <IEfRepository <Track> >(); var mapperFake = new Mock <IMappingProvider>(); var service = new TracksService(tracksRepositoryFake.Object, mapperFake.Object); var id = Guid.NewGuid(); var trackFake = new Mock <Track>(); var categories = new List <Category> { new Category { TrackId = id }, new Category { TrackId = id } }; trackFake.Setup(x => x.Categories).Returns(categories); tracksRepositoryFake.Setup(x => x.GetById(id)).Returns(trackFake.Object).Verifiable(); // Act var actualReturnedCategories = service.GetCategoriesByTrackId(id); // Assert Assert.AreEqual(categories.Count, actualReturnedCategories.Count()); }
public void DeleteTrack_SuccessfulTrackAndEventsDeletion() { // arrange var tracksService = new TracksService(_trackRepository, _eventRepository); // act var result = tracksService.DeleteTrack(_testUserId, _testTrackId); // assert Assert.AreEqual(_testTrackId, result); }
public void Call_TracksRepository_All() { // Arrange var tracksRepositoryFake = new Mock <IEfRepository <Track> >(); var service = new TracksService(tracksRepositoryFake.Object); var queryableTracks = this.GetIQueryable <Track>(); tracksRepositoryFake.Setup(x => x.All).Returns(queryableTracks).Verifiable(); // Act service.GetAll(); // Assert tracksRepositoryFake.Verify(x => x.All, Times.AtLeastOnce); }
public void CreateTrack_SuccessfulTrackCreation() { // arrange var tracksService = new TracksService(_trackRepository, _eventRepository); // act var result = tracksService.CreateTrack(_testUserId, _testTrack.Name, _testTrack.CreatedAt, _testTrack.AllowedCustomizations); // assert Assert.AreEqual(_testTrack.Name, result.Name); Assert.AreEqual(_testUserId, result.CreatorId); Assert.AreEqual(_testTrack.AllowedCustomizations, result.AllowedCustomizations); Assert.AreEqual(_testTrack.CreatedAt, result.CreatedAt); }
public void EditTrack_SuccessfulTrackEditing() { // arrange var tracksService = new TracksService(_trackRepository, _eventRepository); var trackDto = new TrackToEditDto(_testTrackUpdated.Id, _testTrackUpdated.Name, _testTrackUpdated.AllowedCustomizations); // act var result = tracksService.EditTrack(_testUserId, trackDto); // assert Assert.AreEqual(result.Id, _testTrackUpdated.Id); Assert.AreEqual(result.Name, _testTrackUpdated.Name); Assert.AreEqual(result.AllowedCustomizations, _testTrackUpdated.AllowedCustomizations); Assert.AreEqual(result.CreatedAt, _testTrackUpdated.CreatedAt); Assert.AreEqual(result.CreatorId, _testTrackUpdated.CreatorId); }
public void GetTracks_SuccessfulTracksReceiving() { // arrange var tracksService = new TracksService(_trackRepository, _eventRepository); // act var result = tracksService.GetTracks(_testUserId); // assert var trackDtos = result.ToList(); Assert.AreEqual(1, trackDtos.Count()); Assert.AreEqual(_testTrack.Name, trackDtos.Single().Name); Assert.AreEqual(_testUserId, trackDtos.Single().CreatorId); Assert.AreEqual(_testTrack.AllowedCustomizations, trackDtos.Single().AllowedCustomizations); Assert.AreEqual(_testTrack.CreatedAt, trackDtos.Single().CreatedAt); }
public void Call_TracksRepositoryGetById_WithCorrectId() { // Arrange var tracksRepositoryFake = new Mock <IEfRepository <Track> >(); var service = new TracksService(tracksRepositoryFake.Object); var id = Guid.NewGuid(); var trackFake = new Mock <Track>(); var categoriesFake = new Mock <ICollection <Category> >(); trackFake.Setup(x => x.Categories).Returns(categoriesFake.Object); tracksRepositoryFake.Setup(x => x.GetById(id)).Returns(trackFake.Object).Verifiable(); // Act service.GetCategoriesByTrackId(id); // Assert tracksRepositoryFake.Verify(x => x.GetById(id), Times.AtLeastOnce); }
public SpotifyPlayerBotAccessors(ConversationState conversationState, OAuthService oAuthService, PlayerService playerService, CurrentTrackService currentTrackService, UIService uiService, SearchService searchService, ArtistsService artistsService, TracksService tracksService) { ConversationState = conversationState ?? throw new ArgumentNullException(nameof(conversationState)); OAuthService = oAuthService ?? throw new ArgumentNullException(nameof(oAuthService)); PlayerService = playerService ?? throw new ArgumentNullException(nameof(playerService)); CurrentTrackService = currentTrackService ?? throw new ArgumentNullException(nameof(currentTrackService)); UIService = uiService ?? throw new ArgumentNullException(nameof(uiService)); SearchService = searchService ?? throw new ArgumentNullException(nameof(searchService)); ArtistsService = artistsService ?? throw new ArgumentNullException(nameof(artistsService)); TracksService = tracksService ?? throw new ArgumentNullException(nameof(tracksService)); }
public void DeleteTrack_AccessDeny() { // arrange var tracksService = new TracksService(_trackRepository, _eventRepository); DomainException exception = null; // act try { var result = tracksService.DeleteTrack(_testInvalidUserId, _testTrackId); } catch (DomainException e) { exception = e; } // assert Assert.AreEqual(DomainExceptionType.TrackAccessDenied, exception.Type); }
public void EditTrack_AccessDeny() { // arrange var tracksService = new TracksService(_trackRepository, _eventRepository); var trackDto = new TrackToEditDto(_testTrack.Id, _testTrack.Name, _testTrack.AllowedCustomizations); DomainException exception = null; // act try { var result = tracksService.EditTrack(_testInvalidUserId, trackDto); } catch (DomainException e) { exception = e; } // assert Assert.AreEqual(DomainExceptionType.TrackAccessDenied, exception.Type); }
public void AddTrack_ShouldAddTrack() { var options = GetDbOptions("AddTrack_Database"); var dummyTrack = new Track(); using (var context = new RiderDBContext(options)) { var tracksService = new TracksService(context); tracksService.AddTrack(dummyTrack); } List <Track> actual; using (var context = new RiderDBContext(options)) { actual = context.Tracks.ToList(); } Assert.NotNull(actual); Assert.Contains(actual, x => x.Id == dummyTrack.Id); }
public void Call_ReturnsTheWholeCollection() { // Arrange var tracksRepositoryFake = new Mock <IEfRepository <Track> >(); var service = new TracksService(tracksRepositoryFake.Object); var tracksData = new List <Track> { new Mock <Track>().Object, new Mock <Track>().Object, new Mock <Track>().Object, }; var queryableTracks = this.GetIQueryable <Track>(tracksData); tracksRepositoryFake.Setup(x => x.All).Returns(queryableTracks).Verifiable(); // Act service.GetAll(); // Assert tracksRepositoryFake.Verify(x => x.All, Times.AtLeastOnce); }
public void ArchiveTrackById_ShouldSetIsArchivedTrue() { var options = GetDbOptions("ArchiveTrackById_Database"); var dummyTrack = new Track(); using (var context = new RiderDBContext(options)) { context.Tracks.Add(dummyTrack); context.SaveChanges(); } Track actual; using (var context = new RiderDBContext(options)) { var tracksService = new TracksService(context); actual = tracksService.ArchiveTrackById(dummyTrack.Id); } Assert.NotNull(actual); Assert.True(actual.IsArchived); }
public void ConfigureServices(IServiceCollection services) { services.AddMvc(); services.Configure <RazorViewEngineOptions>(o => { o.ViewLocationFormats.Clear(); o.ViewLocationFormats.Add("/Callback/Views/{1}/{0}" + RazorViewEngine.ViewExtension); }); var authorizationMapper = new AuthorizationMapper(); services.AddSingleton(typeof(IAuthorizationMapper), authorizationMapper); services.AddBot <SpotifyPlayerBot>(options => { var secretKey = Configuration.GetSection("botFileSecret")?.Value; var botConfig = BotConfiguration.Load(@".\Bots\SpotifyPlayerBot.bot", secretKey); services.AddSingleton(sp => botConfig); var service = botConfig.Services.Where(s => s.Type == "endpoint" && s.Name == "development").FirstOrDefault(); if (!(service is EndpointService endpointService)) { throw new InvalidOperationException($"The .bot file does not contain a development endpoint."); } options.CredentialProvider = new SimpleCredentialProvider(endpointService.AppId, endpointService.AppPassword); options.OnTurnError = async(context, exception) => { await context.SendActivityAsync("Sorry, it looks like something went wrong."); }; }); var dataStore = new MemoryStorage(); var conversationState = new ConversationState(dataStore); var oAuthService = new OAuthService(authorizationMapper, Configuration.GetSection("spotifyAppId")?.Value, Configuration.GetSection("spotifyAppSecret")?.Value); var playerService = new PlayerService(); var currentTrackService = new CurrentTrackService(); var uiService = new UIService(oAuthService.GetAuthorizeUrl()); var searchService = new SearchService(); var artistsService = new ArtistsService(); var tracksService = new TracksService(); services.AddSingleton(serviceProvider => { var options = serviceProvider.GetRequiredService <IOptions <BotFrameworkOptions> >().Value; var accessors = new SpotifyPlayerBotAccessors(conversationState, oAuthService, playerService, currentTrackService, uiService, searchService, artistsService, tracksService) { ConversationDialogState = conversationState.CreateProperty <DialogState>("DialogState"), OAuthServiceState = conversationState.CreateProperty <OAuthService>("OAuthServiceState"), PlayerServiceState = conversationState.CreateProperty <PlayerService>("PlayerServiceState"), CurrentTrackServiceState = conversationState.CreateProperty <CurrentTrackService>("CurrentServiceState"), UIServiceState = conversationState.CreateProperty <UIService>("UIServiceState"), SearchServiceState = conversationState.CreateProperty <SearchService>("SearchServiceState"), ArtistsServiceState = conversationState.CreateProperty <ArtistsService>("ArtistsServiceState"), TracksServiceState = conversationState.CreateProperty <TracksService>("TracksServiceState") }; return(accessors); }); }
private static void TrackRoutineTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { TracksService.RemoveOldWorkers(); }