blob: a150e2da8542659151b65e490cfe3fce9ebba093 [file] [log] [blame]
// Copyright 2017 The Fuchsia 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 'dart:async';
import 'package:buildbucket/buildbucket.dart';
import 'package:dashboard/buildbucket/build_bucket_service.dart';
import 'package:dashboard/enums.dart';
import 'package:dashboard/service/build_info.dart';
import 'package:mockito/mockito.dart';
import 'package:test/test.dart';
void main() {
group(BuildBucketService, () {
BuildBucketService service;
MockBuildBucketApi mockApi;
const String buildName = 'fuchsia-x86_64-linux-release';
ApiCommonBuildMessage buildInfoResponse =
new ApiCommonBuildMessage.fromJson(<String, Object>{
'bucket': 'luci.fuchsia.continuous',
'status': BuildStatusEnum.completed.value,
'result': BuildResultEnum.success.value,
'tags': const <String>[
'builder:fuchsia-x86_64-linux-release:1509636609227930',
],
'url': '#2',
});
setUp(() {
mockApi = new MockBuildBucketApi();
service = new BuildBucketService(apiProvider: (_) => mockApi);
});
test('getBucketByName should fetch build info based on the given name',
() async {
when(mockApi.search(
bucket: const <String>['luci.fuchsia.ci'],
status: BuildStatusEnum.completed.value,
tag: <String>['builder:$buildName'],
)).thenAnswer((_) => new Future<ApiSearchResponseMessage>.value(
new ApiSearchResponseMessage()
..builds = <ApiCommonBuildMessage>[buildInfoResponse]));
final BuildInfo info = await service.getBuildByName(buildName).first;
expect(info.bucket, 'luci.fuchsia.continuous');
expect(info.status, BuildStatusEnum.completed);
expect(info.result, BuildResultEnum.success);
expect(info.name, 'fuchsia-x86_64-linux-release');
expect(info.url, '#2');
expect(info.type, 'fuchsia');
});
test('getBuildsByname should fetch build info based on the given names',
() async {
when(mockApi.search(
bucket: const <String>['luci.fuchsia.ci'],
status: BuildStatusEnum.completed.value,
tag: <String>['builder:$buildName'],
)).thenAnswer((_) => new Future<ApiSearchResponseMessage>.value(
new ApiSearchResponseMessage()
..builds = <ApiCommonBuildMessage>[buildInfoResponse]));
final List<BuildInfo> results =
await service.getBuildsByName(<String>[buildName]).first;
final BuildInfo info = results.single;
expect(info.bucket, 'luci.fuchsia.continuous');
expect(info.status, BuildStatusEnum.completed);
expect(info.result, BuildResultEnum.success);
expect(info.name, 'fuchsia-x86_64-linux-release');
expect(info.url, '#2');
expect(info.type, 'fuchsia');
});
});
}
/// Mock [BuildbucketApi] implementation.
class MockBuildBucketApi extends Mock implements BuildbucketApi {}