42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
|
/**
|
||
|
* @license
|
||
|
* Copyright Google LLC All Rights Reserved.
|
||
|
*
|
||
|
* Use of this source code is governed by an MIT-style license that can be
|
||
|
* found in the LICENSE file at https://angular.io/license
|
||
|
*/
|
||
|
|
||
|
import {GithubRepo} from '../git/github';
|
||
|
|
||
|
import {Commit} from './virtual-git-client';
|
||
|
|
||
|
/** Interface describing the match parameters for a virtual Git client push. */
|
||
|
interface BranchPushMatchParameters {
|
||
|
targetRepo: GithubRepo;
|
||
|
targetBranch: string;
|
||
|
baseRepo: GithubRepo;
|
||
|
baseBranch: string;
|
||
|
expectedCommits: Commit[]|jasmine.ArrayContaining<Commit>;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Gets a jasmine object matcher for asserting that a virtual Git client push
|
||
|
* matches the specified branch push (through the match parameters).
|
||
|
*/
|
||
|
export function getBranchPushMatcher(options: BranchPushMatchParameters) {
|
||
|
const {targetRepo, targetBranch, baseBranch, baseRepo, expectedCommits} = options;
|
||
|
return jasmine.objectContaining({
|
||
|
remote: {
|
||
|
repoUrl: `https://github.com/${targetRepo.owner}/${targetRepo.name}.git`,
|
||
|
name: `refs/heads/${targetBranch}`
|
||
|
},
|
||
|
head: jasmine.objectContaining({
|
||
|
newCommits: expectedCommits,
|
||
|
ref: {
|
||
|
repoUrl: `https://github.com/${baseRepo.owner}/${baseRepo.name}.git`,
|
||
|
name: baseBranch,
|
||
|
},
|
||
|
})
|
||
|
});
|
||
|
}
|