| // 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/service/build_status_provider.dart'; |
| import 'package:cocoon_service/src/service/datastore.dart'; |
| import 'package:github/github.dart'; |
| |
| class FakeBuildStatusService implements BuildStatusService { |
| FakeBuildStatusService({ |
| this.cumulativeStatus, |
| this.commitStatuses, |
| }); |
| |
| BuildStatus? cumulativeStatus; |
| List<CommitStatus>? commitStatuses; |
| |
| @override |
| Future<BuildStatus?> calculateCumulativeStatus(RepositorySlug slug) async { |
| if (cumulativeStatus == null) { |
| throw AssertionError(); |
| } |
| return cumulativeStatus; |
| } |
| |
| @override |
| Stream<CommitStatus> retrieveCommitStatus({ |
| int limit = 100, |
| int? timestamp, |
| String? branch, |
| required RepositorySlug slug, |
| }) { |
| if (commitStatuses == null) { |
| throw AssertionError(); |
| } |
| commitStatuses!.sort((CommitStatus a, CommitStatus b) => a.commit.timestamp!.compareTo(b.commit.timestamp!)); |
| |
| return Stream<CommitStatus>.fromIterable( |
| commitStatuses!.where( |
| (CommitStatus commitStatus) => |
| ((commitStatus.commit.timestamp == null || timestamp == null) |
| ? true |
| : commitStatus.commit.timestamp! < timestamp) && |
| commitStatus.commit.branch == branch, |
| ), |
| ); |
| } |
| |
| @override |
| DatastoreService get datastoreService => throw UnimplementedError(); |
| } |