From 8c81c8ee85537db0ce93eb3bb5132e28c12ee467 Mon Sep 17 00:00:00 2001 From: Marco <130363067+dutchdevil-83@users.noreply.github.com> Date: Wed, 29 Apr 2026 13:11:36 +0000 Subject: [PATCH] test(scraper): add relationships-only scene regression test Signed-off-by: Marco <130363067+dutchdevil-83@users.noreply.github.com> --- pkg/scraper/xpath_test.go | 107 +++++++++++++++++--------------------- 1 file changed, 49 insertions(+), 58 deletions(-) diff --git a/pkg/scraper/xpath_test.go b/pkg/scraper/xpath_test.go index 42ee2227b..4536495ac 100644 --- a/pkg/scraper/xpath_test.go +++ b/pkg/scraper/xpath_test.go @@ -683,74 +683,65 @@ func verifyPerformers(t *testing.T, expectedNames []string, expectedURLs []strin } } -func TestApplySceneXPathConfig(t *testing.T) { - reader := strings.NewReader(sceneHTML) - doc, err := htmlquery.Parse(reader) +func TestApplySceneXPathConfigRelationshipsOnly(t *testing.T) { + reader := strings.NewReader(sceneHTML) + doc, err := htmlquery.Parse(reader) + if err != nil { + t.Fatalf("Error loading document: %s", err.Error()) + } - if err != nil { - t.Errorf("Error loading document: %s", err.Error()) - return - } + scraper := makeSceneXPathConfig() - 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{ - doc: doc, - } - scene, err := scraper.scrapeScene(context.Background(), q) + q := &xpathQuery{ + doc: doc, + } - if err != nil { - t.Errorf("Error scraping scene: %s", err.Error()) - return - } + var scene *models.ScrapedScene + assert.NotPanics(t, func() { + 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{ - "Amateur", - "Babe", - "Blowjob", - "Exclusive", - "HD Porn", - "Pornstar", - "Public", - "Pussy Licking", - "Threesome", - "Verified Models", - } - verifyTags(t, expectedTags, scene.Tags) + expectedTags := []string{ + "Amateur", + "Babe", + "Blowjob", + "Exclusive", + "HD Porn", + "Pornstar", + "Public", + "Pussy Licking", + "Threesome", + "Verified Models", + } + verifyTags(t, expectedTags, scene.Tags) - // verify movies - expectedMovies := []string{ - "Video", - "of", - "verified", - "member", - } - verifyMovies(t, expectedMovies, scene.Movies) + expectedPerformerNames := []string{ + "Alex D", + "Mia Malkova", + "Riley Reid", + } - expectedPerformerNames := []string{ - "Alex D", - "Mia Malkova", - "Riley Reid", - } + expectedPerformerURLs := []string{ + "/pornstar/alex-d", + "/pornstar/mia-malkova", + "/pornstar/riley-reid", + } - expectedPerformerURLs := []string{ - "/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") + verifyPerformers(t, expectedPerformerNames, expectedPerformerURLs, scene.Performers) } func TestLoadXPathScraperFromYAML(t *testing.T) {