mirror of https://github.com/stashapp/stash.git
226 lines
4.3 KiB
Go
226 lines
4.3 KiB
Go
package identify
|
|
|
|
import (
|
|
"errors"
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/stashapp/stash/pkg/models"
|
|
"github.com/stashapp/stash/pkg/models/mocks"
|
|
|
|
"github.com/stretchr/testify/mock"
|
|
)
|
|
|
|
func Test_getPerformerID(t *testing.T) {
|
|
const (
|
|
emptyEndpoint = ""
|
|
endpoint = "endpoint"
|
|
)
|
|
invalidStoredID := "invalidStoredID"
|
|
validStoredIDStr := "1"
|
|
validStoredID := 1
|
|
remoteSiteID := "2"
|
|
name := "name"
|
|
|
|
mockPerformerReaderWriter := mocks.PerformerReaderWriter{}
|
|
mockPerformerReaderWriter.On("Create", testCtx, mock.Anything).Run(func(args mock.Arguments) {
|
|
p := args.Get(1).(*models.Performer)
|
|
p.ID = validStoredID
|
|
}).Return(nil)
|
|
|
|
type args struct {
|
|
endpoint string
|
|
p *models.ScrapedPerformer
|
|
createMissing bool
|
|
skipSingleName bool
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want *int
|
|
wantErr bool
|
|
}{
|
|
{
|
|
"no performer",
|
|
args{
|
|
emptyEndpoint,
|
|
&models.ScrapedPerformer{},
|
|
false,
|
|
false,
|
|
},
|
|
nil,
|
|
false,
|
|
},
|
|
{
|
|
"invalid stored id",
|
|
args{
|
|
emptyEndpoint,
|
|
&models.ScrapedPerformer{
|
|
StoredID: &invalidStoredID,
|
|
},
|
|
false,
|
|
false,
|
|
},
|
|
nil,
|
|
true,
|
|
},
|
|
{
|
|
"valid stored id",
|
|
args{
|
|
emptyEndpoint,
|
|
&models.ScrapedPerformer{
|
|
StoredID: &validStoredIDStr,
|
|
},
|
|
false,
|
|
false,
|
|
},
|
|
&validStoredID,
|
|
false,
|
|
},
|
|
{
|
|
"nil stored not creating",
|
|
args{
|
|
emptyEndpoint,
|
|
&models.ScrapedPerformer{
|
|
Name: &name,
|
|
},
|
|
false,
|
|
false,
|
|
},
|
|
nil,
|
|
false,
|
|
},
|
|
{
|
|
"nil name creating",
|
|
args{
|
|
emptyEndpoint,
|
|
&models.ScrapedPerformer{},
|
|
true,
|
|
false,
|
|
},
|
|
nil,
|
|
false,
|
|
},
|
|
{
|
|
"single name no disambig creating",
|
|
args{
|
|
emptyEndpoint,
|
|
&models.ScrapedPerformer{
|
|
Name: &name,
|
|
},
|
|
true,
|
|
true,
|
|
},
|
|
nil,
|
|
true,
|
|
},
|
|
{
|
|
"valid name creating",
|
|
args{
|
|
emptyEndpoint,
|
|
&models.ScrapedPerformer{
|
|
Name: &name,
|
|
RemoteSiteID: &remoteSiteID,
|
|
},
|
|
true,
|
|
false,
|
|
},
|
|
&validStoredID,
|
|
false,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got, err := getPerformerID(testCtx, tt.args.endpoint, &mockPerformerReaderWriter, tt.args.p, tt.args.createMissing, tt.args.skipSingleName)
|
|
if (err != nil) != tt.wantErr {
|
|
t.Errorf("getPerformerID() error = %v, wantErr %v", err, tt.wantErr)
|
|
return
|
|
}
|
|
if !reflect.DeepEqual(got, tt.want) {
|
|
t.Errorf("getPerformerID() = %v, want %v", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_createMissingPerformer(t *testing.T) {
|
|
emptyEndpoint := ""
|
|
validEndpoint := "validEndpoint"
|
|
remoteSiteID := "remoteSiteID"
|
|
validName := "validName"
|
|
invalidName := "invalidName"
|
|
performerID := 1
|
|
|
|
mockPerformerReaderWriter := mocks.PerformerReaderWriter{}
|
|
mockPerformerReaderWriter.On("Create", testCtx, mock.MatchedBy(func(p *models.Performer) bool {
|
|
return p.Name == validName
|
|
})).Run(func(args mock.Arguments) {
|
|
p := args.Get(1).(*models.Performer)
|
|
p.ID = performerID
|
|
}).Return(nil)
|
|
|
|
mockPerformerReaderWriter.On("Create", testCtx, mock.MatchedBy(func(p *models.Performer) bool {
|
|
return p.Name == invalidName
|
|
})).Return(errors.New("error creating performer"))
|
|
|
|
type args struct {
|
|
endpoint string
|
|
p *models.ScrapedPerformer
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want *int
|
|
wantErr bool
|
|
}{
|
|
{
|
|
"simple",
|
|
args{
|
|
emptyEndpoint,
|
|
&models.ScrapedPerformer{
|
|
Name: &validName,
|
|
RemoteSiteID: &remoteSiteID,
|
|
},
|
|
},
|
|
&performerID,
|
|
false,
|
|
},
|
|
{
|
|
"error creating",
|
|
args{
|
|
emptyEndpoint,
|
|
&models.ScrapedPerformer{
|
|
Name: &invalidName,
|
|
RemoteSiteID: &remoteSiteID,
|
|
},
|
|
},
|
|
nil,
|
|
true,
|
|
},
|
|
{
|
|
"valid stash id",
|
|
args{
|
|
validEndpoint,
|
|
&models.ScrapedPerformer{
|
|
Name: &validName,
|
|
RemoteSiteID: &remoteSiteID,
|
|
},
|
|
},
|
|
&performerID,
|
|
false,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got, err := createMissingPerformer(testCtx, tt.args.endpoint, &mockPerformerReaderWriter, tt.args.p)
|
|
if (err != nil) != tt.wantErr {
|
|
t.Errorf("createMissingPerformer() error = %v, wantErr %v", err, tt.wantErr)
|
|
return
|
|
}
|
|
if !reflect.DeepEqual(got, tt.want) {
|
|
t.Errorf("createMissingPerformer() = %v, want %v", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|