mirror of
https://github.com/stashapp/stash.git
synced 2025-12-18 04:44:37 +03:00
Model refactor, part 3 (#4152)
* Remove manager.Repository * Refactor other repositories * Fix tests and add database mock * Add AssertExpectations method * Refactor routes * Move default movie image to internal/static and add convenience methods * Refactor default performer image boxes
This commit is contained in:
@@ -63,10 +63,11 @@ func TestImporterPreImport(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestImporterPreImportWithTag(t *testing.T) {
|
||||
tagReaderWriter := &mocks.TagReaderWriter{}
|
||||
db := mocks.NewDatabase()
|
||||
|
||||
i := Importer{
|
||||
TagWriter: tagReaderWriter,
|
||||
ReaderWriter: db.Performer,
|
||||
TagWriter: db.Tag,
|
||||
MissingRefBehaviour: models.ImportMissingRefEnumFail,
|
||||
Input: jsonschema.Performer{
|
||||
Tags: []string{
|
||||
@@ -75,13 +76,13 @@ func TestImporterPreImportWithTag(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
tagReaderWriter.On("FindByNames", testCtx, []string{existingTagName}, false).Return([]*models.Tag{
|
||||
db.Tag.On("FindByNames", testCtx, []string{existingTagName}, false).Return([]*models.Tag{
|
||||
{
|
||||
ID: existingTagID,
|
||||
Name: existingTagName,
|
||||
},
|
||||
}, nil).Once()
|
||||
tagReaderWriter.On("FindByNames", testCtx, []string{existingTagErr}, false).Return(nil, errors.New("FindByNames error")).Once()
|
||||
db.Tag.On("FindByNames", testCtx, []string{existingTagErr}, false).Return(nil, errors.New("FindByNames error")).Once()
|
||||
|
||||
err := i.PreImport(testCtx)
|
||||
assert.Nil(t, err)
|
||||
@@ -91,14 +92,15 @@ func TestImporterPreImportWithTag(t *testing.T) {
|
||||
err = i.PreImport(testCtx)
|
||||
assert.NotNil(t, err)
|
||||
|
||||
tagReaderWriter.AssertExpectations(t)
|
||||
db.AssertExpectations(t)
|
||||
}
|
||||
|
||||
func TestImporterPreImportWithMissingTag(t *testing.T) {
|
||||
tagReaderWriter := &mocks.TagReaderWriter{}
|
||||
db := mocks.NewDatabase()
|
||||
|
||||
i := Importer{
|
||||
TagWriter: tagReaderWriter,
|
||||
ReaderWriter: db.Performer,
|
||||
TagWriter: db.Tag,
|
||||
Input: jsonschema.Performer{
|
||||
Tags: []string{
|
||||
missingTagName,
|
||||
@@ -107,8 +109,8 @@ func TestImporterPreImportWithMissingTag(t *testing.T) {
|
||||
MissingRefBehaviour: models.ImportMissingRefEnumFail,
|
||||
}
|
||||
|
||||
tagReaderWriter.On("FindByNames", testCtx, []string{missingTagName}, false).Return(nil, nil).Times(3)
|
||||
tagReaderWriter.On("Create", testCtx, mock.AnythingOfType("*models.Tag")).Run(func(args mock.Arguments) {
|
||||
db.Tag.On("FindByNames", testCtx, []string{missingTagName}, false).Return(nil, nil).Times(3)
|
||||
db.Tag.On("Create", testCtx, mock.AnythingOfType("*models.Tag")).Run(func(args mock.Arguments) {
|
||||
t := args.Get(1).(*models.Tag)
|
||||
t.ID = existingTagID
|
||||
}).Return(nil)
|
||||
@@ -125,14 +127,15 @@ func TestImporterPreImportWithMissingTag(t *testing.T) {
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, existingTagID, i.performer.TagIDs.List()[0])
|
||||
|
||||
tagReaderWriter.AssertExpectations(t)
|
||||
db.AssertExpectations(t)
|
||||
}
|
||||
|
||||
func TestImporterPreImportWithMissingTagCreateErr(t *testing.T) {
|
||||
tagReaderWriter := &mocks.TagReaderWriter{}
|
||||
db := mocks.NewDatabase()
|
||||
|
||||
i := Importer{
|
||||
TagWriter: tagReaderWriter,
|
||||
ReaderWriter: db.Performer,
|
||||
TagWriter: db.Tag,
|
||||
Input: jsonschema.Performer{
|
||||
Tags: []string{
|
||||
missingTagName,
|
||||
@@ -141,25 +144,28 @@ func TestImporterPreImportWithMissingTagCreateErr(t *testing.T) {
|
||||
MissingRefBehaviour: models.ImportMissingRefEnumCreate,
|
||||
}
|
||||
|
||||
tagReaderWriter.On("FindByNames", testCtx, []string{missingTagName}, false).Return(nil, nil).Once()
|
||||
tagReaderWriter.On("Create", testCtx, mock.AnythingOfType("*models.Tag")).Return(errors.New("Create error"))
|
||||
db.Tag.On("FindByNames", testCtx, []string{missingTagName}, false).Return(nil, nil).Once()
|
||||
db.Tag.On("Create", testCtx, mock.AnythingOfType("*models.Tag")).Return(errors.New("Create error"))
|
||||
|
||||
err := i.PreImport(testCtx)
|
||||
assert.NotNil(t, err)
|
||||
|
||||
db.AssertExpectations(t)
|
||||
}
|
||||
|
||||
func TestImporterPostImport(t *testing.T) {
|
||||
readerWriter := &mocks.PerformerReaderWriter{}
|
||||
db := mocks.NewDatabase()
|
||||
|
||||
i := Importer{
|
||||
ReaderWriter: readerWriter,
|
||||
ReaderWriter: db.Performer,
|
||||
TagWriter: db.Tag,
|
||||
imageData: imageBytes,
|
||||
}
|
||||
|
||||
updatePerformerImageErr := errors.New("UpdateImage error")
|
||||
|
||||
readerWriter.On("UpdateImage", testCtx, performerID, imageBytes).Return(nil).Once()
|
||||
readerWriter.On("UpdateImage", testCtx, errImageID, imageBytes).Return(updatePerformerImageErr).Once()
|
||||
db.Performer.On("UpdateImage", testCtx, performerID, imageBytes).Return(nil).Once()
|
||||
db.Performer.On("UpdateImage", testCtx, errImageID, imageBytes).Return(updatePerformerImageErr).Once()
|
||||
|
||||
err := i.PostImport(testCtx, performerID)
|
||||
assert.Nil(t, err)
|
||||
@@ -167,14 +173,15 @@ func TestImporterPostImport(t *testing.T) {
|
||||
err = i.PostImport(testCtx, errImageID)
|
||||
assert.NotNil(t, err)
|
||||
|
||||
readerWriter.AssertExpectations(t)
|
||||
db.AssertExpectations(t)
|
||||
}
|
||||
|
||||
func TestImporterFindExistingID(t *testing.T) {
|
||||
readerWriter := &mocks.PerformerReaderWriter{}
|
||||
db := mocks.NewDatabase()
|
||||
|
||||
i := Importer{
|
||||
ReaderWriter: readerWriter,
|
||||
ReaderWriter: db.Performer,
|
||||
TagWriter: db.Tag,
|
||||
Input: jsonschema.Performer{
|
||||
Name: performerName,
|
||||
},
|
||||
@@ -195,13 +202,13 @@ func TestImporterFindExistingID(t *testing.T) {
|
||||
}
|
||||
|
||||
errFindByNames := errors.New("FindByNames error")
|
||||
readerWriter.On("Query", testCtx, performerFilter(performerName), findFilter).Return(nil, 0, nil).Once()
|
||||
readerWriter.On("Query", testCtx, performerFilter(existingPerformerName), findFilter).Return([]*models.Performer{
|
||||
db.Performer.On("Query", testCtx, performerFilter(performerName), findFilter).Return(nil, 0, nil).Once()
|
||||
db.Performer.On("Query", testCtx, performerFilter(existingPerformerName), findFilter).Return([]*models.Performer{
|
||||
{
|
||||
ID: existingPerformerID,
|
||||
},
|
||||
}, 1, nil).Once()
|
||||
readerWriter.On("Query", testCtx, performerFilter(performerNameErr), findFilter).Return(nil, 0, errFindByNames).Once()
|
||||
db.Performer.On("Query", testCtx, performerFilter(performerNameErr), findFilter).Return(nil, 0, errFindByNames).Once()
|
||||
|
||||
id, err := i.FindExistingID(testCtx)
|
||||
assert.Nil(t, id)
|
||||
@@ -217,11 +224,11 @@ func TestImporterFindExistingID(t *testing.T) {
|
||||
assert.Nil(t, id)
|
||||
assert.NotNil(t, err)
|
||||
|
||||
readerWriter.AssertExpectations(t)
|
||||
db.AssertExpectations(t)
|
||||
}
|
||||
|
||||
func TestCreate(t *testing.T) {
|
||||
readerWriter := &mocks.PerformerReaderWriter{}
|
||||
db := mocks.NewDatabase()
|
||||
|
||||
performer := models.Performer{
|
||||
Name: performerName,
|
||||
@@ -232,16 +239,17 @@ func TestCreate(t *testing.T) {
|
||||
}
|
||||
|
||||
i := Importer{
|
||||
ReaderWriter: readerWriter,
|
||||
ReaderWriter: db.Performer,
|
||||
TagWriter: db.Tag,
|
||||
performer: performer,
|
||||
}
|
||||
|
||||
errCreate := errors.New("Create error")
|
||||
readerWriter.On("Create", testCtx, &performer).Run(func(args mock.Arguments) {
|
||||
db.Performer.On("Create", testCtx, &performer).Run(func(args mock.Arguments) {
|
||||
arg := args.Get(1).(*models.Performer)
|
||||
arg.ID = performerID
|
||||
}).Return(nil).Once()
|
||||
readerWriter.On("Create", testCtx, &performerErr).Return(errCreate).Once()
|
||||
db.Performer.On("Create", testCtx, &performerErr).Return(errCreate).Once()
|
||||
|
||||
id, err := i.Create(testCtx)
|
||||
assert.Equal(t, performerID, *id)
|
||||
@@ -252,11 +260,11 @@ func TestCreate(t *testing.T) {
|
||||
assert.Nil(t, id)
|
||||
assert.NotNil(t, err)
|
||||
|
||||
readerWriter.AssertExpectations(t)
|
||||
db.AssertExpectations(t)
|
||||
}
|
||||
|
||||
func TestUpdate(t *testing.T) {
|
||||
readerWriter := &mocks.PerformerReaderWriter{}
|
||||
db := mocks.NewDatabase()
|
||||
|
||||
performer := models.Performer{
|
||||
Name: performerName,
|
||||
@@ -267,7 +275,8 @@ func TestUpdate(t *testing.T) {
|
||||
}
|
||||
|
||||
i := Importer{
|
||||
ReaderWriter: readerWriter,
|
||||
ReaderWriter: db.Performer,
|
||||
TagWriter: db.Tag,
|
||||
performer: performer,
|
||||
}
|
||||
|
||||
@@ -275,7 +284,7 @@ func TestUpdate(t *testing.T) {
|
||||
|
||||
// id needs to be set for the mock input
|
||||
performer.ID = performerID
|
||||
readerWriter.On("Update", testCtx, &performer).Return(nil).Once()
|
||||
db.Performer.On("Update", testCtx, &performer).Return(nil).Once()
|
||||
|
||||
err := i.Update(testCtx, performerID)
|
||||
assert.Nil(t, err)
|
||||
@@ -284,10 +293,10 @@ func TestUpdate(t *testing.T) {
|
||||
|
||||
// need to set id separately
|
||||
performerErr.ID = errImageID
|
||||
readerWriter.On("Update", testCtx, &performerErr).Return(errUpdate).Once()
|
||||
db.Performer.On("Update", testCtx, &performerErr).Return(errUpdate).Once()
|
||||
|
||||
err = i.Update(testCtx, errImageID)
|
||||
assert.NotNil(t, err)
|
||||
|
||||
readerWriter.AssertExpectations(t)
|
||||
db.AssertExpectations(t)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user