blob: e1f684e0eef377b62c382d18ff2b3939480b3552 [file] [log] [blame]
// Copyright 2019 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:cocoon_service/src/model/gerrit/commit.dart';
import 'package:cocoon_service/src/request_handling/exceptions.dart';
import 'package:cocoon_service/src/service/gerrit_service.dart';
import 'package:collection/collection.dart';
import 'package:github/github.dart';
import 'package:http/testing.dart';
import '../datastore/fake_config.dart';
import '../utilities/entity_generators.dart';
/// Fake [GerritService] for use in tests.
class FakeGerritService extends GerritService {
FakeGerritService({
this.branchesValue = _defaultBranches,
this.commitsValue,
}) : super(
config: FakeConfig(),
httpClient:
MockClient((_) => throw const InternalServerError('FakeGerritService tried to make an http request')),
);
List<String> branchesValue;
static const List<String> _defaultBranches = <String>['main'];
List<GerritCommit>? commitsValue;
final List<GerritCommit> _defaultCommits = <GerritCommit>[
generateGerritCommit(1),
generateGerritCommit(2),
generateGerritCommit(3),
];
@override
Future<List<String>> branches(String repo, String project, {String? filterRegex}) async => branchesValue;
@override
Future<Iterable<GerritCommit>> commits(RepositorySlug slug, String branch) async => commitsValue ?? _defaultCommits;
@override
Future<void> createBranch(RepositorySlug slug, String branchName, String revision) async => Future.value(null);
@override
Future<GerritCommit?> findMirroredCommit(RepositorySlug slug, String sha) async {
final commits = await this.commits(slug, '');
return commits.firstWhereOrNull((commit) => commit.commit == sha);
}
}