in javatests/com/google/gerrit/plugins/codeowners/acceptance/api/GetOwnedPathsIT.java [526:639]
public void getOwnedPathsForRenamedFilesWithLimit() throws Exception {
setAsCodeOwners("/foo/", user);
// Rename 1: user owns old and new path
String newPath1 = "/foo/test1.md";
String oldPath1 = "/foo/bar/test1.md";
// Rename 2: user owns only new path
String newPath2 = "/foo/test2.md";
String oldPath2 = "/other/test2.md";
// Rename 3: user owns only old path
String newPath3 = "/other/test3.md";
String oldPath3 = "/foo/test3.md";
// Rename 4: user owns neither old nor new path
String newPath4 = "/other/test4.md";
String oldPath4 = "/other/foo/test4.md";
String changeId1 =
createChange(
"Change Adding Files",
ImmutableMap.of(
JgitPath.of(oldPath1).get(),
"file content 1",
JgitPath.of(oldPath2).get(),
"file content 2",
JgitPath.of(oldPath3).get(),
"file content 3",
JgitPath.of(oldPath4).get(),
"file content 4"))
.getChangeId();
// The PushOneCommit test API doesn't support renaming files in a change. Use the change edit
// Java API instead.
ChangeInput changeInput = new ChangeInput();
changeInput.project = project.get();
changeInput.branch = "master";
changeInput.subject = "Change Renaming Files";
changeInput.baseChange = changeId1;
String changeId2 = gApi.changes().create(changeInput).get().changeId;
gApi.changes().id(changeId2).edit().create();
gApi.changes()
.id(changeId2)
.edit()
.renameFile(JgitPath.of(oldPath1).get(), JgitPath.of(newPath1).get());
gApi.changes()
.id(changeId2)
.edit()
.renameFile(JgitPath.of(oldPath2).get(), JgitPath.of(newPath2).get());
gApi.changes()
.id(changeId2)
.edit()
.renameFile(JgitPath.of(oldPath3).get(), JgitPath.of(newPath3).get());
gApi.changes()
.id(changeId2)
.edit()
.renameFile(JgitPath.of(oldPath4).get(), JgitPath.of(newPath4).get());
gApi.changes().id(changeId2).edit().publish(new PublishChangeEditInput());
OwnedPathsInfo ownedPathsInfo =
changeCodeOwnersApiFactory
.change(changeId2)
.current()
.getOwnedPaths()
.withLimit(1)
.forUser(user.email())
.get();
assertThat(ownedPathsInfo).hasOwnedChangedFilesThat().hasSize(1);
assertThat(ownedPathsInfo.ownedChangedFiles.get(0)).hasOwnedNewPath(newPath1);
assertThat(ownedPathsInfo.ownedChangedFiles.get(0)).hasOwnedOldPath(oldPath1);
List<String> ownedPaths = Arrays.asList(newPath1, oldPath1);
Collections.sort(ownedPaths);
assertThat(ownedPathsInfo).hasOwnedPathsThat().containsExactlyElementsIn(ownedPaths);
assertThat(ownedPathsInfo).hasMoreThat().isTrue();
ownedPathsInfo =
changeCodeOwnersApiFactory
.change(changeId2)
.current()
.getOwnedPaths()
.withLimit(2)
.forUser(user.email())
.get();
assertThat(ownedPathsInfo).hasOwnedChangedFilesThat().hasSize(2);
assertThat(ownedPathsInfo.ownedChangedFiles.get(0)).hasOwnedNewPath(newPath1);
assertThat(ownedPathsInfo.ownedChangedFiles.get(0)).hasOwnedOldPath(oldPath1);
assertThat(ownedPathsInfo.ownedChangedFiles.get(1)).hasOwnedNewPath(newPath2);
assertThat(ownedPathsInfo.ownedChangedFiles.get(1)).hasNonOwnedOldPath(oldPath2);
ownedPaths = Arrays.asList(newPath1, oldPath1, newPath2);
Collections.sort(ownedPaths);
assertThat(ownedPathsInfo).hasOwnedPathsThat().containsExactlyElementsIn(ownedPaths).inOrder();
assertThat(ownedPathsInfo).hasMoreThat().isTrue();
ownedPathsInfo =
changeCodeOwnersApiFactory
.change(changeId2)
.current()
.getOwnedPaths()
.withLimit(3)
.forUser(user.email())
.get();
assertThat(ownedPathsInfo).hasOwnedChangedFilesThat().hasSize(3);
assertThat(ownedPathsInfo.ownedChangedFiles.get(0)).hasOwnedNewPath(newPath1);
assertThat(ownedPathsInfo.ownedChangedFiles.get(0)).hasOwnedOldPath(oldPath1);
assertThat(ownedPathsInfo.ownedChangedFiles.get(1)).hasOwnedNewPath(newPath2);
assertThat(ownedPathsInfo.ownedChangedFiles.get(1)).hasNonOwnedOldPath(oldPath2);
assertThat(ownedPathsInfo.ownedChangedFiles.get(2)).hasNonOwnedNewPath(newPath3);
assertThat(ownedPathsInfo.ownedChangedFiles.get(2)).hasOwnedOldPath(oldPath3);
ownedPaths = Arrays.asList(newPath1, oldPath1, newPath2, oldPath3);
Collections.sort(ownedPaths);
assertThat(ownedPathsInfo).hasOwnedPathsThat().containsExactlyElementsIn(ownedPaths).inOrder();
assertThat(ownedPathsInfo).hasMoreThat().isNull();
}