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 }