Skip to content

Commit

Permalink
[issues-65] add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
siller174 committed Feb 26, 2024
1 parent 0d86f6a commit 703103c
Show file tree
Hide file tree
Showing 3 changed files with 226 additions and 26 deletions.
40 changes: 22 additions & 18 deletions builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,17 +87,30 @@ func createDefaultTests(m *HTTPTestMaker) []*Test {
}

func createDefaultTest(m *HTTPTestMaker) *Test {
after := make([]AfterExecute, 0, len(m.middleware.After))
after = append(after, m.middleware.After...)
return &Test{
httpClient: m.httpClient,
jsonMarshaler: m.jsonMarshaler,
Middleware: createMiddlewareFromTemplate(m.middleware),
AllureStep: new(AllureStep),
Request: &Request{
Repeat: new(RequestRepeatPolitic),
},
Expect: &Expect{JSONSchema: new(ExpectJSONSchema)},
}
}

afterT := make([]AfterExecuteT, 0, len(m.middleware.AfterT))
afterT = append(afterT, m.middleware.AfterT...)
func createMiddlewareFromTemplate(m *Middleware) *Middleware {
after := make([]AfterExecute, 0, len(m.After))
after = append(after, m.After...)

before := make([]BeforeExecute, 0, len(m.middleware.Before))
before = append(before, m.middleware.Before...)
afterT := make([]AfterExecuteT, 0, len(m.AfterT))
afterT = append(afterT, m.AfterT...)

beforeT := make([]BeforeExecuteT, 0, len(m.middleware.BeforeT))
beforeT = append(beforeT, m.middleware.BeforeT...)
before := make([]BeforeExecute, 0, len(m.Before))
before = append(before, m.Before...)

beforeT := make([]BeforeExecuteT, 0, len(m.BeforeT))
beforeT = append(beforeT, m.BeforeT...)

middleware := &Middleware{
After: after,
Expand All @@ -106,16 +119,7 @@ func createDefaultTest(m *HTTPTestMaker) *Test {
BeforeT: beforeT,
}

return &Test{
httpClient: m.httpClient,
jsonMarshaler: m.jsonMarshaler,
Middleware: middleware,
AllureStep: new(AllureStep),
Request: &Request{
Repeat: new(RequestRepeatPolitic),
},
Expect: &Expect{JSONSchema: new(ExpectJSONSchema)},
}
return middleware
}

func (qt *cute) Create() MiddlewareRequest {
Expand Down
18 changes: 10 additions & 8 deletions builder_table.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,24 +53,26 @@ func (qt *cute) PutTests(tests ...*Test) TableTest {
return qt
}

func (qt *cute) fillBaseProps(param *Test) {
func (qt *cute) fillBaseProps(t *Test) {
if qt.baseProps == nil {
return
}

if qt.baseProps.httpClient != nil {
param.httpClient = qt.baseProps.httpClient
t.httpClient = qt.baseProps.httpClient
}

if qt.baseProps.jsonMarshaler != nil {
param.jsonMarshaler = qt.baseProps.jsonMarshaler
t.jsonMarshaler = qt.baseProps.jsonMarshaler
}

if qt.baseProps.middleware != nil {
param.Middleware.After = append(param.Middleware.After, qt.baseProps.middleware.After...)
param.Middleware.AfterT = append(param.Middleware.AfterT, qt.baseProps.middleware.AfterT...)
param.Middleware.Before = append(param.Middleware.Before, qt.baseProps.middleware.Before...)
param.Middleware.BeforeT = append(param.Middleware.BeforeT, qt.baseProps.middleware.BeforeT...)
if t.Middleware == nil {
t.Middleware = createMiddlewareFromTemplate(qt.baseProps.middleware)
} else {
t.Middleware.After = append(t.Middleware.After, qt.baseProps.middleware.After...)
t.Middleware.AfterT = append(t.Middleware.AfterT, qt.baseProps.middleware.AfterT...)
t.Middleware.Before = append(t.Middleware.Before, qt.baseProps.middleware.Before...)
t.Middleware.BeforeT = append(t.Middleware.BeforeT, qt.baseProps.middleware.BeforeT...)
}
}

Expand Down
194 changes: 194 additions & 0 deletions builder_table_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
package cute

import (
"net/http"
"testing"

"github.com/stretchr/testify/require"
)

func TestFillBaseProps_WhenBasePropsIsNil(t *testing.T) {
testObj := &Test{}
cuteObj := &cute{}

cuteObj.fillBaseProps(testObj)

require.Nil(t, testObj.httpClient)
require.Nil(t, testObj.jsonMarshaler)
require.Nil(t, testObj.Middleware)
}

func TestFillBaseProps_WhenBasePropsIsNotNil(t *testing.T) {
testObj := &Test{}
cuteObj := &cute{}

qtBaseProps := &HTTPTestMaker{
httpClient: &http.Client{},
jsonMarshaler: &jsonMarshaler{},
middleware: &Middleware{
After: []AfterExecute{
func(*http.Response, []error) error {
return nil
},
func(*http.Response, []error) error {
return nil
},
},
AfterT: []AfterExecuteT{func(T, *http.Response, []error) error { return nil }},
Before: []BeforeExecute{
func(*http.Request) error {
return nil
},
func(*http.Request) error {
return nil
},
},
BeforeT: []BeforeExecuteT{
func(T, *http.Request) error { return nil },
func(t T, request *http.Request) error {
return nil
},
},
},
}
cuteObj.baseProps = qtBaseProps

cuteObj.fillBaseProps(testObj)

require.Equal(t, qtBaseProps.httpClient, testObj.httpClient)
require.Equal(t, qtBaseProps.jsonMarshaler, testObj.jsonMarshaler)
require.Len(t, testObj.Middleware.After, len(qtBaseProps.middleware.After))
require.Len(t, testObj.Middleware.AfterT, len(qtBaseProps.middleware.AfterT))
require.Len(t, testObj.Middleware.Before, len(qtBaseProps.middleware.Before))
require.Len(t, testObj.Middleware.BeforeT, len(qtBaseProps.middleware.BeforeT))
}

func TestFillBaseProps_WhenBasePropsIsNotNil_After(t *testing.T) {
testObj := &Test{
Middleware: &Middleware{
After: []AfterExecute{
func(response *http.Response, errors []error) error {
return nil
},
},
},
}
cuteObj := &cute{}

qtBaseProps := &HTTPTestMaker{
httpClient: &http.Client{},
jsonMarshaler: &jsonMarshaler{},
middleware: &Middleware{
After: []AfterExecute{
func(*http.Response, []error) error {
return nil
},
func(*http.Response, []error) error {
return nil
},
},
BeforeT: []BeforeExecuteT{
func(T, *http.Request) error { return nil },
func(t T, request *http.Request) error {
return nil
},
},
},
}
cuteObj.baseProps = qtBaseProps

cuteObj.fillBaseProps(testObj)

require.Equal(t, qtBaseProps.httpClient, testObj.httpClient)
require.Equal(t, qtBaseProps.jsonMarshaler, testObj.jsonMarshaler)
require.Len(t, testObj.Middleware.After, len(qtBaseProps.middleware.After)+1)
require.Len(t, testObj.Middleware.AfterT, len(qtBaseProps.middleware.AfterT))
require.Len(t, testObj.Middleware.Before, len(qtBaseProps.middleware.Before))
require.Len(t, testObj.Middleware.BeforeT, len(qtBaseProps.middleware.BeforeT))
}

func TestFillBaseProps_WhenBasePropsIsNotNil_Middleware(t *testing.T) {
testObj := &Test{
Middleware: &Middleware{
After: []AfterExecute{
func(response *http.Response, errors []error) error {
return nil
},
func(response *http.Response, errors []error) error {
return nil
},
},
AfterT: []AfterExecuteT{
func(t T, response *http.Response, errors []error) error {
return nil
},
func(t T, response *http.Response, errors []error) error {
return nil
},
func(t T, response *http.Response, errors []error) error {
return nil
},
},
Before: []BeforeExecute{
func(request *http.Request) error {
return nil
},
func(request *http.Request) error {
return nil
},
func(request *http.Request) error {
return nil
},
func(request *http.Request) error {
return nil
},
},
BeforeT: []BeforeExecuteT{
func(t T, request *http.Request) error {
return nil
},
},
},
}
cuteObj := &cute{}

qtBaseProps := &HTTPTestMaker{
httpClient: &http.Client{},
jsonMarshaler: &jsonMarshaler{},
middleware: &Middleware{
After: []AfterExecute{
func(*http.Response, []error) error {
return nil
},
func(*http.Response, []error) error {
return nil
},
},
AfterT: []AfterExecuteT{func(T, *http.Response, []error) error { return nil }},
Before: []BeforeExecute{
func(*http.Request) error {
return nil
},
func(*http.Request) error {
return nil
},
},
BeforeT: []BeforeExecuteT{
func(T, *http.Request) error { return nil },
func(t T, request *http.Request) error {
return nil
},
},
},
}
cuteObj.baseProps = qtBaseProps

cuteObj.fillBaseProps(testObj)

require.Equal(t, qtBaseProps.httpClient, testObj.httpClient)
require.Equal(t, qtBaseProps.jsonMarshaler, testObj.jsonMarshaler)
require.Len(t, testObj.Middleware.After, len(qtBaseProps.middleware.After)+2)
require.Len(t, testObj.Middleware.AfterT, len(qtBaseProps.middleware.AfterT)+3)
require.Len(t, testObj.Middleware.Before, len(qtBaseProps.middleware.Before)+4)
require.Len(t, testObj.Middleware.BeforeT, len(qtBaseProps.middleware.BeforeT)+1)
}

0 comments on commit 703103c

Please sign in to comment.