angular-cn/dev-infra/utils/testing/virtual-git-matchers.ts

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,
},
})
});
}