@@ -21,8 +21,14 @@ func (f fakeDiscussionsLister) ListMergeRequestDiscussions(pid interface{}, merg
2121 if err != nil {
2222 return nil , nil , err
2323 }
24- now := time .Now ()
25- newer := now .Add (time .Second * 100 )
24+
25+ timePointers := make ([]* time.Time , 6 )
26+ timePointers [0 ] = new (time.Time )
27+ * timePointers [0 ] = time .Now ()
28+ for i := 1 ; i < len (timePointers ); i ++ {
29+ timePointers [i ] = new (time.Time )
30+ * timePointers [i ] = timePointers [i - 1 ].Add (time .Second * 100 )
31+ }
2632
2733 type Author struct {
2834 ID int `json:"id"`
@@ -35,8 +41,18 @@ func (f fakeDiscussionsLister) ListMergeRequestDiscussions(pid interface{}, merg
3541 }
3642
3743 testListDiscussionsResponse := []* gitlab.Discussion {
38- {Notes : []* gitlab.Note {{CreatedAt : & now , Type : "DiffNote" , Author : Author {Username : "hcramer" }}}},
39- {Notes : []* gitlab.Note {{CreatedAt : & newer , Type : "DiffNote" , Author : Author {Username : "hcramer2" }}}},
44+ {Notes : []* gitlab.Note {
45+ {CreatedAt : timePointers [0 ], Type : "DiffNote" , Author : Author {Username : "hcramer0" }},
46+ {CreatedAt : timePointers [4 ], Type : "DiffNote" , Author : Author {Username : "hcramer1" }},
47+ }},
48+ {Notes : []* gitlab.Note {
49+ {CreatedAt : timePointers [2 ], Type : "DiffNote" , Author : Author {Username : "hcramer2" }},
50+ {CreatedAt : timePointers [3 ], Type : "DiffNote" , Author : Author {Username : "hcramer3" }},
51+ }},
52+ {Notes : []* gitlab.Note {
53+ {CreatedAt : timePointers [1 ], Type : "DiffNote" , Author : Author {Username : "hcramer4" }},
54+ {CreatedAt : timePointers [5 ], Type : "DiffNote" , Author : Author {Username : "hcramer5" }},
55+ }},
4056 }
4157 return testListDiscussionsResponse , resp , err
4258}
@@ -66,8 +82,23 @@ func getDiscussionsList(t *testing.T, svc http.Handler, request *http.Request) D
6682}
6783
6884func TestListDiscussions (t * testing.T ) {
69- t .Run ("Returns sorted discussions" , func (t * testing.T ) {
70- request := makeRequest (t , http .MethodPost , "/mr/discussions/list" , DiscussionsRequest {Blacklist : []string {}})
85+ t .Run ("Returns discussions sorted by latest reply" , func (t * testing.T ) {
86+ request := makeRequest (t , http .MethodPost , "/mr/discussions/list" , DiscussionsRequest {Blacklist : []string {}, SortBy : "latest_reply" })
87+ svc := middleware (
88+ discussionsListerService {testProjectData , fakeDiscussionsLister {}},
89+ withMr (testProjectData , fakeMergeRequestLister {}),
90+ withPayloadValidation (methodToPayload {http .MethodPost : newPayload [DiscussionsRequest ]}),
91+ withMethodCheck (http .MethodPost ),
92+ )
93+ data := getDiscussionsList (t , svc , request )
94+ assert (t , data .Message , "Discussions retrieved" )
95+ assert (t , data .Discussions [0 ].Notes [0 ].Author .Username , "hcramer4" ) /* Sorting applied */
96+ assert (t , data .Discussions [1 ].Notes [0 ].Author .Username , "hcramer0" )
97+ assert (t , data .Discussions [2 ].Notes [0 ].Author .Username , "hcramer2" )
98+ })
99+
100+ t .Run ("Returns discussions sorted by original comment" , func (t * testing.T ) {
101+ request := makeRequest (t , http .MethodPost , "/mr/discussions/list" , DiscussionsRequest {Blacklist : []string {}, SortBy : "original_comment" })
71102 svc := middleware (
72103 discussionsListerService {testProjectData , fakeDiscussionsLister {}},
73104 withMr (testProjectData , fakeMergeRequestLister {}),
@@ -76,12 +107,13 @@ func TestListDiscussions(t *testing.T) {
76107 )
77108 data := getDiscussionsList (t , svc , request )
78109 assert (t , data .Message , "Discussions retrieved" )
79- assert (t , data .Discussions [0 ].Notes [0 ].Author .Username , "hcramer2" ) /* Sorting applied */
80- assert (t , data .Discussions [1 ].Notes [0 ].Author .Username , "hcramer" )
110+ assert (t , data .Discussions [0 ].Notes [0 ].Author .Username , "hcramer0" ) /* Sorting applied */
111+ assert (t , data .Discussions [1 ].Notes [0 ].Author .Username , "hcramer4" )
112+ assert (t , data .Discussions [2 ].Notes [0 ].Author .Username , "hcramer2" )
81113 })
82114
83115 t .Run ("Uses blacklist to filter unwanted authors" , func (t * testing.T ) {
84- request := makeRequest (t , http .MethodPost , "/mr/discussions/list" , DiscussionsRequest {Blacklist : []string {"hcramer" } })
116+ request := makeRequest (t , http .MethodPost , "/mr/discussions/list" , DiscussionsRequest {Blacklist : []string {"hcramer0" }, SortBy : "latest_reply" })
85117 svc := middleware (
86118 discussionsListerService {testProjectData , fakeDiscussionsLister {}},
87119 withMr (testProjectData , fakeMergeRequestLister {}),
@@ -90,8 +122,9 @@ func TestListDiscussions(t *testing.T) {
90122 )
91123 data := getDiscussionsList (t , svc , request )
92124 assert (t , data .SuccessResponse .Message , "Discussions retrieved" )
93- assert (t , len (data .Discussions ), 1 )
94- assert (t , data .Discussions [0 ].Notes [0 ].Author .Username , "hcramer2" )
125+ assert (t , len (data .Discussions ), 2 )
126+ assert (t , data .Discussions [0 ].Notes [0 ].Author .Username , "hcramer4" )
127+ assert (t , data .Discussions [1 ].Notes [0 ].Author .Username , "hcramer2" )
95128 })
96129 t .Run ("Handles errors from Gitlab client" , func (t * testing.T ) {
97130 request := makeRequest (t , http .MethodPost , "/mr/discussions/list" , DiscussionsRequest {Blacklist : []string {}})
0 commit comments