|
|
package pipelines
import ( "github.com/geplauder/lithium/storage" "os" "path/filepath" "testing"
"github.com/stretchr/testify/assert" )
func TestImagePipelineDeserialization(t *testing.T) { const Payload string = `{ "name": "example pipeline", "type": 0, "removeMetadata": false, "steps": [ { "name": "resize image", "type": 0 }, { "name": "compress image", "type": 1 } ] }`
t.Run("Image pipeline deserialization is successful", func(t *testing.T) { values := DeserializePipelines([][]byte{[]byte(Payload)})
assert.Equal(t, 1, len(values), "Output should contain one element") assert.Equal(t, "example pipeline", values[0].GetName()) assert.Equal(t, Image, values[0].GetType()) }) }
func TestVideoPipelineDeserialization(t *testing.T) { const Payload string = `{ "name": "example pipeline", "type": 1, "removeMetadata": false, "steps": [ { "name": "resize image", "type": 0 }, { "name": "compress image", "type": 1 } ] }`
t.Run("Video pipelines deserialization is successful", func(t *testing.T) { values := DeserializePipelines([][]byte{[]byte(Payload)})
assert.Equal(t, 1, len(values), "Output should contain one element") assert.Equal(t, "example pipeline", values[0].GetName()) assert.Equal(t, Video, values[0].GetType()) }) }
func TestResizeImage(t *testing.T) { const Payload string = `{ "name": "example pipeline", "type": 1, "removeMetadata": false, "steps": [ { "name": "resize image", "type": 0, "options": { "width": 1280, "height": 720, "upscale": false } } ] }` const Bucket string = "pipeline_test_01"
t.Run("Image resizing is successful", func(t *testing.T) { wd, _ := os.Getwd() pipe := DeserializePipelines([][]byte{[]byte(Payload)})[0]
storageProvider := storage.GetFileSystemStorageProvider("test", "..")
_, err := storageProvider.StoreExisting(Bucket, "source.jpg", filepath.Join(wd, "../tests/files/900x900.jpg")) assert.Nil(t, err, "Test file should be readable") assert.FileExists(t, storageProvider.GetPath(Bucket, "source.jpg"))
dest, err := pipe.Run("source.jpg", Bucket, storageProvider) assert.Nil(t, err) assert.FileExists(t, storageProvider.GetPath(Bucket, dest))
// clean up
os.Remove(storageProvider.GetPath(Bucket, "source.jpg")) os.Remove(storageProvider.GetPath(Bucket, dest)) }) }
func TestEncodeImageWithJpegQuality(t *testing.T) { const Payload string = `{ "name": "example pipeline", "type": 1, "removeMetadata": false, "steps": [ { "name": "resize image", "type": 0, "options": { "width": 1280, "height": 720, "upscale": false } } ], "output": { "quality": 50 } }` const Bucket string = "pipeline_test_02"
t.Run("Image resizing is successful", func(t *testing.T) { wd, _ := os.Getwd() pipe := DeserializePipelines([][]byte{[]byte(Payload)})[0]
storageProvider := storage.GetFileSystemStorageProvider("test", "..")
_, err := storageProvider.StoreExisting(Bucket, "source.jpg", filepath.Join(wd, "../tests/files/900x900.jpg")) assert.Nil(t, err, "Test file should be readable") assert.FileExists(t, storageProvider.GetPath(Bucket, "source.jpg"))
dest, err := pipe.Run("source.jpg", Bucket, storageProvider) assert.Nil(t, err) assert.FileExists(t, storageProvider.GetPath(Bucket, dest))
// clean up
os.Remove(storageProvider.GetPath(Bucket, "source.jpg")) os.Remove(storageProvider.GetPath(Bucket, dest)) }) }
|