pdf_signature/test/features/step/the_app_supports_languages....

36 lines
1.1 KiB
Dart

import 'package:bdd_widget_test/data_table.dart' as bdd;
import 'package:flutter_test/flutter_test.dart';
/// Usage: the app supports languages
/// | 'en' |
/// | 'zh-TW' |
/// | 'es' |
Future<void> theAppSupportsLanguages(
WidgetTester tester,
dynamic languages,
) async {
// Accept either a DataTable from bdd_widget_test or a string like "{en, zh-TW, es}"
final Set<String> expected;
if (languages is bdd.DataTable) {
final lists = languages.asLists();
// Flatten ignoring header rows if any
final items = lists
.skipWhile((row) => row.any((e) => e.toString().contains('artist') || e.toString().contains('name')))
.expand((row) => row)
.map((e) => e.toString().replaceAll("'", '').trim())
.where((e) => e.isNotEmpty)
.toSet();
expected = items;
} else {
final raw = languages.toString().trim();
final inner = raw.startsWith('{') && raw.endsWith('}')
? raw.substring(1, raw.length - 1)
: raw;
expected = inner.split(',').map((s) => s.trim().replaceAll("'", '')).toSet();
}
// Keep this in sync with the app's supported locales
const actual = {'en', 'zh-TW', 'es'};
expect(actual, expected);
}