Skip to content

Commit 26b2bc8

Browse files
added unit tests
1 parent ce4a6bd commit 26b2bc8

File tree

3 files changed

+68741
-3
lines changed

3 files changed

+68741
-3
lines changed

tools/cli/internal/cli/versions/versions.go

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ func (o *Opts) Run() error {
4646

4747
var versions []string
4848
versions, err = openapi.ExtractVersionsWithEnv(specInfo.Spec, o.env)
49-
5049
if err != nil {
5150
return err
5251
}
@@ -55,6 +54,7 @@ func (o *Opts) Run() error {
5554
return fmt.Errorf("no versions found in the OpenAPI specification")
5655
}
5756

57+
versions = o.filterStabilityLevelVersions(versions)
5858
bytes, err := o.versionsAsBytes(versions)
5959
if err != nil {
6060
return err
@@ -68,6 +68,25 @@ func (o *Opts) Run() error {
6868
return nil
6969
}
7070

71+
func (o *Opts) filterStabilityLevelVersions(apiVersions []string) []string {
72+
if o.stabilityLevel == "" || apiVersions == nil {
73+
return apiVersions
74+
}
75+
76+
var out []string
77+
for _, v := range apiVersions {
78+
if o.stabilityLevel == apiversion.PreviewStabilityLevel && strings.Contains(v, "preview") {
79+
out = append(out, v)
80+
}
81+
82+
if o.stabilityLevel == apiversion.StableStabilityLevel && !strings.Contains(v, "preview") {
83+
out = append(out, v)
84+
}
85+
}
86+
87+
return out
88+
}
89+
7190
func (o *Opts) versionsAsBytes(versions []string) ([]byte, error) {
7291
data, err := json.MarshalIndent(versions, "", " ")
7392
if err != nil {

tools/cli/internal/cli/versions/versions_test.go

Lines changed: 76 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import (
2121
"github.com/stretchr/testify/assert"
2222
)
2323

24-
func TestVersions(t *testing.T) {
24+
func TestVersions_Run(t *testing.T) {
2525
fs := afero.NewMemMapFs()
2626
opts := &Opts{
2727
basePath: "../../../test/data/base_spec.json",
@@ -43,7 +43,7 @@ func TestVersions(t *testing.T) {
4343
assert.Contains(t, string(b), "2023-02-01")
4444
}
4545

46-
func TestVersionWithEnv(t *testing.T) {
46+
func TestVersion_RunWithEnv(t *testing.T) {
4747
fs := afero.NewMemMapFs()
4848
opts := &Opts{
4949
basePath: "../../../test/data/base_spec.json",
@@ -65,3 +65,77 @@ func TestVersionWithEnv(t *testing.T) {
6565
assert.NotEmpty(t, b)
6666
assert.Contains(t, string(b), "2023-02-01")
6767
}
68+
69+
func TestVersion_RunWithPreview(t *testing.T) {
70+
fs := afero.NewMemMapFs()
71+
opts := &Opts{
72+
basePath: "../../../test/data/base_spec_with_preview.json",
73+
outputPath: "foas.json",
74+
fs: fs,
75+
env: "staging",
76+
}
77+
78+
if err := opts.Run(); err != nil {
79+
t.Fatalf("Run() unexpected error: %v", err)
80+
}
81+
82+
b, err := afero.ReadFile(fs, opts.outputPath)
83+
if err != nil {
84+
t.Fatalf("ReadFile() unexpected error: %v", err)
85+
}
86+
87+
// Check initial versions
88+
assert.NotEmpty(t, b)
89+
assert.Contains(t, string(b), "2023-02-01")
90+
assert.Contains(t, string(b), "preview")
91+
}
92+
93+
func TestVersion_RunStabilityLevelPreview(t *testing.T) {
94+
fs := afero.NewMemMapFs()
95+
opts := &Opts{
96+
basePath: "../../../test/data/base_spec_with_preview.json",
97+
outputPath: "foas.json",
98+
fs: fs,
99+
env: "staging",
100+
stabilityLevel: "PREVIEW",
101+
}
102+
103+
if err := opts.Run(); err != nil {
104+
t.Fatalf("Run() unexpected error: %v", err)
105+
}
106+
107+
b, err := afero.ReadFile(fs, opts.outputPath)
108+
if err != nil {
109+
t.Fatalf("ReadFile() unexpected error: %v", err)
110+
}
111+
112+
// Check initial versions
113+
assert.NotEmpty(t, b)
114+
assert.NotContains(t, string(b), "2023-02-01")
115+
assert.Contains(t, string(b), "preview")
116+
}
117+
118+
func TestVersion_RunStabilityLevelStable(t *testing.T) {
119+
fs := afero.NewMemMapFs()
120+
opts := &Opts{
121+
basePath: "../../../test/data/base_spec_with_preview.json",
122+
outputPath: "foas.json",
123+
fs: fs,
124+
env: "staging",
125+
stabilityLevel: "STABLE",
126+
}
127+
128+
if err := opts.Run(); err != nil {
129+
t.Fatalf("Run() unexpected error: %v", err)
130+
}
131+
132+
b, err := afero.ReadFile(fs, opts.outputPath)
133+
if err != nil {
134+
t.Fatalf("ReadFile() unexpected error: %v", err)
135+
}
136+
137+
// Check initial versions
138+
assert.NotEmpty(t, b)
139+
assert.Contains(t, string(b), "2023-02-01")
140+
assert.NotContains(t, string(b), "preview")
141+
}

0 commit comments

Comments
 (0)