Select Git revision
server_test.go
server_test.go 3.40 KiB
package extension
import (
"context"
"reflect"
"strings"
"testing"
"git.perx.ru/perxis/perxis-go/pkg/errors"
)
func TestGetResults(t *testing.T) {
getDummyExtension := func(name string, wantErr ...bool) Extension {
ext := &testServerExtension{name: name}
if len(wantErr) > 0 {
ext.err = errors.WithDetail(errors.New("some err"), "Ошибка")
}
return ext
}
tests := []struct {
name string
services []Extension
extensions []string
fn func(svc Extension) error
want []*RequestResult
}{
{
name: "one extension without errors",
services: []Extension{getDummyExtension("a"), getDummyExtension("b")},
extensions: []string{"a"},
fn: func(svc Extension) error { return nil },
want: []*RequestResult{
{Extension: "a", State: RequestOK},
},
},
{
name: "multiple extensions without errors",
services: []Extension{getDummyExtension("a"), getDummyExtension("b"), getDummyExtension("c")},
extensions: []string{"a", "c"},
fn: func(svc Extension) error { return nil },
want: []*RequestResult{
{Extension: "a", State: RequestOK},
{Extension: "c", State: RequestOK},
},
},
{
name: "multiple extensions, one returns error",
services: []Extension{getDummyExtension("a"), getDummyExtension("b"), getDummyExtension("c", true)},
extensions: []string{"a", "c"},
fn: func(svc Extension) error { return svc.Install(nil, nil) },
want: []*RequestResult{
{Extension: "a", State: RequestOK},
{Extension: "c", State: RequestError, Error: "some err", Msg: "Ошибка\n"},
},
},
{
name: "multiple extensions, all return error",
services: []Extension{getDummyExtension("a", true), getDummyExtension("b", true), getDummyExtension("c", true)},
extensions: []string{"a", "b", "c"},
fn: func(svc Extension) error { return svc.Install(nil, nil) },
want: []*RequestResult{
{Extension: "a", State: RequestError, Error: "some err", Msg: "Ошибка\n"},
{Extension: "b", State: RequestError, Error: "some err", Msg: "Ошибка\n"},
{Extension: "c", State: RequestError, Error: "some err", Msg: "Ошибка\n"},
},
},