test(scraper): add relationships-only scene regression test

Signed-off-by: Marco <130363067+dutchdevil-83@users.noreply.github.com>
This commit is contained in:
Marco 2026-04-29 13:11:36 +00:00
parent 17e599dff4
commit 8c81c8ee85

View file

@ -683,74 +683,65 @@ func verifyPerformers(t *testing.T, expectedNames []string, expectedURLs []strin
} }
} }
func TestApplySceneXPathConfig(t *testing.T) { func TestApplySceneXPathConfigRelationshipsOnly(t *testing.T) {
reader := strings.NewReader(sceneHTML) reader := strings.NewReader(sceneHTML)
doc, err := htmlquery.Parse(reader) doc, err := htmlquery.Parse(reader)
if err != nil {
t.Fatalf("Error loading document: %s", err.Error())
}
if err != nil { scraper := makeSceneXPathConfig()
t.Errorf("Error loading document: %s", err.Error())
return
}
scraper := makeSceneXPathConfig() // Simulate the relationships-only scrape path:
// no direct scene fields, but populated Performers/Tags mappings.
scraper.Scene.mappedConfig = make(mappedConfig)
scraper.Scene.Studio = nil
scraper.Scene.Movies = nil
scraper.Scene.Groups = nil
q := &xpathQuery{ q := &xpathQuery{
doc: doc, doc: doc,
} }
scene, err := scraper.scrapeScene(context.Background(), q)
if err != nil { var scene *models.ScrapedScene
t.Errorf("Error scraping scene: %s", err.Error()) assert.NotPanics(t, func() {
return scene, err = scraper.scrapeScene(context.Background(), q)
} }, "relationships-only scene scrape should not panic")
const title = "Test Video" assert.NoError(t, err)
assert.NotNil(t, scene)
verifyField(t, title, scene.Title, "Title") // No direct scene fields should be populated.
assert.Nil(t, scene.Title)
assert.Nil(t, scene.Date)
// verify tags expectedTags := []string{
expectedTags := []string{ "Amateur",
"Amateur", "Babe",
"Babe", "Blowjob",
"Blowjob", "Exclusive",
"Exclusive", "HD Porn",
"HD Porn", "Pornstar",
"Pornstar", "Public",
"Public", "Pussy Licking",
"Pussy Licking", "Threesome",
"Threesome", "Verified Models",
"Verified Models", }
} verifyTags(t, expectedTags, scene.Tags)
verifyTags(t, expectedTags, scene.Tags)
// verify movies expectedPerformerNames := []string{
expectedMovies := []string{ "Alex D",
"Video", "Mia Malkova",
"of", "Riley Reid",
"verified", }
"member",
}
verifyMovies(t, expectedMovies, scene.Movies)
expectedPerformerNames := []string{ expectedPerformerURLs := []string{
"Alex D", "/pornstar/alex-d",
"Mia Malkova", "/pornstar/mia-malkova",
"Riley Reid", "/pornstar/riley-reid",
} }
expectedPerformerURLs := []string{ verifyPerformers(t, expectedPerformerNames, expectedPerformerURLs, scene.Performers)
"/pornstar/alex-d",
"/pornstar/mia-malkova",
"/pornstar/riley-reid",
}
verifyPerformers(t, expectedPerformerNames, expectedPerformerURLs, scene.Performers)
const expectedStudioName = "Sis Loves Me"
const expectedStudioURL = "/channels/sis-loves-me"
verifyField(t, expectedStudioName, &scene.Studio.Name, "Studio.Name")
verifyField(t, expectedStudioURL, scene.Studio.URL, "Studio.URL")
} }
func TestLoadXPathScraperFromYAML(t *testing.T) { func TestLoadXPathScraperFromYAML(t *testing.T) {