web_validator_test.dart 2.35 KB
Newer Older
1 2 3 4 5 6 7 8 9
// Copyright 2019 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/base/platform.dart';
import 'package:flutter_tools/src/doctor.dart';
import 'package:flutter_tools/src/web/chrome.dart';
import 'package:flutter_tools/src/web/web_validator.dart';
import 'package:mockito/mockito.dart';
10
import 'package:process/process.dart';
11

12 13
import '../../src/common.dart';
import '../../src/testbed.dart';
14 15 16 17 18 19

void main() {
  group('WebValidator', () {
    Testbed testbed;
    WebValidator webValidator;
    MockPlatform mockPlatform;
20
    MockProcessManager mockProcessManager;
21 22

    setUp(() {
23
      mockProcessManager = MockProcessManager();
24
      testbed = Testbed(setup: () {
25
        when(mockProcessManager.canRun(kMacOSExecutable)).thenReturn(true);
26 27 28
        return null;
      }, overrides: <Type, Generator>{
        Platform: () => mockPlatform,
29
        ProcessManager: () => mockProcessManager,
30 31 32 33 34 35 36 37 38 39 40 41 42 43
      });
      webValidator = const WebValidator();
      mockPlatform = MockPlatform();
      when(mockPlatform.isMacOS).thenReturn(true);
      when(mockPlatform.isWindows).thenReturn(false);
      when(mockPlatform.isLinux).thenReturn(false);
    });

    test('Can find macOS executable ', () => testbed.run(() async {
      final ValidationResult result = await webValidator.validate();
      expect(result.type, ValidationType.installed);
    }));

    test('Can notice missing macOS executable ', () => testbed.run(() async {
44
      when(mockProcessManager.canRun(kMacOSExecutable)).thenReturn(false);
45 46 47
      final ValidationResult result = await webValidator.validate();
      expect(result.type, ValidationType.missing);
    }));
48 49 50 51 52 53 54 55 56

    test('Doesn\'t warn about CHROME_EXECUTABLE unless it cant find chrome ', () => testbed.run(() async {
      when(mockProcessManager.canRun(kMacOSExecutable)).thenReturn(false);
      final ValidationResult result = await webValidator.validate();
      expect(result.messages, <ValidationMessage>[
        ValidationMessage.hint('CHROME_EXECUTABLE not set')
      ]);
      expect(result.type, ValidationType.missing);
    }));
57 58 59 60 61 62 63
  });
}

class MockPlatform extends Mock implements Platform  {
  @override
  Map<String, String> get environment => const <String, String>{};
}
64

65
class MockProcessManager extends Mock implements ProcessManager {}