data.TestOneOfGeneratorSuite   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nop 1
dl 0
loc 2
rs 10
c 0
b 0
f 0
1
package data
2
3
import (
4
	"context"
5
	"testing"
6
7
	"github.com/getkin/kin-openapi/openapi3"
8
	"github.com/stretchr/testify/mock"
9
	"github.com/stretchr/testify/suite"
10
)
11
12
type OneOfGeneratorSuite struct {
13
	suite.Suite
14
15
	random          *mockRandomGenerator
16
	schemaGenerator *mockSchemaGenerator
17
18
	generator *oneOfGenerator
19
}
20
21
func (suite *OneOfGeneratorSuite) SetupTest() {
22
	suite.random = &mockRandomGenerator{}
23
	suite.schemaGenerator = &mockSchemaGenerator{}
24
25
	suite.generator = &oneOfGenerator{
26
		random:          suite.random,
27
		schemaGenerator: suite.schemaGenerator,
28
	}
29
}
30
31
func TestOneOfGeneratorSuite(t *testing.T) {
32
	suite.Run(t, new(OneOfGeneratorSuite))
33
}
34
35
func (suite *OneOfGeneratorSuite) TestGenerateDataBySchema_EmptySchemas_EmptyObject() {
36
	schema := openapi3.NewSchema()
37
	schema.OneOf = []*openapi3.SchemaRef{}
38
39
	data, err := suite.generator.GenerateDataBySchema(context.Background(), schema)
40
41
	suite.NoError(err)
42
	suite.Len(data, 0)
43
}
44
45
func (suite *OneOfGeneratorSuite) TestGenerateDataBySchema_TwoSchemasAndRandomIndexIsFirst_DataGeneratedForFirstSchema() {
46
	firstSchema := openapi3.NewSchema()
47
	secondSchema := openapi3.NewSchema()
48
	schema := openapi3.NewSchema()
49
	schema.OneOf = []*openapi3.SchemaRef{
50
		openapi3.NewSchemaRef("", firstSchema),
51
		openapi3.NewSchemaRef("", secondSchema),
52
	}
53
	suite.random.On("Intn", 2).Return(0).Once()
54
	suite.schemaGenerator.On("GenerateDataBySchema", mock.Anything, firstSchema).Return("data", nil).Once()
55
56
	data, err := suite.generator.GenerateDataBySchema(context.Background(), schema)
57
58
	suite.NoError(err)
59
	suite.Equal("data", data)
60
}
61