scraper/news/news_test.go

131 lines
3.9 KiB
Go
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package news
import (
"strings"
"testing"
"../utils"
)
type expectedResult struct {
news *News
teaser string
paragraph string
author string
urlTags []string
haystack string
source *Source
sourceUrl string
}
func TestNews_Feed(t *testing.T) {
expList := [4]*expectedResult{
{
news: &News{
Source: &Source{Id: 1, Name: "Eurosport"},
Sport: &Sport{Id: 1, Name: "Football", UrlName: "football"},
Link: "https://www.eurosport.fr/football/bundesliga/2020-2021/dortmund-au-tapis-thuram-debloque-son-compteur_sto7905745/story.shtml",
},
teaser: "BUNDESLIGA Le Borussia Dortmund et ses jeunes stars ont chuté",
paragraph: "Etonnante Bundesliga. Dortmund battu, Leipzig tenu en échec samedi,",
author: "Eurosport",
urlTags: []string{"football", "bundesliga"},
},
{
news: &News{
Source: &Source{Id: 2, Name: "L'équipe"},
Sport: &Sport{Id: 1, Name: "Football", UrlName: "football"},
Link: "https://www.lequipe.fr/Football/Actualites/Mitchel-bakker-psg-je-vais-devoir-elever-mon-niveau-de-jeu/1176182",
},
teaser: "Mitchel Bakker, le latéral néerlandais du PSG",
paragraph:  Les absences de Juan Bernat et Layvin Kurzawa",
author: "H. De.",
urlTags: []string{"ligue-1", "paris-sg--fra-", "reims--fra-"},
},
{
news: &News{
Source: &Source{Id: 3, Name: "FFTT"},
Sport: &Sport{Id: 6, Name: "Tennis de Table", UrlName: "tennis-de-table"},
Link: "http://www.fftt.com/site/actualites/2020-09-22/laura-gasnier-page-qui-se-tourne-avec-bleues",
},
teaser: "Après 15 années en équipe de France, Laura Gasnier a décidé",
paragraph: "Elle évoque un choix personnel qui a demandé plusieurs mois de réflexion",
author: "",
urlTags: []string{"equipe-de-france", "gasnier-laura"},
},
{
news: &News{
Source: &Source{Id: 4, Name: "Foot Mercato"},
Sport: &Sport{Id: 1, Name: "Football", UrlName: "football"},
Link: "https://www.footmercato.net/a3190892483125730002-real-madrid-personne-ne-veut-de-luka-jovic",
},
teaser: "Alors que la date de fin du mercato approche considérablement,",
paragraph: "Tic-tac, tic-tac... Le chrono défile, et le Real Madrid",
author: "Max Franco Sanchez",
urlTags: []string{"football"},
},
}
for _, exp := range expList {
t.Logf("testing feed from %s", exp.news.Source.Name)
if err := exp.news.Feed(); err != nil {
t.Errorf("unexpected error : %s", err)
}
if !strings.HasPrefix(exp.news.Teaser, exp.teaser) {
t.Errorf("unexpected teaser : %s", exp.news.Teaser)
}
if !strings.HasPrefix(exp.news.Content[0], exp.paragraph) {
t.Errorf("unexpected content : %s", exp.news.Content[0])
}
if exp.news.Author != exp.author {
t.Errorf("unexpected author : %s", exp.news.Author)
}
for _, urlTag := range exp.urlTags {
if !utils.ArrayContains(exp.news.UrlTags, urlTag) {
t.Errorf("urltags does not contain %s", urlTag)
}
}
}
}
func TestSource_ListNews(t *testing.T) {
expList := []*expectedResult{
{
source: &Source{Id: 1, Name: "Eurosport"},
sourceUrl: "http://www.eurosport.fr/football/rss.xml",
},
{
source: &Source{Id: 1, Name: "L'équipe"},
sourceUrl: "https://www.lequipe.fr/rss/actu_rss_Football.xml",
},
{
source: &Source{Id: 1, Name: "FFTT"},
sourceUrl: "http://www.fftt.com/site/medias/flux/rss_competition.xml",
},
{
source: &Source{Id: 1, Name: "Foot Mercato"},
sourceUrl: "http://www.footmercato.net/flux-rss",
},
}
for _, exp := range expList {
t.Logf("testing newsList from %s", exp.source.Name)
newsList, err := exp.source.ListNews(&Sport{Id: 1}, exp.sourceUrl)
if err != nil {
t.Errorf("unexpected error : %s", err)
}
if len(newsList) == 0 {
t.Errorf("no news parsed from rss")
}
for _, n := range newsList {
if n.Title == "" {
t.Errorf("unexpected empty title")
}
if n.Image == "" {
t.Errorf("unexpected empty image")
}
}
}
}