@@ -30,11 +30,39 @@ def mock_get_content_of_file(self, project_key, repository_slug, filename, at=No
3030 'cb68a3027d6dda065a7692ebf2c90bed1bcdec28' : 'file\n with\n some\n changes\n to\n emulate\n a\n real\n file\n ' ,
3131 '1905dcf16c0aac6ac24f7ab617ad09c73dc1d23b' : 'file\n with\n some\n lines\n to\n emulate\n a\n fake\n test\n ' ,
3232 'ae4eca7f222c96d396927d48ab7538e2ee13ca63' : 'readme\n without\n some\n lines\n to\n simulate\n a\n real\n file' ,
33- '548f8ba15abc30875a082156314426806c3f4d97' : 'file\n with\n some\n lines\n to\n emulate\n a\n real\n file'
33+ '548f8ba15abc30875a082156314426806c3f4d97' : 'file\n with\n some\n lines\n to\n emulate\n a\n real\n file' ,
34+ '0e898cb355a5170d8c8771b25d43fcaa1d2d9489' : 'file\n with\n multiple\n lines\n to\n emulate\n a\n real\n file'
3435 }
35-
3636 return content_map .get (at , '' )
3737
38+ def mock_get_from_bitbucket_60 (self , url ):
39+ response_map = {
40+ "rest/api/1.0/application-properties" : {
41+ "version" : "6.0"
42+ }
43+ }
44+ return response_map .get (url , '' )
45+
46+ def mock_get_from_bitbucket_70 (self , url ):
47+ response_map = {
48+ "rest/api/1.0/application-properties" : {
49+ "version" : "7.0"
50+ }
51+ }
52+ return response_map .get (url , '' )
53+
54+ def mock_get_from_bitbucket_816 (self , url ):
55+ response_map = {
56+ "rest/api/1.0/application-properties" : {
57+ "version" : "8.16"
58+ },
59+ "rest/api/latest/projects/AAA/repos/my-repo/pull-requests/1/merge-base" : {
60+ 'id' : '548f8ba15abc30875a082156314426806c3f4d97'
61+ }
62+ }
63+ return response_map .get (url , '' )
64+
65+
3866 '''
3967 tests the 2-way diff functionality where the diff should be between the HEAD of branch b and node c
4068 NOT between the HEAD of main and the HEAD of branch b
@@ -44,8 +72,7 @@ def mock_get_content_of_file(self, project_key, repository_slug, filename, at=No
4472 o - o - o main
4573 ^ node c
4674 '''
47-
48- def test_get_diff_files_simple_diverge (self ):
75+ def test_get_diff_files_simple_diverge_70 (self ):
4976 bitbucket_client = MagicMock (Bitbucket )
5077 bitbucket_client .get_pull_request .return_value = {
5178 'toRef' : {'latestCommit' : '9c1cffdd9f276074bfb6fb3b70fbee62d298b058' },
@@ -66,6 +93,7 @@ def test_get_diff_files_simple_diverge(self):
6693 }
6794 ]
6895
96+ bitbucket_client .get .side_effect = self .mock_get_from_bitbucket_70
6997 bitbucket_client .get_content_of_file .side_effect = self .mock_get_content_of_file
7098
7199 provider = BitbucketServerProvider (
@@ -87,6 +115,7 @@ def test_get_diff_files_simple_diverge(self):
87115
88116 assert actual == expected
89117
118+
90119 '''
91120 tests the 2-way diff functionality where the diff should be between the HEAD of branch b and node c
92121 NOT between the HEAD of main and the HEAD of branch b
@@ -96,8 +125,7 @@ def test_get_diff_files_simple_diverge(self):
96125 o - o -- o - o main
97126 ^ node c
98127 '''
99-
100- def test_get_diff_files_diverge_with_merge_commit (self ):
128+ def test_get_diff_files_diverge_with_merge_commit_70 (self ):
101129 bitbucket_client = MagicMock (Bitbucket )
102130 bitbucket_client .get_pull_request .return_value = {
103131 'toRef' : {'latestCommit' : 'cb68a3027d6dda065a7692ebf2c90bed1bcdec28' },
@@ -125,6 +153,7 @@ def test_get_diff_files_diverge_with_merge_commit(self):
125153 }
126154 ]
127155
156+ bitbucket_client .get .side_effect = self .mock_get_from_bitbucket_70
128157 bitbucket_client .get_content_of_file .side_effect = self .mock_get_content_of_file
129158
130159 provider = BitbucketServerProvider (
@@ -146,6 +175,7 @@ def test_get_diff_files_diverge_with_merge_commit(self):
146175
147176 assert actual == expected
148177
178+
149179 '''
150180 tests the 2-way diff functionality where the diff should be between the HEAD of branch c and node d
151181 NOT between the HEAD of main and the HEAD of branch c
@@ -157,8 +187,7 @@ def test_get_diff_files_diverge_with_merge_commit(self):
157187 o - o - o main
158188 ^ node d
159189 '''
160-
161- def test_get_diff_files_multi_merge_diverge (self ):
190+ def get_multi_merge_diverge_mock_client (self , api_version ):
162191 bitbucket_client = MagicMock (Bitbucket )
163192 bitbucket_client .get_pull_request .return_value = {
164193 'toRef' : {'latestCommit' : '9569922b22fe4fd0968be6a50ed99f71efcd0504' },
@@ -192,6 +221,39 @@ def test_get_diff_files_multi_merge_diverge(self):
192221 ]
193222
194223 bitbucket_client .get_content_of_file .side_effect = self .mock_get_content_of_file
224+ if api_version == 60 :
225+ bitbucket_client .get .side_effect = self .mock_get_from_bitbucket_60
226+ elif api_version == 70 :
227+ bitbucket_client .get .side_effect = self .mock_get_from_bitbucket_70
228+ elif api_version == 816 :
229+ bitbucket_client .get .side_effect = self .mock_get_from_bitbucket_816
230+
231+ return bitbucket_client
232+
233+ def test_get_diff_files_multi_merge_diverge_60 (self ):
234+ bitbucket_client = self .get_multi_merge_diverge_mock_client (60 )
235+
236+ provider = BitbucketServerProvider (
237+ "https://git.onpreminstance.com/projects/AAA/repos/my-repo/pull-requests/1" ,
238+ bitbucket_client = bitbucket_client
239+ )
240+
241+ expected = [
242+ FilePatchInfo (
243+ 'file\n with\n multiple\n lines\n to\n emulate\n a\n real\n file' ,
244+ 'readme\n without\n some\n lines\n to\n simulate\n a\n real\n file' ,
245+ '--- \n +++ \n @@ -1,9 +1,9 @@\n -file\n -with\n -multiple\n +readme\n +without\n +some\n lines\n to\n -emulate\n +simulate\n a\n real\n file' ,
246+ 'Readme.md' ,
247+ edit_type = EDIT_TYPE .MODIFIED ,
248+ )
249+ ]
250+
251+ actual = provider .get_diff_files ()
252+
253+ assert actual == expected
254+
255+ def test_get_diff_files_multi_merge_diverge_70 (self ):
256+ bitbucket_client = self .get_multi_merge_diverge_mock_client (70 )
195257
196258 provider = BitbucketServerProvider (
197259 "https://git.onpreminstance.com/projects/AAA/repos/my-repo/pull-requests/1" ,
@@ -211,3 +273,25 @@ def test_get_diff_files_multi_merge_diverge(self):
211273 actual = provider .get_diff_files ()
212274
213275 assert actual == expected
276+
277+ def test_get_diff_files_multi_merge_diverge_816 (self ):
278+ bitbucket_client = self .get_multi_merge_diverge_mock_client (816 )
279+
280+ provider = BitbucketServerProvider (
281+ "https://git.onpreminstance.com/projects/AAA/repos/my-repo/pull-requests/1" ,
282+ bitbucket_client = bitbucket_client
283+ )
284+
285+ expected = [
286+ FilePatchInfo (
287+ 'file\n with\n some\n lines\n to\n emulate\n a\n real\n file' ,
288+ 'readme\n without\n some\n lines\n to\n simulate\n a\n real\n file' ,
289+ '--- \n +++ \n @@ -1,9 +1,9 @@\n -file\n -with\n +readme\n +without\n some\n lines\n to\n -emulate\n +simulate\n a\n real\n file' ,
290+ 'Readme.md' ,
291+ edit_type = EDIT_TYPE .MODIFIED ,
292+ )
293+ ]
294+
295+ actual = provider .get_diff_files ()
296+
297+ assert actual == expected
0 commit comments