imdbs/imdb-scraper_test.go
2023-10-01 09:00:33 +02:00

232 lines
6.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

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 imdbs
import "testing"
func TestBuildScrapingURL(t *testing.T) {
data := map[string]string{
"tt2911666": "https://www.imdb.com/title/tt2911666/",
"tt10366206": "https://www.imdb.com/title/tt10366206/",
}
for d, expectedResult := range data {
result := buildScrapingURL(d)
if result != expectedResult {
t.Errorf("\ngot: %q\nwanted: %q\nfor: %q", result, expectedResult, d)
}
}
}
func TestConvertIMDbRuntimeIntoMinutes(t *testing.T) {
data := map[string]int64{
"PT41M": 41,
"PT2H": 120,
"PT2H1M": 121,
}
for d, expectedResult := range data {
result := convertIMDbRuntimeIntoMinutes(d)
if result != expectedResult {
t.Errorf("\ngot: %d\nwanted: %d\nfor: %q", result, expectedResult, d)
}
}
}
func TestConvertStringToIntOrZeroOnError(t *testing.T) {
data := map[string]int64{
"-13": -13,
"0": 0,
"13": 13,
"Son Goku": 0,
"1f346": 0,
}
for d, expectedResult := range data {
result := convertStringToIntOrZeroOnError(d)
if result != expectedResult {
t.Errorf("\ngot: %d\nwanted: %d\nfor: %q", result, expectedResult, d)
}
}
}
func TestGetIMDbIDFromQuery(t *testing.T) {
data := map[string]string{
"tt2861424": "tt2861424",
"https://www.imdb.com/title/tt2861424": "tt2861424",
"https://www.imdb.com/title/tt2861424/": "tt2861424",
"https://www.imdb.com/title/tt2861424/?ref_=vp_vi_tt": "tt2861424",
"https://m.imdb.com/title/tt2861424": "tt2861424",
"https://m.imdb.com/title/tt2861424/": "tt2861424",
"https://m.imdb.com/title/tt2861424/?ref_=vp_vi_tt": "tt2861424",
"https://www.imdb.com/": "",
"https://www.google.com/title/tt2861424/": "",
"tt2861424tt2861424tt2861424": "",
}
for d, expectedResult := range data {
result, _ := GetIMDbIDFromQuery(d)
if result != expectedResult {
t.Errorf("\ngot: %q\nwanted: %q\nfor: %q", result, expectedResult, d)
}
}
}
func TestExtractYearFromIMDbTitle(t *testing.T) {
type tResult struct {
Data string
Title string
ExpectedResult int64
}
data := []tResult{
{
Data: "John Wick: Kapitel 4 (2023) - IMDb",
Title: "John Wick: Kapitel 4",
ExpectedResult: 2023,
},
{
Data: "Matrix (1999) - IMDb",
Title: "Matrix",
ExpectedResult: 1999,
},
{
Data: "Thurgood (Fernsehfilm 2011) - IMDb",
Title: "Thurgood",
ExpectedResult: 2011,
},
{
Data: "Pretty/Handsome (Fernsehfilm 2008) - IMDb",
Title: "Pretty/Handsome",
ExpectedResult: 2008,
},
{
Data: "Red Planet: Deleted Scenes (Video 2000) - IMDb",
Title: "Red Planet: Deleted Scenes",
ExpectedResult: 2000,
},
{
Data: "Last Night in Soho: Deleted Scenes (Video 2022) - IMDb",
Title: "Last Night in Soho: Deleted Scenes",
ExpectedResult: 2022,
},
{
Data: "Eine schrecklich nette Familie (Fernsehserie 19871997) - IMDb",
Title: "Eine schrecklich nette Familie",
ExpectedResult: 1987,
},
{
Data: "Rick and Morty (Fernsehserie 2013 ) - IMDb",
Title: "Rick and Morty",
ExpectedResult: 2013,
},
}
for _, r := range data {
result := extractYearFromIMDbTitle(r.Data, r.Title)
if result != r.ExpectedResult {
t.Errorf("\ngot: %d\nwanted: %d\nfor: %q", result, r.ExpectedResult, r.Data)
}
}
}
func TestIsValidIMDbID(t *testing.T) {
data := map[string]bool{
"tt0000000": true,
"tt2911666": true,
"tt10366206": true,
"tt0944947": true,
"tt11737520": true,
"tt291166": false,
"tt103662060": false,
"ttt1036620": false,
"https://www.imdb.com/": false,
}
for d, expectedResult := range data {
result := IsValidIMDbID(d)
if result != expectedResult {
t.Errorf("\ngot: %t\nwanted: %t\nfor: %q", result, expectedResult, d)
}
}
}
func TestPrepareChunckOfIMDbTitleOfSeriesForYearExtraction(t *testing.T) {
data := map[string]string{
"(Fernsehserie 19871997)": "(1987)",
"(Fernsehserie 2013 )": "(2013)",
}
for d, expectedResult := range data {
result := prepareChunckOfIMDbTitleOfSeriesForYearExtraction(d)
if result != expectedResult {
t.Errorf("\ngot: %+v\nwanted: %+v\nfor: %q", result, expectedResult, d)
}
}
}
func TestScrap(t *testing.T) {
data := map[string]IMDbEntry{
"tt0000000": {},
"tt2911666": {
AlternateName: "",
IMDbID: "tt2911666",
Rating: 7.4,
RuntimeInMins: 101,
Title: "John Wick",
Type: "Movie",
Year: 2014,
},
"tt7798634": {
AlternateName: "Ready or Not - Auf die Plätze, fertig, tot",
IMDbID: "tt7798634",
Rating: 6.9,
RuntimeInMins: 95,
Title: "Ready or Not",
Type: "Movie",
Year: 2019,
},
"tt0087803": {
AlternateName: "1984",
IMDbID: "tt0087803",
Rating: 7.1,
RuntimeInMins: 113,
Title: "Nineteen Eighty-Four",
Type: "Movie",
Year: 1984,
},
"tt8579674": {
AlternateName: "",
IMDbID: "tt8579674",
Rating: 8.2,
RuntimeInMins: 119,
Title: "1917",
Type: "Movie",
Year: 2019,
},
"tt2861424": {
AlternateName: "",
IMDbID: "tt2861424",
Rating: 9.1,
RuntimeInMins: 0,
Title: "Rick and Morty",
Type: "TVSeries",
Year: 2013,
},
"tt0092400": {
AlternateName: "Eine schrecklich nette Familie",
IMDbID: "tt0092400",
Rating: 8.1,
RuntimeInMins: 0,
Title: "Married with Children",
Type: "TVSeries",
Year: 1987,
},
}
for d, expectedResult := range data {
result, _ := Scrap(d)
if result != expectedResult {
t.Errorf("\ngot: %+v\nwanted: %+v\nfor: %q", result, expectedResult, d)
}
}
}