internal/openapi/generator/data/stringGenerator_test.go   A
last analyzed

Size/Duplication

Total Lines 94
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 6
eloc 62
dl 0
loc 94
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A data.TestStringGenerator_GenerateDataBySchema_SchemaWithOneEnum_EnumValueReturned 0 16 1
A data.TestStringGenerator_GenerateDataBySchema_SchemaWithSupportedFormat_FormattedValueReturned 0 17 2
A data.TestStringGenerator_GenerateDataBySchema_SchemaWithEmptyEnum_RandomTextReturned 0 18 1
A data.TestStringGenerator_GenerateDataBySchema_SchemaWithPattern_RegExpGeneratedValueReturned 0 11 1
A data.TestStringGenerator_GenerateDataBySchema_SchemaWithoutOptions_GeneratedTextReturned 0 13 1
1
package data
2
3
import (
4
	"context"
5
	"testing"
6
7
	"github.com/getkin/kin-openapi/openapi3"
8
	"github.com/stretchr/testify/assert"
9
	"github.com/stretchr/testify/mock"
10
)
11
12
func TestStringGenerator_GenerateDataBySchema_SchemaWithOneEnum_EnumValueReturned(t *testing.T) {
13
	randomMock := &mockRandomGenerator{}
14
	stringGeneratorInstance := &stringGenerator{
15
		random: randomMock,
16
	}
17
	schema := &openapi3.Schema{
18
		Type: "string",
19
		Enum: []interface{}{"enumValue"},
20
	}
21
	randomMock.On("Intn", 1).Return(0).Once()
22
23
	data, err := stringGeneratorInstance.GenerateDataBySchema(context.Background(), schema)
24
25
	randomMock.AssertExpectations(t)
26
	assert.NoError(t, err)
27
	assert.Equal(t, "enumValue", data)
28
}
29
30
func TestStringGenerator_GenerateDataBySchema_SchemaWithEmptyEnum_RandomTextReturned(t *testing.T) {
31
	randomMock := &mockRandomGenerator{}
32
	textGeneratorMock := &mockSchemaGenerator{}
33
	stringGeneratorInstance := &stringGenerator{
34
		random:        randomMock,
35
		textGenerator: textGeneratorMock,
36
	}
37
	schema := &openapi3.Schema{
38
		Type: "string",
39
		Enum: []interface{}{},
40
	}
41
	textGeneratorMock.On("GenerateDataBySchema", mock.Anything, schema).Return("generatedText", nil).Once()
42
43
	data, err := stringGeneratorInstance.GenerateDataBySchema(context.Background(), schema)
44
45
	textGeneratorMock.AssertExpectations(t)
46
	assert.NoError(t, err)
47
	assert.NotEqual(t, "enumValue", data)
48
}
49
50
func TestStringGenerator_GenerateDataBySchema_SchemaWithPattern_RegExpGeneratedValueReturned(t *testing.T) {
51
	stringGeneratorInstance := &stringGenerator{}
52
	schema := &openapi3.Schema{
53
		Type:    "string",
54
		Pattern: "^ABC$",
55
	}
56
57
	data, err := stringGeneratorInstance.GenerateDataBySchema(context.Background(), schema)
58
59
	assert.NoError(t, err)
60
	assert.Equal(t, "ABC", data)
61
}
62
63
func TestStringGenerator_GenerateDataBySchema_SchemaWithSupportedFormat_FormattedValueReturned(t *testing.T) {
64
	stringGeneratorInstance := &stringGenerator{
65
		formatGenerators: map[string]stringGeneratorFunction{
66
			"format": func(_ int, _ int) string {
67
				return "formatValue"
68
			},
69
		},
70
	}
71
	schema := &openapi3.Schema{
72
		Type:   "string",
73
		Format: "format",
74
	}
75
76
	data, err := stringGeneratorInstance.GenerateDataBySchema(context.Background(), schema)
77
78
	assert.NoError(t, err)
79
	assert.Equal(t, "formatValue", data)
80
}
81
82
func TestStringGenerator_GenerateDataBySchema_SchemaWithoutOptions_GeneratedTextReturned(t *testing.T) {
83
	textGeneratorMock := &mockSchemaGenerator{}
84
	stringGeneratorInstance := &stringGenerator{
85
		textGenerator: textGeneratorMock,
86
	}
87
	schema := &openapi3.Schema{Type: "string"}
88
	textGeneratorMock.On("GenerateDataBySchema", mock.Anything, schema).Return("generatedText", nil).Once()
89
90
	data, err := stringGeneratorInstance.GenerateDataBySchema(context.Background(), schema)
91
92
	textGeneratorMock.AssertExpectations(t)
93
	assert.NoError(t, err)
94
	assert.Equal(t, "generatedText", data)
95
}
96