Skip to content

Commit f7ac701

Browse files
committed
simplify unit tests
1 parent cd214e8 commit f7ac701

File tree

3 files changed

+59
-82
lines changed

3 files changed

+59
-82
lines changed

internal/convert/adv2new_test.go

Lines changed: 3 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,13 @@
11
package convert_test
22

33
import (
4-
"encoding/json"
5-
"path/filepath"
6-
"strings"
74
"testing"
85

96
"github.com/mongodb-labs/atlas-cli-plugin-terraform/internal/convert"
10-
"github.com/sebdah/goldie/v2"
11-
"github.com/spf13/afero"
12-
"github.com/stretchr/testify/assert"
13-
"github.com/stretchr/testify/require"
147
)
158

169
func TestAdvancedClusterToNew(t *testing.T) {
17-
const (
18-
root = "testdata/adv2new"
19-
inSuffix = ".in.tf"
20-
outSuffix = ".out.tf"
21-
errFilename = "errors.json"
22-
)
23-
fs := afero.NewOsFs()
24-
errMap := make(map[string]string)
25-
errContent, err := afero.ReadFile(fs, filepath.Join(root, errFilename))
26-
require.NoError(t, err)
27-
err = json.Unmarshal(errContent, &errMap)
28-
require.NoError(t, err)
29-
g := goldie.New(t,
30-
goldie.WithFixtureDir(root),
31-
goldie.WithNameSuffix(outSuffix))
32-
pattern := filepath.Join(root, "*"+inSuffix)
33-
inputFiles, err := afero.Glob(fs, pattern)
34-
require.NoError(t, err)
35-
assert.NotEmpty(t, inputFiles)
36-
for _, inputFile := range inputFiles {
37-
testName := strings.TrimSuffix(filepath.Base(inputFile), inSuffix)
38-
t.Run(testName, func(t *testing.T) {
39-
inConfig, err := afero.ReadFile(fs, inputFile)
40-
require.NoError(t, err)
41-
outConfig, err := convert.AdvancedClusterToNew(inConfig)
42-
if err == nil {
43-
g.Assert(t, testName, outConfig)
44-
} else {
45-
errMsg, found := errMap[testName]
46-
assert.True(t, found, "error not found in file %s for test %s, errMsg: %v", errFilename, testName, err)
47-
assert.Contains(t, err.Error(), errMsg)
48-
}
49-
})
50-
}
10+
runConvertTests(t, "adv2new", func(testName string, inConfig []byte) ([]byte, error) {
11+
return convert.AdvancedClusterToNew(inConfig)
12+
})
5113
}

internal/convert/clu2adv_test.go

Lines changed: 4 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,15 @@
11
package convert_test
22

33
import (
4-
"encoding/json"
5-
"path/filepath"
64
"strings"
75
"testing"
86

97
"github.com/mongodb-labs/atlas-cli-plugin-terraform/internal/convert"
10-
"github.com/sebdah/goldie/v2"
11-
"github.com/spf13/afero"
12-
"github.com/stretchr/testify/assert"
13-
"github.com/stretchr/testify/require"
148
)
159

1610
func TestClusterToAdvancedCluster(t *testing.T) {
17-
const (
18-
root = "testdata/clu2adv"
19-
inSuffix = ".in.tf"
20-
outSuffix = ".out.tf"
21-
errFilename = "errors.json"
22-
)
23-
fs := afero.NewOsFs()
24-
errMap := make(map[string]string)
25-
errContent, err := afero.ReadFile(fs, filepath.Join(root, errFilename))
26-
require.NoError(t, err)
27-
err = json.Unmarshal(errContent, &errMap)
28-
require.NoError(t, err)
29-
g := goldie.New(t,
30-
goldie.WithFixtureDir(root),
31-
goldie.WithNameSuffix(outSuffix))
32-
pattern := filepath.Join(root, "*"+inSuffix)
33-
inputFiles, err := afero.Glob(fs, pattern)
34-
require.NoError(t, err)
35-
assert.NotEmpty(t, inputFiles)
36-
for _, inputFile := range inputFiles {
37-
testName := strings.TrimSuffix(filepath.Base(inputFile), inSuffix)
38-
t.Run(testName, func(t *testing.T) {
39-
inConfig, err := afero.ReadFile(fs, inputFile)
40-
require.NoError(t, err)
41-
includeMoved := strings.Contains(testName, "includeMoved")
42-
outConfig, err := convert.ClusterToAdvancedCluster(inConfig, includeMoved)
43-
if err == nil {
44-
g.Assert(t, testName, outConfig)
45-
} else {
46-
errMsg, found := errMap[testName]
47-
assert.True(t, found, "error not found in file %s for test %s, errMsg: %v", errFilename, testName, err)
48-
assert.Contains(t, err.Error(), errMsg)
49-
}
50-
})
51-
}
11+
runConvertTests(t, "clu2adv", func(testName string, inConfig []byte) ([]byte, error) {
12+
includeMoved := strings.Contains(testName, "includeMoved")
13+
return convert.ClusterToAdvancedCluster(inConfig, includeMoved)
14+
})
5215
}

internal/convert/convert_test.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package convert_test
2+
3+
import (
4+
"encoding/json"
5+
"path/filepath"
6+
"strings"
7+
"testing"
8+
9+
"github.com/sebdah/goldie/v2"
10+
"github.com/spf13/afero"
11+
"github.com/stretchr/testify/assert"
12+
"github.com/stretchr/testify/require"
13+
)
14+
15+
// runConvertTests runs common conversion tests with the given test directory and convert function
16+
func runConvertTests(t *testing.T, testDir string, convert func(testName string, inConfig []byte) ([]byte, error)) {
17+
t.Helper()
18+
const (
19+
inSuffix = ".in.tf"
20+
outSuffix = ".out.tf"
21+
errFilename = "errors.json"
22+
)
23+
root := filepath.Join("testdata", testDir)
24+
fs := afero.NewOsFs()
25+
errMap := make(map[string]string)
26+
errContent, err := afero.ReadFile(fs, filepath.Join(root, errFilename))
27+
require.NoError(t, err)
28+
err = json.Unmarshal(errContent, &errMap)
29+
require.NoError(t, err)
30+
g := goldie.New(t,
31+
goldie.WithFixtureDir(root),
32+
goldie.WithNameSuffix(outSuffix))
33+
pattern := filepath.Join(root, "*"+inSuffix)
34+
inputFiles, err := afero.Glob(fs, pattern)
35+
require.NoError(t, err)
36+
assert.NotEmpty(t, inputFiles)
37+
for _, inputFile := range inputFiles {
38+
testName := strings.TrimSuffix(filepath.Base(inputFile), inSuffix)
39+
t.Run(testName, func(t *testing.T) {
40+
inConfig, err := afero.ReadFile(fs, inputFile)
41+
require.NoError(t, err)
42+
outConfig, err := convert(testName, inConfig)
43+
if err == nil {
44+
g.Assert(t, testName, outConfig)
45+
} else {
46+
errMsg, found := errMap[testName]
47+
assert.True(t, found, "error not found in file %s for test %s, errMsg: %v", errFilename, testName, err)
48+
assert.Contains(t, err.Error(), errMsg)
49+
}
50+
})
51+
}
52+
}

0 commit comments

Comments
 (0)