test(localization): add unit tests
Signed-off-by: xsahil03x <[email protected]>
This commit is contained in:
@@ -0,0 +1,109 @@
|
|||||||
|
// ignore_for_file: omit_local_variable_types
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
import 'package:stream_chat_localizations/src/stream_chat_localizations.dart';
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
testWidgets('Nested Localizations', (WidgetTester tester) async {
|
||||||
|
await tester.pumpWidget(MaterialApp(
|
||||||
|
// Creates the outer Localizations widget.
|
||||||
|
home: ListView(
|
||||||
|
children: <Widget>[
|
||||||
|
const LocalizationTracker(key: ValueKey<String>('outer')),
|
||||||
|
Localizations(
|
||||||
|
locale: const Locale('hi'),
|
||||||
|
delegates: GlobalStreamChatLocalizations.delegates,
|
||||||
|
child: const LocalizationTracker(key: ValueKey<String>('inner')),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
));
|
||||||
|
|
||||||
|
final LocalizationTrackerState outerTracker = tester.state(
|
||||||
|
find.byKey(const ValueKey<String>('outer'), skipOffstage: false));
|
||||||
|
expect(outerTracker.captionFontSize, 12.0);
|
||||||
|
final LocalizationTrackerState innerTracker = tester.state(
|
||||||
|
find.byKey(const ValueKey<String>('inner'), skipOffstage: false));
|
||||||
|
expect(innerTracker.captionFontSize, 13.0);
|
||||||
|
});
|
||||||
|
|
||||||
|
testWidgets(
|
||||||
|
'Localizations is compatible with ChangeNotifier.dispose() called '
|
||||||
|
'during didChangeDependencies',
|
||||||
|
(WidgetTester tester) async {
|
||||||
|
// PageView calls ScrollPosition.dispose() during didChangeDependencies.
|
||||||
|
await tester.pumpWidget(MaterialApp(
|
||||||
|
supportedLocales: const <Locale>[
|
||||||
|
Locale('en', 'US'),
|
||||||
|
Locale('hi', 'IN'),
|
||||||
|
],
|
||||||
|
localizationsDelegates: const [
|
||||||
|
DummyLocalizations.delegate,
|
||||||
|
GlobalStreamChatLocalizations.delegate,
|
||||||
|
],
|
||||||
|
home: PageView(),
|
||||||
|
));
|
||||||
|
|
||||||
|
await tester.binding.setLocale('hi', 'IN');
|
||||||
|
await tester.pump();
|
||||||
|
await tester.pumpWidget(Container());
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
testWidgets('Locale without countryCode', (WidgetTester tester) async {
|
||||||
|
// Regression test for https://github.com/flutter/flutter/pull/16782
|
||||||
|
await tester.pumpWidget(MaterialApp(
|
||||||
|
localizationsDelegates: const <LocalizationsDelegate<dynamic>>[
|
||||||
|
GlobalStreamChatLocalizations.delegate,
|
||||||
|
],
|
||||||
|
supportedLocales: const <Locale>[
|
||||||
|
Locale('en', 'US'),
|
||||||
|
Locale('hi'),
|
||||||
|
],
|
||||||
|
home: Container(),
|
||||||
|
));
|
||||||
|
|
||||||
|
await tester.binding.setLocale('hi', '');
|
||||||
|
await tester.pump();
|
||||||
|
await tester.binding.setLocale('en', 'US');
|
||||||
|
await tester.pump();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A localizations delegate that does not contain any useful data, and is only
|
||||||
|
/// used to trigger didChangeDependencies upon locale change.
|
||||||
|
class _DummyLocalizationsDelegate
|
||||||
|
extends LocalizationsDelegate<DummyLocalizations> {
|
||||||
|
const _DummyLocalizationsDelegate();
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<DummyLocalizations> load(Locale locale) async => DummyLocalizations();
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool isSupported(Locale locale) => true;
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool shouldReload(_DummyLocalizationsDelegate old) => true;
|
||||||
|
}
|
||||||
|
|
||||||
|
class DummyLocalizations {
|
||||||
|
static const delegate = _DummyLocalizationsDelegate();
|
||||||
|
}
|
||||||
|
|
||||||
|
class LocalizationTracker extends StatefulWidget {
|
||||||
|
const LocalizationTracker({Key? key}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<StatefulWidget> createState() => LocalizationTrackerState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class LocalizationTrackerState extends State<LocalizationTracker> {
|
||||||
|
late double captionFontSize;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
captionFontSize = Theme.of(context).textTheme.caption!.fontSize!;
|
||||||
|
return Container();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,276 @@
|
|||||||
|
// ignore_for_file: prefer_expression_function_bodies
|
||||||
|
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:stream_chat_flutter/stream_chat_flutter.dart';
|
||||||
|
import 'package:stream_chat_localizations/src/stream_chat_localizations.dart';
|
||||||
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
|
||||||
|
class FooStreamChatLocalizations extends StreamChatLocalizationsEn {
|
||||||
|
FooStreamChatLocalizations(
|
||||||
|
Locale localeName,
|
||||||
|
this.launchUrlError,
|
||||||
|
) : super(localeName: localeName.toString());
|
||||||
|
|
||||||
|
@override
|
||||||
|
final String launchUrlError;
|
||||||
|
}
|
||||||
|
|
||||||
|
class FooStreamChatLocalizationsDelegate
|
||||||
|
extends LocalizationsDelegate<StreamChatLocalizations> {
|
||||||
|
const FooStreamChatLocalizationsDelegate({
|
||||||
|
this.supportedLanguage = 'en',
|
||||||
|
this.launchUrlError = 'foo',
|
||||||
|
});
|
||||||
|
|
||||||
|
final String supportedLanguage;
|
||||||
|
final String launchUrlError;
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool isSupported(Locale locale) =>
|
||||||
|
supportedLanguage == 'allLanguages' ||
|
||||||
|
locale.languageCode == supportedLanguage;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<FooStreamChatLocalizations> load(Locale locale) =>
|
||||||
|
SynchronousFuture<FooStreamChatLocalizations>(
|
||||||
|
FooStreamChatLocalizations(locale, launchUrlError),
|
||||||
|
);
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool shouldReload(FooStreamChatLocalizationsDelegate old) => false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget buildFrame({
|
||||||
|
Locale? locale,
|
||||||
|
Iterable<LocalizationsDelegate> delegates =
|
||||||
|
GlobalStreamChatLocalizations.delegates,
|
||||||
|
required WidgetBuilder buildContent,
|
||||||
|
LocaleResolutionCallback? localeResolutionCallback,
|
||||||
|
Iterable<Locale> supportedLocales = const <Locale>[
|
||||||
|
Locale('en', 'US'),
|
||||||
|
Locale('hi', 'IN'),
|
||||||
|
],
|
||||||
|
}) =>
|
||||||
|
MaterialApp(
|
||||||
|
color: const Color(0xFFFFFFFF),
|
||||||
|
locale: locale,
|
||||||
|
supportedLocales: supportedLocales,
|
||||||
|
localizationsDelegates: delegates,
|
||||||
|
localeResolutionCallback: localeResolutionCallback,
|
||||||
|
onGenerateRoute: (RouteSettings settings) => MaterialPageRoute<void>(
|
||||||
|
builder: (BuildContext context) => buildContent(context)),
|
||||||
|
);
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
testWidgets(
|
||||||
|
'Locale fallbacks',
|
||||||
|
(WidgetTester tester) async {
|
||||||
|
final Key textKey = UniqueKey();
|
||||||
|
|
||||||
|
await tester.pumpWidget(
|
||||||
|
buildFrame(
|
||||||
|
buildContent: (BuildContext context) => Text(
|
||||||
|
StreamChatLocalizations.of(context)!.launchUrlError,
|
||||||
|
key: textKey,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
tester.widget<Text>(find.byKey(textKey)).data,
|
||||||
|
'Cannot launch the url',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Unrecognized locale falls back to 'en'
|
||||||
|
await tester.binding.setLocale('foo', 'BAR');
|
||||||
|
await tester.pump();
|
||||||
|
expect(
|
||||||
|
tester.widget<Text>(find.byKey(textKey)).data,
|
||||||
|
'Cannot launch the url',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Indian hindi locale, falls back to just 'hi'
|
||||||
|
await tester.binding.setLocale('hi', 'IN');
|
||||||
|
await tester.pump();
|
||||||
|
expect(
|
||||||
|
tester.widget<Text>(find.byKey(textKey)).data,
|
||||||
|
'यूआरएल लॉन्च नहीं कर सकते',
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
testWidgets(
|
||||||
|
"Localizations.override widget tracks parent's locale",
|
||||||
|
(WidgetTester tester) async {
|
||||||
|
Widget buildLocaleFrame(Locale locale) => buildFrame(
|
||||||
|
locale: locale,
|
||||||
|
supportedLocales: <Locale>[locale],
|
||||||
|
buildContent: (BuildContext context) => Localizations.override(
|
||||||
|
context: context,
|
||||||
|
child: Builder(
|
||||||
|
builder: (BuildContext context) {
|
||||||
|
// No StreamChatLocalizations are defined for the first
|
||||||
|
// Localizations ancestor, so we should get the values from
|
||||||
|
// the default one, i.e. the one created by WidgetsApp via
|
||||||
|
// the LocalizationsDelegate provided by MaterialApp.
|
||||||
|
return Text(
|
||||||
|
StreamChatLocalizations.of(context)!.launchUrlError,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
await tester.pumpWidget(buildLocaleFrame(const Locale('en', 'US')));
|
||||||
|
expect(find.text('Cannot launch the url'), findsOneWidget);
|
||||||
|
|
||||||
|
await tester.pumpWidget(buildLocaleFrame(const Locale('hi', 'IN')));
|
||||||
|
expect(find.text('यूआरएल लॉन्च नहीं कर सकते'), findsOneWidget);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
testWidgets('Localizations.override widget with hardwired locale',
|
||||||
|
(WidgetTester tester) async {
|
||||||
|
Widget buildLocaleFrame(Locale locale) => buildFrame(
|
||||||
|
locale: locale,
|
||||||
|
buildContent: (BuildContext context) {
|
||||||
|
return Localizations.override(
|
||||||
|
context: context,
|
||||||
|
locale: const Locale('en', 'US'),
|
||||||
|
child: Builder(
|
||||||
|
builder: (BuildContext context) {
|
||||||
|
// No StreamChatLocalizations are defined for the first
|
||||||
|
// Localizations ancestor, so we should get the values from
|
||||||
|
// the default one, i.e. the one created by WidgetsApp via
|
||||||
|
// the LocalizationsDelegate provided by MaterialApp.
|
||||||
|
return Text(
|
||||||
|
StreamChatLocalizations.of(context)!.launchUrlError,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
await tester.pumpWidget(buildLocaleFrame(const Locale('en', 'US')));
|
||||||
|
expect(find.text('Cannot launch the url'), findsOneWidget);
|
||||||
|
|
||||||
|
await tester.pumpWidget(buildLocaleFrame(const Locale('hi', 'IN')));
|
||||||
|
expect(find.text('Cannot launch the url'), findsOneWidget);
|
||||||
|
});
|
||||||
|
|
||||||
|
testWidgets(
|
||||||
|
'MaterialApp adds StreamChatLocalizations for additional languages',
|
||||||
|
(WidgetTester tester) async {
|
||||||
|
final Key textKey = UniqueKey();
|
||||||
|
|
||||||
|
await tester.pumpWidget(buildFrame(
|
||||||
|
delegates: <LocalizationsDelegate<StreamChatLocalizations>>[
|
||||||
|
GlobalStreamChatLocalizations.delegate,
|
||||||
|
const FooStreamChatLocalizationsDelegate(
|
||||||
|
supportedLanguage: 'fr',
|
||||||
|
launchUrlError: "Impossible de lancer l'url",
|
||||||
|
),
|
||||||
|
const FooStreamChatLocalizationsDelegate(
|
||||||
|
supportedLanguage: 'de',
|
||||||
|
launchUrlError: 'Kann die URL nicht starten',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
supportedLocales: const <Locale>[
|
||||||
|
Locale('en'),
|
||||||
|
Locale('hi'),
|
||||||
|
Locale('fr'),
|
||||||
|
Locale('de'),
|
||||||
|
],
|
||||||
|
buildContent: (BuildContext context) => Text(
|
||||||
|
StreamChatLocalizations.of(context)!.launchUrlError,
|
||||||
|
key: textKey,
|
||||||
|
),
|
||||||
|
));
|
||||||
|
|
||||||
|
expect(
|
||||||
|
tester.widget<Text>(find.byKey(textKey)).data,
|
||||||
|
'Cannot launch the url',
|
||||||
|
);
|
||||||
|
|
||||||
|
await tester.binding.setLocale('hi', 'IN');
|
||||||
|
await tester.pump();
|
||||||
|
expect(find.text('यूआरएल लॉन्च नहीं कर सकते'), findsOneWidget);
|
||||||
|
|
||||||
|
await tester.binding.setLocale('fr', 'CA');
|
||||||
|
await tester.pump();
|
||||||
|
expect(find.text("Impossible de lancer l'url"), findsOneWidget);
|
||||||
|
|
||||||
|
await tester.binding.setLocale('de', 'DE');
|
||||||
|
await tester.pump();
|
||||||
|
expect(find.text('Kann die URL nicht starten'), findsOneWidget);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
testWidgets(
|
||||||
|
'MaterialApp overrides MaterialLocalizations for all locales',
|
||||||
|
(WidgetTester tester) async {
|
||||||
|
final Key textKey = UniqueKey();
|
||||||
|
|
||||||
|
await tester.pumpWidget(buildFrame(
|
||||||
|
// Accept whatever locale we're given
|
||||||
|
localeResolutionCallback:
|
||||||
|
(Locale? locale, Iterable<Locale> supportedLocales) => locale,
|
||||||
|
delegates: <FooStreamChatLocalizationsDelegate>[
|
||||||
|
const FooStreamChatLocalizationsDelegate(
|
||||||
|
supportedLanguage: 'allLanguages',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
buildContent: (BuildContext context) {
|
||||||
|
// Should always be 'foo', no matter what the locale is
|
||||||
|
return Text(
|
||||||
|
StreamChatLocalizations.of(context)!.launchUrlError,
|
||||||
|
key: textKey,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
));
|
||||||
|
|
||||||
|
expect(tester.widget<Text>(find.byKey(textKey)).data, 'foo');
|
||||||
|
|
||||||
|
await tester.binding.setLocale('zh', 'CN');
|
||||||
|
await tester.pump();
|
||||||
|
expect(find.text('foo'), findsOneWidget);
|
||||||
|
|
||||||
|
await tester.binding.setLocale('de', 'DE');
|
||||||
|
await tester.pump();
|
||||||
|
expect(find.text('foo'), findsOneWidget);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
testWidgets(
|
||||||
|
'MaterialApp overrides MaterialLocalizations for default locale',
|
||||||
|
(WidgetTester tester) async {
|
||||||
|
final Key textKey = UniqueKey();
|
||||||
|
|
||||||
|
await tester.pumpWidget(buildFrame(
|
||||||
|
delegates: <FooStreamChatLocalizationsDelegate>[
|
||||||
|
const FooStreamChatLocalizationsDelegate(),
|
||||||
|
],
|
||||||
|
// supportedLocales not specified, so all locales resolve to 'en'
|
||||||
|
buildContent: (BuildContext context) => Text(
|
||||||
|
StreamChatLocalizations.of(context)!.launchUrlError,
|
||||||
|
key: textKey,
|
||||||
|
),
|
||||||
|
));
|
||||||
|
|
||||||
|
// Unsupported locale '_' (the widget tester's default) resolves to 'en'.
|
||||||
|
expect(tester.widget<Text>(find.byKey(textKey)).data, 'foo');
|
||||||
|
|
||||||
|
// Unsupported locale 'zh' resolves to 'en'.
|
||||||
|
await tester.binding.setLocale('zh', 'CN');
|
||||||
|
await tester.pump();
|
||||||
|
expect(find.text('foo'), findsOneWidget);
|
||||||
|
|
||||||
|
// Unsupported locale 'de' resolves to 'en'.
|
||||||
|
await tester.binding.setLocale('de', 'DE');
|
||||||
|
await tester.pump();
|
||||||
|
expect(find.text('foo'), findsOneWidget);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
import 'dart:ui';
|
|
||||||
|
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
|
||||||
|
|
||||||
import 'package:stream_chat_localizations/stream_chat_localizations.dart';
|
|
||||||
|
|
||||||
void main() {
|
|
||||||
for (final language in kStreamChatSupportedLanguages) {
|
|
||||||
test('translations exist for $language', () async {
|
|
||||||
final locale = Locale(language);
|
|
||||||
expect(
|
|
||||||
GlobalStreamChatLocalizations.delegate.isSupported(locale),
|
|
||||||
isTrue,
|
|
||||||
);
|
|
||||||
final localizations =
|
|
||||||
await GlobalStreamChatLocalizations.delegate.load(locale);
|
|
||||||
expect(localizations.launchUrlError, isNotNull);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,164 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
import 'package:stream_chat_flutter/stream_chat_flutter.dart';
|
||||||
|
|
||||||
|
import 'package:stream_chat_localizations/stream_chat_localizations.dart';
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
for (final language in kStreamChatSupportedLanguages) {
|
||||||
|
test('translations exist for $language', () async {
|
||||||
|
final locale = Locale(language);
|
||||||
|
expect(
|
||||||
|
GlobalStreamChatLocalizations.delegate.isSupported(locale), isTrue);
|
||||||
|
final localizations =
|
||||||
|
await GlobalStreamChatLocalizations.delegate.load(locale);
|
||||||
|
expect(localizations.launchUrlError, isNotNull);
|
||||||
|
expect(localizations.loadingUsersError, isNotNull);
|
||||||
|
expect(localizations.noUsersLabel, isNotNull);
|
||||||
|
expect(localizations.retryLabel, isNotNull);
|
||||||
|
expect(localizations.userLastOnlineText, isNotNull);
|
||||||
|
expect(localizations.userOnlineText, isNotNull);
|
||||||
|
expect(localizations.userOnlineText, isNotNull);
|
||||||
|
// no users
|
||||||
|
expect(localizations.userTypingText([]), isNotNull);
|
||||||
|
// single user
|
||||||
|
expect(localizations.userTypingText([User(id: 'test-id')]), isNotNull);
|
||||||
|
// multiple users
|
||||||
|
expect(
|
||||||
|
localizations.userTypingText([
|
||||||
|
User(id: 'test-id-1'),
|
||||||
|
User(id: 'test-id-2'),
|
||||||
|
]),
|
||||||
|
isNotNull,
|
||||||
|
);
|
||||||
|
expect(localizations.threadReplyLabel, isNotNull);
|
||||||
|
expect(localizations.onlyVisibleToYouText, isNotNull);
|
||||||
|
expect(localizations.threadReplyCountText(3), isNotNull);
|
||||||
|
expect(
|
||||||
|
localizations.attachmentsUploadProgressText(remaining: 3, total: 10),
|
||||||
|
isNotNull,
|
||||||
|
);
|
||||||
|
expect(
|
||||||
|
localizations.pinnedByUserText(
|
||||||
|
pinnedBy: User(id: 'pinned-by-user-id'),
|
||||||
|
currentUser: OwnUser(id: 'current-user-id'),
|
||||||
|
),
|
||||||
|
isNotNull,
|
||||||
|
);
|
||||||
|
expect(localizations.emptyMessagesText, isNotNull);
|
||||||
|
expect(localizations.genericErrorText, isNotNull);
|
||||||
|
expect(localizations.loadingMessagesError, isNotNull);
|
||||||
|
expect(localizations.resultCountText(3), isNotNull);
|
||||||
|
expect(localizations.messageDeletedText, isNotNull);
|
||||||
|
expect(localizations.messageDeletedLabel, isNotNull);
|
||||||
|
expect(localizations.messageReactionsText, isNotNull);
|
||||||
|
expect(localizations.emptyChatMessagesText, isNotNull);
|
||||||
|
expect(localizations.threadSeparatorText(3), isNotNull);
|
||||||
|
expect(localizations.connectedLabel, isNotNull);
|
||||||
|
expect(localizations.disconnectedLabel, isNotNull);
|
||||||
|
expect(localizations.reconnectingLabel, isNotNull);
|
||||||
|
expect(localizations.alsoSendAsDirectMessageLabel, isNotNull);
|
||||||
|
expect(localizations.addACommentOrSendLabel, isNotNull);
|
||||||
|
expect(localizations.searchGifLabel, isNotNull);
|
||||||
|
expect(localizations.writeAMessageLabel, isNotNull);
|
||||||
|
expect(localizations.instantCommandsLabel, isNotNull);
|
||||||
|
expect(localizations.fileTooLargeAfterCompressionError, isNotNull);
|
||||||
|
expect(localizations.fileTooLargeError, isNotNull);
|
||||||
|
expect(localizations.emojiMatchingQueryText('sahil'), isNotNull);
|
||||||
|
expect(localizations.addAFileLabel, isNotNull);
|
||||||
|
expect(localizations.photoFromCameraLabel, isNotNull);
|
||||||
|
expect(localizations.uploadAFileLabel, isNotNull);
|
||||||
|
expect(localizations.uploadAPhotoLabel, isNotNull);
|
||||||
|
expect(localizations.uploadAVideoLabel, isNotNull);
|
||||||
|
expect(localizations.videoFromCameraLabel, isNotNull);
|
||||||
|
expect(localizations.okLabel, isNotNull);
|
||||||
|
expect(localizations.somethingWentWrongLabel, isNotNull);
|
||||||
|
expect(localizations.addMoreFilesLabel, isNotNull);
|
||||||
|
expect(localizations.enablePhotoAndVideoAccessMessage, isNotNull);
|
||||||
|
expect(localizations.allowGalleryAccessMessage, isNotNull);
|
||||||
|
expect(localizations.flagMessageLabel, isNotNull);
|
||||||
|
expect(localizations.flagMessageQuestion, isNotNull);
|
||||||
|
expect(localizations.flagLabel, isNotNull);
|
||||||
|
expect(localizations.cancelLabel, isNotNull);
|
||||||
|
expect(localizations.flagMessageSuccessfulLabel, isNotNull);
|
||||||
|
expect(localizations.flagMessageSuccessfulText, isNotNull);
|
||||||
|
expect(localizations.deleteLabel, isNotNull);
|
||||||
|
expect(localizations.deleteMessageLabel, isNotNull);
|
||||||
|
expect(localizations.deleteMessageQuestion, isNotNull);
|
||||||
|
expect(localizations.operationCouldNotBeCompletedText, isNotNull);
|
||||||
|
expect(localizations.replyLabel, isNotNull);
|
||||||
|
// pinned
|
||||||
|
expect(localizations.togglePinUnpinText(pinned: true), isNotNull);
|
||||||
|
// un-pinned
|
||||||
|
expect(localizations.togglePinUnpinText(pinned: false), isNotNull);
|
||||||
|
// delete-failed
|
||||||
|
expect(
|
||||||
|
localizations.toggleDeleteRetryDeleteMessageText(isDeleteFailed: true),
|
||||||
|
isNotNull,
|
||||||
|
);
|
||||||
|
// first-delete
|
||||||
|
expect(
|
||||||
|
localizations.toggleDeleteRetryDeleteMessageText(isDeleteFailed: false),
|
||||||
|
isNotNull,
|
||||||
|
);
|
||||||
|
expect(localizations.copyMessageLabel, isNotNull);
|
||||||
|
expect(localizations.editMessageLabel, isNotNull);
|
||||||
|
// resend-failed
|
||||||
|
expect(
|
||||||
|
localizations.toggleResendOrResendEditedMessage(isUpdateFailed: true),
|
||||||
|
isNotNull,
|
||||||
|
);
|
||||||
|
// first resend
|
||||||
|
expect(
|
||||||
|
localizations.toggleResendOrResendEditedMessage(isUpdateFailed: false),
|
||||||
|
isNotNull,
|
||||||
|
);
|
||||||
|
expect(localizations.photosLabel, isNotNull);
|
||||||
|
expect(
|
||||||
|
localizations.sentAtText(
|
||||||
|
date: DateTime.now(),
|
||||||
|
time: DateTime.now(),
|
||||||
|
),
|
||||||
|
isNotNull,
|
||||||
|
);
|
||||||
|
expect(localizations.todayLabel, isNotNull);
|
||||||
|
expect(localizations.yesterdayLabel, isNotNull);
|
||||||
|
expect(localizations.channelIsMutedText, isNotNull);
|
||||||
|
expect(localizations.noTitleText, isNotNull);
|
||||||
|
expect(localizations.letsStartChattingLabel, isNotNull);
|
||||||
|
expect(localizations.sendingFirstMessageLabel, isNotNull);
|
||||||
|
expect(localizations.startAChatLabel, isNotNull);
|
||||||
|
expect(localizations.loadingChannelsError, isNotNull);
|
||||||
|
expect(localizations.deleteConversationQuestion, isNotNull);
|
||||||
|
expect(localizations.streamChatLabel, isNotNull);
|
||||||
|
expect(localizations.searchingForNetworkLabel, isNotNull);
|
||||||
|
expect(localizations.offlineLabel, isNotNull);
|
||||||
|
expect(localizations.tryAgainLabel, isNotNull);
|
||||||
|
// 1 member
|
||||||
|
expect(localizations.membersCountText(1), isNotNull);
|
||||||
|
// 3 members
|
||||||
|
expect(localizations.membersCountText(3), isNotNull);
|
||||||
|
// 1 member
|
||||||
|
expect(localizations.watchersCountText(1), isNotNull);
|
||||||
|
// 3 members
|
||||||
|
expect(localizations.watchersCountText(3), isNotNull);
|
||||||
|
expect(localizations.viewInfoLabel, isNotNull);
|
||||||
|
expect(localizations.leaveGroupLabel, isNotNull);
|
||||||
|
expect(localizations.leaveLabel, isNotNull);
|
||||||
|
expect(localizations.leaveConversationLabel, isNotNull);
|
||||||
|
expect(localizations.leaveConversationQuestion, isNotNull);
|
||||||
|
expect(localizations.showInChatLabel, isNotNull);
|
||||||
|
expect(localizations.saveVideoLabel, isNotNull);
|
||||||
|
expect(localizations.uploadErrorLabel, isNotNull);
|
||||||
|
expect(localizations.giphyLabel, isNotNull);
|
||||||
|
expect(localizations.shuffleLabel, isNotNull);
|
||||||
|
expect(localizations.sendLabel, isNotNull);
|
||||||
|
expect(localizations.withText, isNotNull);
|
||||||
|
expect(localizations.inText, isNotNull);
|
||||||
|
expect(localizations.youText, isNotNull);
|
||||||
|
expect(localizations.ofText, isNotNull);
|
||||||
|
expect(localizations.fileText, isNotNull);
|
||||||
|
expect(localizations.replyToMessageLabel, isNotNull);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user