### Question:
PRInitOp extends PRCommand<PR> { private PR build() { final GeogigTransaction txContext = command(TransactionBegin.class).call(); final UUID txId = txContext.getTransactionId(); final PR pr; pr = PR.builder() .id(id) .transactionId(txId).remote(remoteURI) .remoteBranch(remoteBranch) .targetBranch(targetBranch) .title(title) .description(description) .build(); getProgressListener().setDescription("Creating pull request " + pr); return pr; }  PRInitOp setId(int id);  }### Answer:
public @Test void testUpdatePullRequest() { final RevCommit commonAncestor = Iterators.getLast(origin.log("master")); clone.branchAndCheckout("issuerBranch") .resetHard(commonAncestor.getId()) .remove(TestData.line1).add().commit("remove line1") .insert(TestData.poly4).add().commit("add poly 4") .insert(TestData.point1_modified).add().commit("modify point1"); PRInitOp prinit = PRInitOp.builder() .id(1) .remoteURI(clone.getRepo().getLocation()) .remoteBranch("issuerBranch") .targetBranch("master") .title("first PR") .description(null) .build(); prinit.setContext(origin.getRepo().context()); PR request = prinit.call(); assertNotNull(request); assertEquals("issuerBranch", request.getRemoteBranch()); assertEquals("master", request.getTargetBranch()); assertNotNull(request.buildRemote()); assertEquals(clone.getRepo().getLocation(), request.getRemote()); assertEquals("first PR", request.getTitle()); assertNull(request.getDescription()); assertNotNull(request.getTransactionId()); origin.branch("targetbranch"); clone.checkout("master").branchAndCheckout("newbranch") .insert(TestData.point1_modified, TestData.poly1_modified1).add() .commit("on branch2"); PRInitOp initModify = PRInitOp.builder() .id(1) .remoteURI(clone.getRepo().getLocation()) .remoteBranch("newbranch") .targetBranch("targetbranch") .title("modified first PR") .description("modified description") .build(); initModify.setContext(origin.getRepo().context()); GeogigTransaction tx = request.getTransaction(origin.getContext()); tx.command(UpdateRef.class).setName(request.getMergeRef()) .setNewValue(origin.getRef("master").getObjectId()).setReason("test setup").call(); assertTrue(request.resolveMergeRef(tx).isPresent()); PR modifiedReq = initModify.call(); assertEquals("newbranch", modifiedReq.getRemoteBranch()); assertEquals("targetbranch", modifiedReq.getTargetBranch()); assertNotNull(request.buildRemote()); assertEquals(clone.getRepo().getLocation(), request.getRemote()); assertEquals("modified first PR", modifiedReq.getTitle()); assertEquals("modified description", modifiedReq.getDescription()); assertEquals(request.getTransactionId(), modifiedReq.getTransactionId()); assertFalse(modifiedReq.resolveMergeRef(tx).isPresent()); }