github.com/kumasuke120/mockuma@v1.1.9/internal/mckmaps/preprocessor_test.go (about)

     1  package mckmaps
     2  
     3  import (
     4  	"io/ioutil"
     5  	"path/filepath"
     6  	"testing"
     7  
     8  	"github.com/kumasuke120/mockuma/internal/myjson"
     9  	"github.com/kumasuke120/mockuma/internal/myos"
    10  	"github.com/kumasuke120/mockuma/internal/types"
    11  	"github.com/stretchr/testify/assert"
    12  	"github.com/stretchr/testify/require"
    13  )
    14  
    15  //noinspection GoImportUsedAsName
    16  func TestCommentFilter(t *testing.T) {
    17  	assert := assert.New(t)
    18  	require := require.New(t)
    19  
    20  	fb0, err := ioutil.ReadFile(filepath.Join("testdata", "preprocessor", "removeComment-0.json"))
    21  	require.Nil(err)
    22  	j0, err := myjson.Unmarshal(fb0)
    23  	require.Nil(err)
    24  
    25  	fbe, err := ioutil.ReadFile(filepath.Join("testdata", "preprocessor", "removeComment-expected.json"))
    26  	require.Nil(err)
    27  	je, err := myjson.Unmarshal(fbe)
    28  	require.Nil(err)
    29  
    30  	ja, err := types.DoFiltersOnV(j0, &dCommentProcessor{})
    31  	assert.Nil(err)
    32  	assert.Equal(je, ja)
    33  }
    34  
    35  //noinspection GoImportUsedAsName
    36  func TestLoadFileFilter(t *testing.T) {
    37  	assert := assert.New(t)
    38  	require := require.New(t)
    39  
    40  	require.Nil(myos.InitWd())
    41  	oldWd := myos.GetWd()
    42  
    43  	fb0, err := ioutil.ReadFile(filepath.Join("testdata", "preprocessor", "loadFile-0.json"))
    44  	require.Nil(err)
    45  	j0, err := myjson.Unmarshal(fb0)
    46  	require.Nil(err)
    47  
    48  	fbe, err := ioutil.ReadFile(filepath.Join("testdata", "preprocessor", "loadFile-expected.json"))
    49  	require.Nil(err)
    50  	je, err := myjson.Unmarshal(fbe)
    51  	require.Nil(err)
    52  
    53  	err = myos.Chdir(filepath.Join(oldWd, "testdata", "preprocessor"))
    54  	require.Nil(err)
    55  
    56  	ja, err := types.DoFiltersOnV(j0, makeDFileProcessor())
    57  	if assert.Nil(err) {
    58  		assert.Equal(je, ja)
    59  	}
    60  
    61  	require.Nil(myos.Chdir(oldWd))
    62  }
    63  
    64  //noinspection GoImportUsedAsName
    65  func TestParseRegexp(t *testing.T) {
    66  	assert := assert.New(t)
    67  	require := require.New(t)
    68  
    69  	fb0, err := ioutil.ReadFile(filepath.Join("testdata", "preprocessor", "parseRegexp.json"))
    70  	require.Nil(err)
    71  	j0, err := myjson.Unmarshal(fb0)
    72  	require.Nil(err)
    73  
    74  	ja0, e0 := types.DoFiltersOnV(j0, &dJSONProcessor{}, makeDRegexpProcessor())
    75  	if assert.Nil(e0) && assert.IsType(myjson.Array{}, ja0) {
    76  		_ja0 := ja0.(myjson.Array)
    77  		assert.IsType(myjson.ExtRegexp(nil), _ja0[0])
    78  		o1, e1 := myjson.ToObject(_ja0.Get(1))
    79  		if assert.Nil(e1) {
    80  			assert.IsType(myjson.ExtRegexp(nil), o1.Get("r"))
    81  		}
    82  		o2, e2 := myjson.ToObject(o1.Get("j").(myjson.ExtJSONMatcher).Unwrap())
    83  		if assert.Nil(e2) {
    84  			assert.IsType(myjson.ExtRegexp(nil), o2.Get("r"))
    85  		}
    86  	}
    87  }
    88  
    89  //noinspection GoImportUsedAsName
    90  func TestRenderTemplate(t *testing.T) {
    91  	assert := assert.New(t)
    92  	require := require.New(t)
    93  
    94  	require.Nil(myos.InitWd())
    95  	oldWd := myos.GetWd()
    96  
    97  	fb0, err := ioutil.ReadFile(filepath.Join("testdata", "preprocessor", "renderTemplate.json"))
    98  	require.Nil(err)
    99  	j0, err := myjson.Unmarshal(fb0)
   100  	require.Nil(err)
   101  
   102  	fbe, err := ioutil.ReadFile(filepath.Join("testdata", "preprocessor", "renderTemplate-expected.json"))
   103  	require.Nil(err)
   104  	je, err := myjson.Unmarshal(fbe)
   105  	require.Nil(err)
   106  
   107  	err = myos.Chdir(filepath.Join(oldWd, "testdata", "preprocessor"))
   108  	require.Nil(err)
   109  
   110  	ja, err := types.DoFiltersOnV(j0, makeDTemplateProcessor())
   111  	if assert.Nil(err) {
   112  		assert.Equal(je, ja)
   113  	}
   114  
   115  	require.Nil(myos.Chdir(oldWd))
   116  }
   117  
   118  //noinspection GoImportUsedAsName
   119  func TestToJSONMatcher(t *testing.T) {
   120  	assert := assert.New(t)
   121  	require := require.New(t)
   122  
   123  	fb0, err := ioutil.ReadFile(filepath.Join("testdata", "preprocessor", "toJSONMatcher.json"))
   124  	require.Nil(err)
   125  	j0, err := myjson.Unmarshal(fb0)
   126  	require.Nil(err)
   127  
   128  	expected := myjson.MakeExtJSONMatcher(myjson.Object{
   129  		"a": myjson.MakeExtJSONMatcher(myjson.Object{
   130  			"v": myjson.Number(1),
   131  		}),
   132  		"b1": myjson.Array{
   133  			nil,
   134  			myjson.Number(1),
   135  			myjson.Number(2),
   136  		},
   137  		"b2": myjson.Array{
   138  			myjson.MakeExtJSONMatcher(myjson.Object{
   139  				"v": myjson.String("1"),
   140  			}),
   141  			myjson.MakeExtJSONMatcher(myjson.Object{
   142  				"v": myjson.String("2"),
   143  			}),
   144  		},
   145  		"b3": myjson.MakeExtJSONMatcher(myjson.Array{
   146  			myjson.Number(1),
   147  			myjson.Number(2),
   148  		}),
   149  		"$c": myjson.String("3"),
   150  	})
   151  
   152  	ja, err := types.DoFiltersOnV(j0, &dJSONProcessor{})
   153  	if assert.Nil(err) {
   154  		assert.Equal(expected, ja)
   155  	}
   156  }