1
+ package student_repos
2
+
3
+ import (
4
+ "testing"
5
+
6
+ "github.com/spf13/cobra"
7
+ )
8
+
9
+ // Mock command setup for testing
10
+ func newTestCmd () * cobra.Command {
11
+ var page , perPage int
12
+ var getAll bool
13
+
14
+ cmd := & cobra.Command {
15
+ Use : "test-cmd" ,
16
+ Run : func (cmd * cobra.Command , args []string ) {
17
+ getAll = ! cmd .Flags ().Changed ("page" )
18
+ },
19
+ }
20
+
21
+ cmd .Flags ().IntVar (& page , "page" , 1 , "Page number" )
22
+ cmd .Flags ().IntVar (& perPage , "per-page" , 15 , "Number of items per page" )
23
+ cmd .Flags ().BoolVar (& getAll , "all" , true , "Get all items" )
24
+
25
+ return cmd
26
+ }
27
+
28
+ func TestGetAllFlag (t * testing.T ) {
29
+ tests := []struct {
30
+ name string
31
+ args []string
32
+ expected bool
33
+ }{
34
+ {"Default" , []string {}, true },
35
+ {"PerPage Set" , []string {"--per-page" , "20" }, true },
36
+ {"Page Set" , []string {"--page" , "2" }, false },
37
+ {"Page Set to 1" , []string {"--page" , "1" }, false },
38
+ {"Page and PerPage Set" , []string {"--page" , "2" , "--per-page" , "20" }, false },
39
+ }
40
+
41
+ for _ , tt := range tests {
42
+ t .Run (tt .name , func (t * testing.T ) {
43
+ cmd := newTestCmd ()
44
+ cmd .SetArgs (tt .args )
45
+ if err := cmd .Execute (); err != nil {
46
+ t .Fatalf ("cmd.Execute() failed with %v" , err )
47
+ }
48
+
49
+ getAllFlag , err := cmd .Flags ().GetBool ("all" )
50
+ if err != nil {
51
+ t .Fatalf ("Failed to get 'all' flag: %v" , err )
52
+ }
53
+
54
+ if getAllFlag != tt .expected {
55
+ t .Errorf ("Expected getAll to be %v, got %v" , tt .expected , getAllFlag )
56
+ }
57
+ })
58
+ }
59
+ }
0 commit comments