github.com/TIBCOSoftware/flogo-lib@v0.5.9/core/mapper/exprmapper/json/field/field_test.go (about)

     1  package field
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  )
     8  
     9  func TestGetSpecialFields(t *testing.T) {
    10  	path := `Object.Maps3["dd*cc"]["y.x"]["d.d"]`
    11  	fields, err := GetAllspecialFields(path)
    12  	assert.Nil(t, err)
    13  	assert.Equal(t, []string{"Object", "Maps3", "dd*cc", "y.x", "d.d"}, fields)
    14  }
    15  
    16  func TestMapTo(t *testing.T) {
    17  	path := `Object`
    18  	fields, err := GetAllspecialFields(path)
    19  	assert.Nil(t, err)
    20  	assert.Equal(t, []string{"Object"}, fields)
    21  }
    22  
    23  func TestMapToArrayIndex(t *testing.T) {
    24  	path := `[0]`
    25  	fields, err := GetAllspecialFields(path)
    26  	assert.Nil(t, err)
    27  	assert.Equal(t, []string{"[0]"}, fields)
    28  }
    29  
    30  func TestGetSpecialFields2(t *testing.T) {
    31  	path := `Id_dd.name-sss.test["dd*cc"]["y.x"]["d.d"]`
    32  	fields, err := GetAllspecialFields(path)
    33  	assert.Nil(t, err)
    34  	assert.Equal(t, []string{"Id_dd", "name-sss", "test", "dd*cc", "y.x", "d.d"}, fields)
    35  }
    36  
    37  func TestGetSpecialFields3(t *testing.T) {
    38  	path := `Object.Maps3[0]["dd*cc"]["y.x"]['d.d']`
    39  	fields, err := GetAllspecialFields(path)
    40  	assert.Nil(t, err)
    41  	assert.Equal(t, []string{"Object", "Maps3[0]", "dd*cc", "y.x", "d.d"}, fields)
    42  }
    43  
    44  func TestGetSpecialFields4(t *testing.T) {
    45  	path := `["message.id"]`
    46  	fields, err := GetAllspecialFields(path)
    47  	assert.Nil(t, err)
    48  	assert.Equal(t, []string{"message.id"}, fields)
    49  }
    50  
    51  func TestGetAllSpecialWithRootSpecial(t *testing.T) {
    52  	path := `Maps2["bb.bb"][0].id.name`
    53  	fields, err := GetAllspecialFields(path)
    54  	assert.Nil(t, err)
    55  	assert.Equal(t, []string{"Maps2", "bb.bb[0]", "id", "name"}, fields)
    56  }
    57  
    58  func TestGetAllSpecialFields(t *testing.T) {
    59  	path := `Object.Maps3["dd.cc"][0]["y.x"]['d.d'].name`
    60  	res, err := GetAllspecialFields(path)
    61  	assert.Nil(t, err)
    62  	assert.Equal(t, []string{"Object", "Maps3", "dd.cc[0]", "y.x", "d.d", "name"}, res)
    63  }
    64  
    65  func TestApostoph(t *testing.T) {
    66  	path := `["'apostoph"]`
    67  	res, err := GetAllspecialFields(path)
    68  	assert.Nil(t, err)
    69  	assert.Equal(t, []string{"'apostoph"}, res)
    70  
    71  	path = `[''apostoph']`
    72  	res, err = GetAllspecialFields(path)
    73  	assert.Nil(t, err)
    74  	assert.Equal(t, []string{"'apostoph"}, res)
    75  
    76  	path = `['"apo"stoph"']`
    77  	res, err = GetAllspecialFields(path)
    78  	assert.Nil(t, err)
    79  	assert.Equal(t, []string{`"apo"stoph"`}, res)
    80  
    81  	path = `["apo'"stoph''"]`
    82  	res, err = GetAllspecialFields(path)
    83  	assert.Nil(t, err)
    84  	assert.Equal(t, []string{`apo'"stoph''`}, res)
    85  
    86  	path = "[\"apo`stoph\"]"
    87  	res, err = GetAllspecialFields(path)
    88  	assert.Nil(t, err)
    89  	assert.Equal(t, []string{"apo`stoph"}, res)
    90  
    91  }
    92  
    93  func TestGetAllSpecialFields2(t *testing.T) {
    94  	path := `ReceiveSQSMessage.["x.y"][0]["name&name"]`
    95  	res, err := GetAllspecialFields(path)
    96  	assert.Nil(t, err)
    97  	assert.Equal(t, []string{"ReceiveSQSMessage", "x.y[0]", "name&name"}, res)
    98  
    99  }
   100  
   101  func TestGetAllSpecialEmpty(t *testing.T) {
   102  	path := `["Output**&&&&$$$%%%@(){ String"]`
   103  	res, err := GetAllspecialFields(path)
   104  	assert.Nil(t, err)
   105  	assert.Equal(t, []string{"Output**&&&&$$$%%%@(){ String"}, res)
   106  
   107  	path = `["Output ** &&&&$$$%%%@(){ String"]`
   108  	res, err = GetAllspecialFields(path)
   109  	assert.Nil(t, err)
   110  	assert.Equal(t, []string{"Output ** &&&&$$$%%%@(){ String"}, res)
   111  
   112  	path = `["Output String"]`
   113  	res, err = GetAllspecialFields(path)
   114  	assert.Nil(t, err)
   115  	assert.Equal(t, []string{"Output String"}, res)
   116  
   117  	path = `["Output	String"]`
   118  	res, err = GetAllspecialFields(path)
   119  	assert.Nil(t, err)
   120  	assert.Equal(t, []string{"Output	String"}, res)
   121  
   122  }
   123  
   124  func TestGetAllSpecialSingleQuote(t *testing.T) {
   125  	path := "['data']['Array1']"
   126  
   127  	res, err := GetAllspecialFields(path)
   128  	assert.Nil(t, err)
   129  	assert.Equal(t, []string{"data", "Array1"}, res)
   130  
   131  }
   132  
   133  func TestGetAllSpecial(t *testing.T) {
   134  	path := "['data']['Array1']"
   135  
   136  	res, err := GetAllspecialFields(path)
   137  	assert.Nil(t, err)
   138  	assert.Equal(t, []string{"data", "Array1"}, res)
   139  
   140  	path = "['data']['Array1']"
   141  
   142  	res, err = GetAllspecialFields(path)
   143  	assert.Nil(t, err)
   144  	assert.Equal(t, []string{"data", "Array1"}, res)
   145  
   146  	path = "['data']['Array1']"
   147  
   148  	res, err = GetAllspecialFields(path)
   149  	assert.Nil(t, err)
   150  	assert.Equal(t, []string{"data", "Array1"}, res)
   151  
   152  	path = "['data']['Array1']"
   153  
   154  	res, err = GetAllspecialFields(path)
   155  	assert.Nil(t, err)
   156  	assert.Equal(t, []string{"data", "Array1"}, res)
   157  
   158  	path = "['data']['Array1']"
   159  
   160  	res, err = GetAllspecialFields(path)
   161  	assert.Nil(t, err)
   162  	assert.Equal(t, []string{"data", "Array1"}, res)
   163  }
   164  
   165  func GetAllspecialFields(path string) ([]string, error) {
   166  	field, err := ParseMappingField(path)
   167  	return field.fields, err
   168  
   169  }