mirror of
https://github.com/stashapp/stash.git
synced 2025-12-06 16:34:02 +01:00
Add unit tests
This commit is contained in:
parent
97f253bfbb
commit
6d8b2ae2bf
1 changed files with 140 additions and 0 deletions
|
|
@ -2432,6 +2432,146 @@ func TestPerformerStore_FindByStashIDStatus(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestPerformerMerge(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
srcIdxs []int
|
||||||
|
destIdx int
|
||||||
|
wantErr bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "merge into self",
|
||||||
|
srcIdxs: []int{performerIdx1WithDupName},
|
||||||
|
destIdx: performerIdx1WithDupName,
|
||||||
|
wantErr: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "merge multiple",
|
||||||
|
srcIdxs: []int{
|
||||||
|
performerIdx2WithScene,
|
||||||
|
performerIdxWithTwoScenes,
|
||||||
|
performerIdx1WithImage,
|
||||||
|
performerIdxWithTwoImages,
|
||||||
|
performerIdxWithGallery,
|
||||||
|
performerIdxWithTwoGalleries,
|
||||||
|
performerIdxWithTag,
|
||||||
|
performerIdxWithTwoTags,
|
||||||
|
},
|
||||||
|
destIdx: tagIdxWithPerformer,
|
||||||
|
wantErr: false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
qb := db.Performer
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
runWithRollbackTxn(t, tt.name, func(t *testing.T, ctx context.Context) {
|
||||||
|
assert := assert.New(t)
|
||||||
|
|
||||||
|
// load src tag ids to compare after merge
|
||||||
|
performerTagIds := make(map[int][]int)
|
||||||
|
for _, srcIdx := range tt.srcIdxs {
|
||||||
|
srcPerformer, err := qb.Find(ctx, performerIDs[srcIdx])
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Error finding performer: %s", err.Error())
|
||||||
|
}
|
||||||
|
if err := srcPerformer.LoadTagIDs(ctx, qb); err != nil {
|
||||||
|
t.Errorf("Error loading performer tag IDs: %s", err.Error())
|
||||||
|
}
|
||||||
|
srcTagIDs := srcPerformer.TagIDs.List()
|
||||||
|
performerTagIds[srcIdx] = srcTagIDs
|
||||||
|
}
|
||||||
|
|
||||||
|
err := qb.Merge(ctx, indexesToIDs(tagIDs, tt.srcIdxs), tagIDs[tt.destIdx])
|
||||||
|
|
||||||
|
if (err != nil) != tt.wantErr {
|
||||||
|
t.Errorf("PerformerStore.Merge() error = %v, wantErr %v", err, tt.wantErr)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ensure source performers are destroyed
|
||||||
|
for _, srcIdx := range tt.srcIdxs {
|
||||||
|
p, err := qb.Find(ctx, performerIDs[srcIdx])
|
||||||
|
|
||||||
|
// not found returns nil performer and nil error
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Error finding performer: %s", err.Error())
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
assert.Nil(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ensure items point to new performer
|
||||||
|
for _, srcIdx := range tt.srcIdxs {
|
||||||
|
sceneIdxs := scenePerformers.reverseLookup(srcIdx)
|
||||||
|
for _, sceneIdx := range sceneIdxs {
|
||||||
|
s, err := db.Scene.Find(ctx, sceneIDs[sceneIdx])
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Error finding scene: %s", err.Error())
|
||||||
|
}
|
||||||
|
if err := s.LoadPerformerIDs(ctx, db.Scene); err != nil {
|
||||||
|
t.Errorf("Error loading scene performer IDs: %s", err.Error())
|
||||||
|
}
|
||||||
|
scenePerformerIDs := s.PerformerIDs.List()
|
||||||
|
|
||||||
|
assert.Contains(scenePerformerIDs, performerIDs[tt.destIdx])
|
||||||
|
assert.NotContains(scenePerformerIDs, performerIDs[srcIdx])
|
||||||
|
}
|
||||||
|
|
||||||
|
imageIdxs := imagePerformers.reverseLookup(srcIdx)
|
||||||
|
for _, imageIdx := range imageIdxs {
|
||||||
|
i, err := db.Image.Find(ctx, imageIDs[imageIdx])
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Error finding image: %s", err.Error())
|
||||||
|
}
|
||||||
|
if err := i.LoadPerformerIDs(ctx, db.Image); err != nil {
|
||||||
|
t.Errorf("Error loading image performer IDs: %s", err.Error())
|
||||||
|
}
|
||||||
|
imagePerformerIDs := i.PerformerIDs.List()
|
||||||
|
|
||||||
|
assert.Contains(imagePerformerIDs, performerIDs[tt.destIdx])
|
||||||
|
assert.NotContains(imagePerformerIDs, performerIDs[srcIdx])
|
||||||
|
}
|
||||||
|
|
||||||
|
galleryIdxs := galleryPerformers.reverseLookup(srcIdx)
|
||||||
|
for _, galleryIdx := range galleryIdxs {
|
||||||
|
g, err := db.Gallery.Find(ctx, galleryIDs[galleryIdx])
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Error finding gallery: %s", err.Error())
|
||||||
|
}
|
||||||
|
if err := g.LoadPerformerIDs(ctx, db.Gallery); err != nil {
|
||||||
|
t.Errorf("Error loading gallery performer IDs: %s", err.Error())
|
||||||
|
}
|
||||||
|
galleryPerformerIDs := g.PerformerIDs.List()
|
||||||
|
|
||||||
|
assert.Contains(galleryPerformerIDs, performerIDs[tt.destIdx])
|
||||||
|
assert.NotContains(galleryPerformerIDs, performerIDs[srcIdx])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ensure tags were merged
|
||||||
|
destPerformer, err := qb.Find(ctx, performerIDs[tt.destIdx])
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Error finding performer: %s", err.Error())
|
||||||
|
}
|
||||||
|
if err := destPerformer.LoadTagIDs(ctx, qb); err != nil {
|
||||||
|
t.Errorf("Error loading performer tag IDs: %s", err.Error())
|
||||||
|
}
|
||||||
|
destTagIDs := destPerformer.TagIDs.List()
|
||||||
|
|
||||||
|
for _, srcIdx := range tt.srcIdxs {
|
||||||
|
for _, tagID := range performerTagIds[srcIdx] {
|
||||||
|
assert.Contains(destTagIDs, tagID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TODO Update
|
// TODO Update
|
||||||
// TODO Destroy
|
// TODO Destroy
|
||||||
// TODO Find
|
// TODO Find
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue