Skip to content

Commit 31ebd74

Browse files
authored
Merge pull request #75 from github/jalafel/default-page
Change default getAll behaviour on clone
2 parents d99779e + ebbd867 commit 31ebd74

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

cmd/gh-classroom/clone/student-repos/student-repos.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ func NewCmdStudentRepo(f *cmdutil.Factory) *cobra.Command {
5353
log.Fatal(err)
5454
}
5555
}
56+
57+
// Default getAll to true unless page is set differently from default.
58+
getAll = !cmd.Flags().Changed("page")
59+
5660
var acceptedAssignmentList classroom.AcceptedAssignmentList
5761
if getAll {
5862
acceptedAssignmentList, err = shared.ListAllAcceptedAssignments(client, assignmentId, perPage)
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
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

Comments
 (0)