public void WebScrapperToDb2016_2017() { //TODONEW: Probar a instalar y ejecutar el proyecto desde cero. //TODONEW: Eliminar o traducir los comentarios -> Los comentarios que quedan son relevantes. Hay que traducirlos. //NOTA: Debe usarse la BD de test (ver app.config) QuinixDbContext context = new QuinixDbContext(); var matches = context.Matches; foreach (var match in matches) { context.Remove(match); } context.SaveChanges(); Assert.Equal(0, context.Matches.Count()); FootballMatchesWebScrapper mrp = new FootballMatchesWebScrapper(2016, 2016, NodeOperation.SaveToDb, null); mrp.ExecuteAll(); //Deben haberse creado 841 registros. Assert.Equal(841, context.Matches.Count()); //Si vuelvo a ejecutar, debe seguir habiendo el mismo número de registros. mrp.ExecuteAll(); Assert.Equal(841, context.Matches.Count()); }
public static void SaveToDb(int year, string divisionName, int matchDay, HtmlNode resultNode, string filePath) { List <string> data = GetTeamsAndResult(resultNode); string homeTeamName = data[0]; string awayTeamName = data[1]; string resultString = data[2]; //Partido todavía sin jugar (posiblemente aplazado). No hacemos nada. Regex validResult = new Regex(@"\d+-\d+"); if (!validResult.Match(resultString).Success) { return; } int homeTeamGoals = int.Parse(resultString.Split('-')[0]); int awayTeamGoals = int.Parse(resultString.Split('-')[1]); QuinixDbContext context = new QuinixDbContext(); Division division = context.Divisions.Single(d => d.Name.Equals(divisionName)); Season season; if (context.Seasons.Count(s => s.StartYear == year) == 0) { season = new Season { StartYear = year, EndYear = year + 1 }; context.Seasons.Add(season); } else { season = context.Seasons.Single(s => s.StartYear == year); } Team homeTeam; if (context.Teams.Count(t => t.Name.Equals(homeTeamName)) == 0) { homeTeam = new Team { Name = homeTeamName }; context.Teams.Add(homeTeam); } else { homeTeam = context.Teams.Single(t => t.Name.Equals(homeTeamName)); } Team awayTeam; if (context.Teams.Count(t => t.Name.Equals(awayTeamName)) == 0) { awayTeam = new Team { Name = awayTeamName }; context.Teams.Add(awayTeam); } else { awayTeam = context.Teams.Single(t => t.Name.Equals(awayTeamName)); } if (!MatchExists(context, season, division, homeTeam, awayTeam)) { Model.Match match = new Model.Match { Season = season, Division = division, MatchDay = matchDay, HomeTeam = homeTeam, AwayTeam = awayTeam, HomeTeamGoals = homeTeamGoals, AwayTeamGoals = awayTeamGoals }; context.Matches.Add(match); } context.SaveChanges(); }