public void Can_ParseSongDifficultModes(string xPathToSong, string xPathToDifficultMode, int difficultyLevel, DifficultyCategory difficultyCategory) { var doc = new HtmlDocument(); doc.Load("ez2onDBSample.html"); var songNode = doc.DocumentNode.SelectSingleNode(xPathToSong); var mockLogger = new Mock <ILogger <Ez2OnParser> >(); Ez2OnParser parser = new Ez2OnParser(mockLogger.Object); DifficultyMode parsedMode = parser.ParseDifficultyModeFromSongNode(songNode, xPathToDifficultMode, difficultyCategory); Assert.Equal(difficultyLevel, parsedMode.Level); Assert.Equal(difficultyCategory, parsedMode.Category); }
public void Can_ParseDynamicHTML_As_GameTracks(string keyMode, string numOfSongs, int numOfGameTracks) { string url = $"https://ez2on.co.kr/{keyMode}/?mode=database&pagelist={numOfSongs}"; var web1 = new HtmlWeb(); var loadUrlTask = web1.LoadFromWebAsync(url); var htmlDoc = loadUrlTask.Result; var xpath = "/html/body/div[@id='contentmain']/table[@id='EZ2ONContent']/tbody[@id='EZ2DJ_TRACKS']/tr"; var songNodes = htmlDoc.DocumentNode.SelectNodes(xpath); var mockLogger = new Mock <ILogger <Ez2OnParser> >(); Ez2OnParser parser = new Ez2OnParser(mockLogger.Object); List <Ez2OnGameTrack> ez2OnGameTracks = parser.AggregateGameTracksForAllSongs(songNodes); Assert.Equal(numOfGameTracks, ez2OnGameTracks.Count); }
public void Can_ParseSongNode_As_ValidGame(string xPathToEz2DjSongNode, string gameTitle) { var doc = new HtmlDocument(); doc.Load("ez2onDBSample.html"); var songNode = doc.DocumentNode.SelectSingleNode(xPathToEz2DjSongNode); var mockLogger = new Mock <ILogger <Ez2OnParser> >(); Ez2OnParser parser = new Ez2OnParser(mockLogger.Object); var game = parser.InferGameFromSongAlbum(songNode); Assert.Equal(gameTitle, game.Title); Assert.False(game.IsDlc); GameValidator gameValidator = new GameValidator(); var validationResult = gameValidator.Validate(game); Assert.True(validationResult.IsValid); }
public void Can_ParseSongNode_As_ValidSongTitle(string xPath, string songTitle, string composer, string bpm, string album, string genre) { var doc = new HtmlDocument(); doc.Load("ez2onDBSample.html"); var songNode = doc.DocumentNode.SelectSingleNode(xPath); var mockLogger = new Mock <ILogger <Ez2OnParser> >(); Ez2OnParser parser = new Ez2OnParser(mockLogger.Object); Song actualSong = parser.ParseSongFromHtmlNode(songNode); Assert.Equal(songTitle, actualSong.Title); Assert.Equal(composer, actualSong.Composer); Assert.Equal(bpm, actualSong.Bpm); Assert.Equal(album, actualSong.Album); Assert.Equal(genre, actualSong.Genre); SongValidator songValidator = new SongValidator(); var validationResults = songValidator.Validate(actualSong); Assert.True(validationResults.IsValid); }