131 lines
3.9 KiB
Go
131 lines
3.9 KiB
Go
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")
|
||
}
|
||
}
|
||
}
|
||
}
|