mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-14 08:25:16 +00:00

Add enhanced media controls and social sharing features. * **Enhanced Media Controls:** - Add volume control slider to `PlayerControls` widget in `lib/modules/player/player_controls.dart`. - Implement keyboard shortcuts for media controls (play/pause, next/previous track, volume up/down) in `PlayerControls` widget. - Add "lyrics" button to `PlayerView` widget in `lib/modules/player/player.dart`. * **Social Sharing Features:** - Add feature to share the currently playing track on social media platforms in `lib/components/track_tile/track_options.dart`. - Add share button to `TrackPresentationTopSection` widget in `lib/components/track_presentation/presentation_top.dart`. * **Settings:** - Add dark mode toggle in the settings page in `lib/pages/settings/settings.dart`. * **CI Configuration:** - Add `.ci.yaml` file for continuous integration configuration.
119 lines
4.1 KiB
Dart
119 lines
4.1 KiB
Dart
// Copyright 2014 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 'dart:io';
|
|
|
|
import 'package:customer_testing/customer_test.dart';
|
|
import 'package:file/file.dart';
|
|
import 'package:file/memory.dart';
|
|
|
|
import 'common.dart';
|
|
|
|
void main() {
|
|
test('constructs expected model', () async {
|
|
const String registryContent = '''
|
|
contact=abc@gmail.com
|
|
fetch=git clone https://github.com/flutter/cocoon.git tests
|
|
fetch=git -C tests checkout abc123
|
|
setup=flutter --version
|
|
setup.windows=flutter doctor
|
|
setup.posix=flutter -h
|
|
setup.linux=flutter analyze -h
|
|
setup.macos=flutter build -h
|
|
update=.
|
|
# Runs flutter analyze, flutter test, and builds web platform
|
|
test.posix=./test_utilities/bin/flutter_test_runner.sh app_flutter
|
|
test.posix=./test_utilities/bin/flutter_test_runner.sh repo_dashboard
|
|
test.windows=.\test_utilities\bin\flutter_test_runner.bat repo_dashboard
|
|
''';
|
|
final File registryFile = MemoryFileSystem().file('flutter_cocoon.test')
|
|
..writeAsStringSync(registryContent);
|
|
|
|
final CustomerTest test = CustomerTest(registryFile);
|
|
expect(test.contacts, containsAll(<String>['abc@gmail.com']));
|
|
expect(
|
|
test.fetch,
|
|
containsAllInOrder(<String>[
|
|
'git clone https://github.com/flutter/cocoon.git tests',
|
|
'git -C tests checkout abc123',
|
|
]),
|
|
);
|
|
expect(test.setup.first, 'flutter --version');
|
|
if (Platform.isLinux || Platform.isMacOS) {
|
|
expect(test.setup.length, 3);
|
|
expect(test.setup[1], 'flutter -h');
|
|
expect(test.setup[2], Platform.isLinux ? 'flutter analyze -h' : 'flutter build -h');
|
|
expect(
|
|
test.tests,
|
|
containsAllInOrder(<String>[
|
|
'./test_utilities/bin/flutter_test_runner.sh app_flutter',
|
|
'./test_utilities/bin/flutter_test_runner.sh repo_dashboard',
|
|
]),
|
|
);
|
|
} else if (Platform.isWindows) {
|
|
expect(test.setup.length, 2);
|
|
expect(test.setup[1], 'flutter doctor');
|
|
expect(
|
|
test.tests,
|
|
containsAllInOrder(<String>['.\test_utilities\bin\flutter_test_runner.bat repo_dashboard']),
|
|
);
|
|
}
|
|
});
|
|
|
|
test('throws exception when unknown field is passed', () async {
|
|
const String registryContent = '''
|
|
contact=abc@gmail.com
|
|
update=.
|
|
fetch=git clone https://github.com/flutter/cocoon.git tests
|
|
fetch=git -C tests checkout abc123
|
|
test.posix=./test_utilities/bin/flutter_test_runner.sh app_flutter
|
|
test.windows=.\test_utilities\bin\flutter_test_runner.bat repo_dashboard
|
|
unknownfield=super not cool
|
|
''';
|
|
final File registryFile = MemoryFileSystem().file('abc.test')
|
|
..writeAsStringSync(registryContent);
|
|
|
|
expect(() => CustomerTest(registryFile), throwsFormatException);
|
|
});
|
|
|
|
test('throws exception when no tests given', () async {
|
|
const String registryContent = '''
|
|
contact=abc@gmail.com
|
|
update=.
|
|
fetch=git clone https://github.com/flutter/cocoon.git tests
|
|
''';
|
|
final File registryFile = MemoryFileSystem().file('abc.test')
|
|
..writeAsStringSync(registryContent);
|
|
|
|
expect(() => CustomerTest(registryFile), throwsFormatException);
|
|
});
|
|
|
|
test('throws exception when only one fetch instruction given', () async {
|
|
const String registryContent = '''
|
|
contact=abc@gmail.com
|
|
update=.
|
|
fetch=git clone https://github.com/flutter/cocoon.git tests
|
|
test.posix=./test_utilities/bin/flutter_test_runner.sh app_flutter
|
|
test.windows=.\test_utilities\bin\flutter_test_runner.bat repo_dashboard
|
|
''';
|
|
final File registryFile = MemoryFileSystem().file('abc.test')
|
|
..writeAsStringSync(registryContent);
|
|
|
|
expect(() => CustomerTest(registryFile), throwsFormatException);
|
|
});
|
|
|
|
test('throws exception when no contacts given', () async {
|
|
const String registryContent = '''
|
|
update=.
|
|
fetch=git clone https://github.com/flutter/cocoon.git tests
|
|
test.posix=./test_utilities/bin/flutter_test_runner.sh app_flutter
|
|
test.windows=.\test_utilities\bin\flutter_test_runner.bat repo_dashboard
|
|
''';
|
|
final File registryFile = MemoryFileSystem().file('abc.test')
|
|
..writeAsStringSync(registryContent);
|
|
|
|
expect(() => CustomerTest(registryFile), throwsFormatException);
|
|
});
|
|
}
|