[Files Refactor] Import export fixup (#2763)

* Adjust json schema
* Remove mappings file from export
* Import file/folder support
* Update documentation
* Make gallery filenames unique
This commit is contained in:
WithoutPants
2022-08-30 12:17:15 +10:00
parent 1222b7b87b
commit 0b534d89c6
35 changed files with 3315 additions and 3146 deletions

View File

@@ -1,165 +1,144 @@
package image
// import (
// "errors"
import (
"errors"
// "github.com/stashapp/stash/pkg/file"
// "github.com/stashapp/stash/pkg/models"
// "github.com/stashapp/stash/pkg/models/json"
// "github.com/stashapp/stash/pkg/models/jsonschema"
// "github.com/stashapp/stash/pkg/models/mocks"
// "github.com/stretchr/testify/assert"
"github.com/stashapp/stash/pkg/models"
"github.com/stashapp/stash/pkg/models/json"
"github.com/stashapp/stash/pkg/models/jsonschema"
"github.com/stashapp/stash/pkg/models/mocks"
"github.com/stretchr/testify/assert"
// "testing"
// "time"
// )
"testing"
"time"
)
// const (
// imageID = 1
// errImageID = 3
const (
imageID = 1
// studioID = 4
// missingStudioID = 5
// errStudioID = 6
// )
studioID = 4
missingStudioID = 5
errStudioID = 6
)
// var (
// checksum = "checksum"
// title = "title"
// rating = 5
// organized = true
// ocounter = 2
// size int64 = 123
// width = 100
// height = 100
// )
var (
title = "title"
rating = 5
organized = true
ocounter = 2
)
// const (
// studioName = "studioName"
// )
const (
studioName = "studioName"
)
// var (
// createTime = time.Date(2001, 01, 01, 0, 0, 0, 0, time.UTC)
// updateTime = time.Date(2002, 01, 01, 0, 0, 0, 0, time.UTC)
// )
var (
createTime = time.Date(2001, 01, 01, 0, 0, 0, 0, time.UTC)
updateTime = time.Date(2002, 01, 01, 0, 0, 0, 0, time.UTC)
)
// func createFullImage(id int) models.Image {
// return models.Image{
// ID: id,
// Title: title,
// Files: []*file.ImageFile{
// {
// BaseFile: &file.BaseFile{
// Size: size,
// },
// Height: height,
// Width: width,
// },
// },
// OCounter: ocounter,
// Rating: &rating,
// Organized: organized,
// CreatedAt: createTime,
// UpdatedAt: updateTime,
// }
// }
func createFullImage(id int) models.Image {
return models.Image{
ID: id,
Title: title,
OCounter: ocounter,
Rating: &rating,
Organized: organized,
CreatedAt: createTime,
UpdatedAt: updateTime,
}
}
// func createFullJSONImage() *jsonschema.Image {
// return &jsonschema.Image{
// Title: title,
// Checksum: checksum,
// OCounter: ocounter,
// Rating: rating,
// Organized: organized,
// File: &jsonschema.ImageFile{
// Height: height,
// Size: size,
// Width: width,
// },
// CreatedAt: json.JSONTime{
// Time: createTime,
// },
// UpdatedAt: json.JSONTime{
// Time: updateTime,
// },
// }
// }
func createFullJSONImage() *jsonschema.Image {
return &jsonschema.Image{
Title: title,
OCounter: ocounter,
Rating: rating,
Organized: organized,
CreatedAt: json.JSONTime{
Time: createTime,
},
UpdatedAt: json.JSONTime{
Time: updateTime,
},
}
}
// type basicTestScenario struct {
// input models.Image
// expected *jsonschema.Image
// }
type basicTestScenario struct {
input models.Image
expected *jsonschema.Image
}
// var scenarios = []basicTestScenario{
// {
// createFullImage(imageID),
// createFullJSONImage(),
// },
// }
var scenarios = []basicTestScenario{
{
createFullImage(imageID),
createFullJSONImage(),
},
}
// func TestToJSON(t *testing.T) {
// for i, s := range scenarios {
// image := s.input
// json := ToBasicJSON(&image)
func TestToJSON(t *testing.T) {
for i, s := range scenarios {
image := s.input
json := ToBasicJSON(&image)
// assert.Equal(t, s.expected, json, "[%d]", i)
// }
// }
assert.Equal(t, s.expected, json, "[%d]", i)
}
}
// func createStudioImage(studioID int) models.Image {
// return models.Image{
// StudioID: &studioID,
// }
// }
func createStudioImage(studioID int) models.Image {
return models.Image{
StudioID: &studioID,
}
}
// type stringTestScenario struct {
// input models.Image
// expected string
// err bool
// }
type stringTestScenario struct {
input models.Image
expected string
err bool
}
// var getStudioScenarios = []stringTestScenario{
// {
// createStudioImage(studioID),
// studioName,
// false,
// },
// {
// createStudioImage(missingStudioID),
// "",
// false,
// },
// {
// createStudioImage(errStudioID),
// "",
// true,
// },
// }
var getStudioScenarios = []stringTestScenario{
{
createStudioImage(studioID),
studioName,
false,
},
{
createStudioImage(missingStudioID),
"",
false,
},
{
createStudioImage(errStudioID),
"",
true,
},
}
// func TestGetStudioName(t *testing.T) {
// mockStudioReader := &mocks.StudioReaderWriter{}
func TestGetStudioName(t *testing.T) {
mockStudioReader := &mocks.StudioReaderWriter{}
// studioErr := errors.New("error getting image")
studioErr := errors.New("error getting image")
// mockStudioReader.On("Find", testCtx, studioID).Return(&models.Studio{
// Name: models.NullString(studioName),
// }, nil).Once()
// mockStudioReader.On("Find", testCtx, missingStudioID).Return(nil, nil).Once()
// mockStudioReader.On("Find", testCtx, errStudioID).Return(nil, studioErr).Once()
mockStudioReader.On("Find", testCtx, studioID).Return(&models.Studio{
Name: models.NullString(studioName),
}, nil).Once()
mockStudioReader.On("Find", testCtx, missingStudioID).Return(nil, nil).Once()
mockStudioReader.On("Find", testCtx, errStudioID).Return(nil, studioErr).Once()
// for i, s := range getStudioScenarios {
// image := s.input
// json, err := GetStudioName(testCtx, mockStudioReader, &image)
for i, s := range getStudioScenarios {
image := s.input
json, err := GetStudioName(testCtx, mockStudioReader, &image)
// switch {
// case !s.err && err != nil:
// t.Errorf("[%d] unexpected error: %s", i, err.Error())
// case s.err && err == nil:
// t.Errorf("[%d] expected error not returned", i)
// default:
// assert.Equal(t, s.expected, json, "[%d]", i)
// }
// }
switch {
case !s.err && err != nil:
t.Errorf("[%d] unexpected error: %s", i, err.Error())
case s.err && err == nil:
t.Errorf("[%d] expected error not returned", i)
default:
assert.Equal(t, s.expected, json, "[%d]", i)
}
}
// mockStudioReader.AssertExpectations(t)
// }
mockStudioReader.AssertExpectations(t)
}