| // Copyright 2017 The Chromium 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:flutter_tools/src/doctor.dart'; |
| import 'package:flutter_tools/src/macos/cocoapods.dart'; |
| import 'package:flutter_tools/src/macos/cocoapods_validator.dart'; |
| import 'package:mockito/mockito.dart'; |
| |
| import '../src/common.dart'; |
| import '../src/context.dart'; |
| |
| void main() { |
| group('CocoaPods validation', () { |
| MockCocoaPods cocoaPods; |
| |
| setUp(() { |
| cocoaPods = MockCocoaPods(); |
| when(cocoaPods.evaluateCocoaPodsInstallation) |
| .thenAnswer((_) async => CocoaPodsStatus.recommended); |
| when(cocoaPods.isCocoaPodsInitialized).thenAnswer((_) async => true); |
| when(cocoaPods.cocoaPodsVersionText).thenAnswer((_) async => '1.8.0'); |
| }); |
| |
| testUsingContext('Emits installed status when CocoaPods is installed', () async { |
| final CocoaPodsTestTarget workflow = CocoaPodsTestTarget(); |
| final ValidationResult result = await workflow.validate(); |
| expect(result.type, ValidationType.installed); |
| }, overrides: <Type, Generator>{ |
| CocoaPods: () => cocoaPods, |
| }); |
| |
| testUsingContext('Emits missing status when CocoaPods is not installed', () async { |
| when(cocoaPods.evaluateCocoaPodsInstallation) |
| .thenAnswer((_) async => CocoaPodsStatus.notInstalled); |
| final CocoaPodsTestTarget workflow = CocoaPodsTestTarget(); |
| final ValidationResult result = await workflow.validate(); |
| expect(result.type, ValidationType.missing); |
| }, overrides: <Type, Generator>{ |
| CocoaPods: () => cocoaPods, |
| }); |
| |
| testUsingContext('Emits partial status when CocoaPods is installed with unknown version', () async { |
| when(cocoaPods.evaluateCocoaPodsInstallation) |
| .thenAnswer((_) async => CocoaPodsStatus.unknownVersion); |
| final CocoaPodsTestTarget workflow = CocoaPodsTestTarget(); |
| final ValidationResult result = await workflow.validate(); |
| expect(result.type, ValidationType.partial); |
| }, overrides: <Type, Generator>{ |
| CocoaPods: () => cocoaPods, |
| }); |
| |
| testUsingContext('Emits partial status when CocoaPods is not initialized', () async { |
| when(cocoaPods.isCocoaPodsInitialized).thenAnswer((_) async => false); |
| final CocoaPodsTestTarget workflow = CocoaPodsTestTarget(); |
| final ValidationResult result = await workflow.validate(); |
| expect(result.type, ValidationType.partial); |
| }, overrides: <Type, Generator>{ |
| CocoaPods: () => cocoaPods, |
| }); |
| |
| testUsingContext('Emits partial status when CocoaPods version is too low', () async { |
| when(cocoaPods.evaluateCocoaPodsInstallation) |
| .thenAnswer((_) async => CocoaPodsStatus.belowRecommendedVersion); |
| final CocoaPodsTestTarget workflow = CocoaPodsTestTarget(); |
| final ValidationResult result = await workflow.validate(); |
| expect(result.type, ValidationType.partial); |
| }, overrides: <Type, Generator>{ |
| CocoaPods: () => cocoaPods, |
| }); |
| |
| testUsingContext('Emits installed status when homebrew not installed, but not needed', () async { |
| final CocoaPodsTestTarget workflow = CocoaPodsTestTarget(hasHomebrew: false); |
| final ValidationResult result = await workflow.validate(); |
| expect(result.type, ValidationType.installed); |
| }, overrides: <Type, Generator>{ |
| CocoaPods: () => cocoaPods, |
| }); |
| }); |
| } |
| |
| class MockCocoaPods extends Mock implements CocoaPods {} |
| |
| class CocoaPodsTestTarget extends CocoaPodsValidator { |
| CocoaPodsTestTarget({ |
| this.hasHomebrew = true, |
| }); |
| |
| @override |
| final bool hasHomebrew; |
| } |