@@ -10,6 +10,7 @@ import (
1010
1111 "github.com/stretchr/testify/assert"
1212 "github.com/stretchr/testify/require"
13+ "github.com/tidwall/gjson"
1314)
1415
1516func TestStreamOutput (t * testing.T ) {
@@ -148,3 +149,44 @@ func TestValidateBaseURL(t *testing.T) {
148149 assert .Contains (t , err .Error (), "--base-url" )
149150 })
150151}
152+
153+ func TestFormatJSON (t * testing.T ) {
154+ t .Parallel ()
155+
156+ t .Run ("RawWithTransform" , func (t * testing.T ) {
157+ t .Parallel ()
158+
159+ res := gjson .Parse (`{"id":"abc123","name":"test"}` )
160+ formatted , err := formatJSON (os .Stdout , "test" , res , "raw" , "id" )
161+ require .NoError (t , err )
162+ require .Equal (t , `"abc123"` + "\n " , string (formatted ))
163+ })
164+
165+ t .Run ("RawWithoutTransform" , func (t * testing.T ) {
166+ t .Parallel ()
167+
168+ res := gjson .Parse (`{"id":"abc123","name":"test"}` )
169+ formatted , err := formatJSON (os .Stdout , "test" , res , "raw" , "" )
170+ require .NoError (t , err )
171+ require .Equal (t , `{"id":"abc123","name":"test"}` + "\n " , string (formatted ))
172+ })
173+
174+ t .Run ("RawWithNestedTransform" , func (t * testing.T ) {
175+ t .Parallel ()
176+
177+ res := gjson .Parse (`{"data":{"items":[1,2,3]}}` )
178+ formatted , err := formatJSON (os .Stdout , "test" , res , "raw" , "data.items" )
179+ require .NoError (t , err )
180+ require .Equal (t , "[1,2,3]\n " , string (formatted ))
181+ })
182+
183+ t .Run ("RawWithNonexistentTransform" , func (t * testing.T ) {
184+ t .Parallel ()
185+
186+ res := gjson .Parse (`{"id":"abc123"}` )
187+ formatted , err := formatJSON (os .Stdout , "test" , res , "raw" , "missing" )
188+ require .NoError (t , err )
189+ // Transform path doesn't exist, so original result is returned
190+ require .Equal (t , `{"id":"abc123"}` + "\n " , string (formatted ))
191+ })
192+ }
0 commit comments