@@ -15,11 +15,13 @@ func TestArchive(t *testing.T) {
1515 mockClient := & resources.MockClient {
1616 Response : []byte (`{
1717 "key": "test-flag",
18- "name": "test flag"
18+ "name": "test flag",
19+ "kind": "boolean",
20+ "archived": true
1921 }` ),
2022 }
2123
22- t .Run ("succeeds with valid inputs " , func (t * testing.T ) {
24+ t .Run ("succeeds with plaintext output " , func (t * testing.T ) {
2325 args := []string {
2426 "flags" , "archive" ,
2527 "--access-token" , "abcd1234" ,
@@ -39,6 +41,114 @@ func TestArchive(t *testing.T) {
3941 assert .Equal (t , `[{"op": "replace", "path": "/archived", "value": true}]` , string (mockClient .Input ))
4042 assert .Equal (t , "Successfully updated test flag (test-flag)\n " , string (output ))
4143 })
44+
45+ t .Run ("succeeds with JSON output" , func (t * testing.T ) {
46+ args := []string {
47+ "flags" , "archive" ,
48+ "--access-token" , "abcd1234" ,
49+ "--flag" , "test-flag" ,
50+ "--project" , "test-proj" ,
51+ "--output" , "json" ,
52+ }
53+ output , err := cmd .CallCmd (
54+ t ,
55+ cmd.APIClients {
56+ ResourcesClient : mockClient ,
57+ },
58+ analytics.NoopClientFn {}.Tracker (),
59+ args ,
60+ )
61+
62+ require .NoError (t , err )
63+ assert .JSONEq (t , `{"key":"test-flag","name":"test flag","kind":"boolean","archived":true}` , string (output ))
64+ })
65+
66+ t .Run ("succeeds with --json shorthand" , func (t * testing.T ) {
67+ args := []string {
68+ "flags" , "archive" ,
69+ "--access-token" , "abcd1234" ,
70+ "--flag" , "test-flag" ,
71+ "--project" , "test-proj" ,
72+ "--json" ,
73+ }
74+ output , err := cmd .CallCmd (
75+ t ,
76+ cmd.APIClients {
77+ ResourcesClient : mockClient ,
78+ },
79+ analytics.NoopClientFn {}.Tracker (),
80+ args ,
81+ )
82+
83+ require .NoError (t , err )
84+ assert .JSONEq (t , `{"key":"test-flag","name":"test flag","kind":"boolean","archived":true}` , string (output ))
85+ })
86+
87+ t .Run ("filters JSON output with --fields" , func (t * testing.T ) {
88+ args := []string {
89+ "flags" , "archive" ,
90+ "--access-token" , "abcd1234" ,
91+ "--flag" , "test-flag" ,
92+ "--project" , "test-proj" ,
93+ "--output" , "json" ,
94+ "--fields" , "key,name" ,
95+ }
96+ output , err := cmd .CallCmd (
97+ t ,
98+ cmd.APIClients {
99+ ResourcesClient : mockClient ,
100+ },
101+ analytics.NoopClientFn {}.Tracker (),
102+ args ,
103+ )
104+
105+ require .NoError (t , err )
106+ assert .JSONEq (t , `{"key":"test-flag","name":"test flag"}` , string (output ))
107+ })
108+
109+ t .Run ("filters JSON output with --json and --fields" , func (t * testing.T ) {
110+ args := []string {
111+ "flags" , "archive" ,
112+ "--access-token" , "abcd1234" ,
113+ "--flag" , "test-flag" ,
114+ "--project" , "test-proj" ,
115+ "--json" ,
116+ "--fields" , "key,name" ,
117+ }
118+ output , err := cmd .CallCmd (
119+ t ,
120+ cmd.APIClients {
121+ ResourcesClient : mockClient ,
122+ },
123+ analytics.NoopClientFn {}.Tracker (),
124+ args ,
125+ )
126+
127+ require .NoError (t , err )
128+ assert .JSONEq (t , `{"key":"test-flag","name":"test flag"}` , string (output ))
129+ })
130+
131+ t .Run ("ignores --fields with plaintext output" , func (t * testing.T ) {
132+ args := []string {
133+ "flags" , "archive" ,
134+ "--access-token" , "abcd1234" ,
135+ "--flag" , "test-flag" ,
136+ "--project" , "test-proj" ,
137+ "--fields" , "key" ,
138+ }
139+ output , err := cmd .CallCmd (
140+ t ,
141+ cmd.APIClients {
142+ ResourcesClient : mockClient ,
143+ },
144+ analytics.NoopClientFn {}.Tracker (),
145+ args ,
146+ )
147+
148+ require .NoError (t , err )
149+ assert .Equal (t , "Successfully updated test flag (test-flag)\n " , string (output ))
150+ })
151+
42152 t .Run ("returns error with missing flags" , func (t * testing.T ) {
43153 args := []string {
44154 "flags" , "archive" ,
@@ -55,6 +165,6 @@ func TestArchive(t *testing.T) {
55165 )
56166
57167 assert .Error (t , err )
58- assert .Equal (t , " required flag(s) \ " project\ " not set. See `ldcli flags archive --help` for supported flags and usage." , err . Error () )
168+ assert .Contains (t , err . Error (), ` required flag(s) "project" not set` )
59169 })
60170}
0 commit comments