mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 04:14:39 +03:00
added an url filter option in scenes (#1266)
* added an url filter option in scenes * added url filter on gallery, movies, performers and studios * Add empty string filter to stringCriterionHandler * Add unit tests Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
This commit is contained in:
@@ -268,6 +268,62 @@ func verifyPerformerCareerLength(t *testing.T, criterion models.StringCriterionI
|
||||
})
|
||||
}
|
||||
|
||||
func TestPerformerQueryURL(t *testing.T) {
|
||||
const sceneIdx = 1
|
||||
performerURL := getPerformerStringValue(sceneIdx, urlField)
|
||||
|
||||
urlCriterion := models.StringCriterionInput{
|
||||
Value: performerURL,
|
||||
Modifier: models.CriterionModifierEquals,
|
||||
}
|
||||
|
||||
filter := models.PerformerFilterType{
|
||||
URL: &urlCriterion,
|
||||
}
|
||||
|
||||
verifyFn := func(g *models.Performer) {
|
||||
t.Helper()
|
||||
verifyNullString(t, g.URL, urlCriterion)
|
||||
}
|
||||
|
||||
verifyPerformerQuery(t, filter, verifyFn)
|
||||
|
||||
urlCriterion.Modifier = models.CriterionModifierNotEquals
|
||||
verifyPerformerQuery(t, filter, verifyFn)
|
||||
|
||||
urlCriterion.Modifier = models.CriterionModifierMatchesRegex
|
||||
urlCriterion.Value = "performer_.*1_URL"
|
||||
verifyPerformerQuery(t, filter, verifyFn)
|
||||
|
||||
urlCriterion.Modifier = models.CriterionModifierNotMatchesRegex
|
||||
verifyPerformerQuery(t, filter, verifyFn)
|
||||
|
||||
urlCriterion.Modifier = models.CriterionModifierIsNull
|
||||
urlCriterion.Value = ""
|
||||
verifyPerformerQuery(t, filter, verifyFn)
|
||||
|
||||
urlCriterion.Modifier = models.CriterionModifierNotNull
|
||||
verifyPerformerQuery(t, filter, verifyFn)
|
||||
}
|
||||
|
||||
func verifyPerformerQuery(t *testing.T, filter models.PerformerFilterType, verifyFn func(s *models.Performer)) {
|
||||
withTxn(func(r models.Repository) error {
|
||||
t.Helper()
|
||||
sqb := r.Performer()
|
||||
|
||||
performers := queryPerformers(t, sqb, &filter, nil)
|
||||
|
||||
// assume it should find at least one
|
||||
assert.Greater(t, len(performers), 0)
|
||||
|
||||
for _, p := range performers {
|
||||
verifyFn(p)
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func queryPerformers(t *testing.T, qb models.PerformerReader, performerFilter *models.PerformerFilterType, findFilter *models.FindFilterType) []*models.Performer {
|
||||
performers, _, err := qb.Query(performerFilter, findFilter)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user