mirror of
https://github.com/gotenberg/gotenberg.git
synced 2026-08-14 03:12:14 +01:00
feat: add 7.x source code
This commit is contained in:
215
pkg/modules/pdfengines/multi_test.go
Normal file
215
pkg/modules/pdfengines/multi_test.go
Normal file
@@ -0,0 +1,215 @@
|
||||
package pdfengines
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/gotenberg/gotenberg/v7/pkg/gotenberg"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
func TestNewMultiPDFEngines(t *testing.T) {
|
||||
engine1 := &ProtoPDFEngine{
|
||||
merge: func(_ context.Context, _ *zap.Logger, _ []string, _ string) error {
|
||||
return nil
|
||||
},
|
||||
convert: func(_ context.Context, _ *zap.Logger, _, _, _ string) error {
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
engine2 := &ProtoPDFEngine{
|
||||
merge: func(_ context.Context, _ *zap.Logger, _ []string, _ string) error {
|
||||
return errors.New("foo")
|
||||
},
|
||||
convert: func(_ context.Context, _ *zap.Logger, _, _, _ string) error {
|
||||
return errors.New("foo")
|
||||
},
|
||||
}
|
||||
|
||||
multi := newMultiPDFEngines(engine1, engine2)
|
||||
|
||||
if len(multi.engines) != 2 {
|
||||
t.Fatalf("expected %d engines but got %d", 2, len(multi.engines))
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(engine1, multi.engines[0]) {
|
||||
t.Errorf("expected %v, but got: %v", engine1, multi.engines[0])
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(engine2, multi.engines[1]) {
|
||||
t.Errorf("expected %v, but got: %v", engine2, multi.engines[1])
|
||||
}
|
||||
}
|
||||
|
||||
func TestMultiPDFEngines_Merge(t *testing.T) {
|
||||
for i, tc := range []struct {
|
||||
ctx context.Context
|
||||
engines []gotenberg.PDFEngine
|
||||
expectErr bool
|
||||
}{
|
||||
{
|
||||
ctx: context.TODO(),
|
||||
engines: func() []gotenberg.PDFEngine {
|
||||
return []gotenberg.PDFEngine{
|
||||
ProtoPDFEngine{
|
||||
merge: func(_ context.Context, _ *zap.Logger, _ []string, _ string) error {
|
||||
return nil
|
||||
},
|
||||
},
|
||||
}
|
||||
}(),
|
||||
},
|
||||
{
|
||||
ctx: context.TODO(),
|
||||
engines: func() []gotenberg.PDFEngine {
|
||||
return []gotenberg.PDFEngine{
|
||||
ProtoPDFEngine{
|
||||
merge: func(_ context.Context, _ *zap.Logger, _ []string, _ string) error {
|
||||
return errors.New("foo")
|
||||
},
|
||||
},
|
||||
ProtoPDFEngine{
|
||||
merge: func(_ context.Context, _ *zap.Logger, _ []string, _ string) error {
|
||||
return nil
|
||||
},
|
||||
},
|
||||
}
|
||||
}(),
|
||||
},
|
||||
{
|
||||
ctx: context.TODO(),
|
||||
engines: func() []gotenberg.PDFEngine {
|
||||
return []gotenberg.PDFEngine{
|
||||
ProtoPDFEngine{
|
||||
merge: func(_ context.Context, _ *zap.Logger, _ []string, _ string) error {
|
||||
return errors.New("foo")
|
||||
},
|
||||
},
|
||||
ProtoPDFEngine{
|
||||
merge: func(_ context.Context, _ *zap.Logger, _ []string, _ string) error {
|
||||
return errors.New("bar")
|
||||
},
|
||||
},
|
||||
}
|
||||
}(),
|
||||
expectErr: true,
|
||||
},
|
||||
{
|
||||
ctx: func() context.Context {
|
||||
ctx, cancel := context.WithCancel(context.TODO())
|
||||
defer cancel()
|
||||
|
||||
return ctx
|
||||
}(),
|
||||
engines: func() []gotenberg.PDFEngine {
|
||||
return []gotenberg.PDFEngine{
|
||||
ProtoPDFEngine{
|
||||
merge: func(_ context.Context, _ *zap.Logger, _ []string, _ string) error {
|
||||
return nil
|
||||
},
|
||||
},
|
||||
}
|
||||
}(),
|
||||
expectErr: true,
|
||||
},
|
||||
} {
|
||||
multi := newMultiPDFEngines(tc.engines...)
|
||||
err := multi.Merge(tc.ctx, nil, nil, "")
|
||||
|
||||
if tc.expectErr && err == nil {
|
||||
t.Errorf("test %d: expected error but got: %v", i, err)
|
||||
}
|
||||
|
||||
if !tc.expectErr && err != nil {
|
||||
t.Errorf("test %d: expected no error but got: %v", i, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestMultiPDFEngines_Convert(t *testing.T) {
|
||||
for i, tc := range []struct {
|
||||
ctx context.Context
|
||||
engines []gotenberg.PDFEngine
|
||||
expectErr bool
|
||||
}{
|
||||
{
|
||||
ctx: context.TODO(),
|
||||
engines: func() []gotenberg.PDFEngine {
|
||||
return []gotenberg.PDFEngine{
|
||||
ProtoPDFEngine{
|
||||
convert: func(_ context.Context, _ *zap.Logger, _, _, _ string) error {
|
||||
return nil
|
||||
},
|
||||
},
|
||||
}
|
||||
}(),
|
||||
},
|
||||
{
|
||||
ctx: context.TODO(),
|
||||
engines: func() []gotenberg.PDFEngine {
|
||||
return []gotenberg.PDFEngine{
|
||||
ProtoPDFEngine{
|
||||
convert: func(_ context.Context, _ *zap.Logger, _, _, _ string) error {
|
||||
return errors.New("foo")
|
||||
},
|
||||
},
|
||||
ProtoPDFEngine{
|
||||
convert: func(_ context.Context, _ *zap.Logger, _, _, _ string) error {
|
||||
return nil
|
||||
},
|
||||
},
|
||||
}
|
||||
}(),
|
||||
},
|
||||
{
|
||||
ctx: context.TODO(),
|
||||
engines: func() []gotenberg.PDFEngine {
|
||||
return []gotenberg.PDFEngine{
|
||||
ProtoPDFEngine{
|
||||
convert: func(_ context.Context, _ *zap.Logger, _, _, _ string) error {
|
||||
return errors.New("foo")
|
||||
},
|
||||
},
|
||||
ProtoPDFEngine{
|
||||
convert: func(_ context.Context, _ *zap.Logger, _, _, _ string) error {
|
||||
return errors.New("bar")
|
||||
},
|
||||
},
|
||||
}
|
||||
}(),
|
||||
expectErr: true,
|
||||
},
|
||||
{
|
||||
ctx: func() context.Context {
|
||||
ctx, cancel := context.WithCancel(context.TODO())
|
||||
defer cancel()
|
||||
|
||||
return ctx
|
||||
}(),
|
||||
engines: func() []gotenberg.PDFEngine {
|
||||
return []gotenberg.PDFEngine{
|
||||
ProtoPDFEngine{
|
||||
convert: func(_ context.Context, _ *zap.Logger, _, _, _ string) error {
|
||||
return nil
|
||||
},
|
||||
},
|
||||
}
|
||||
}(),
|
||||
expectErr: true,
|
||||
},
|
||||
} {
|
||||
multi := newMultiPDFEngines(tc.engines...)
|
||||
err := multi.Convert(tc.ctx, nil, "", "", "")
|
||||
|
||||
if tc.expectErr && err == nil {
|
||||
t.Errorf("test %d: expected error but got: %v", i, err)
|
||||
}
|
||||
|
||||
if !tc.expectErr && err != nil {
|
||||
t.Errorf("test %d: expected no error but got: %v", i, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user