elementary_test

Last updated:

0 purchases

elementary_test Image
elementary_test Images
Add to Cart

Description:

elementary test

Elementary-test #
#



#







Description #
A handy testing library for apps built with Elementary.
Overview #
This library offers some handy tools to test WidgetModel from the Elementary package.
testWidgetModel method #
The main testing tool is the testWidgetModel function, which executes a test. The parameters it requires are the name of the test, the function preparing the WidgetModel for testing, and the test function itself.
a testFunction parameter #
This is a function of the test itself. When passed the WidgetModel, this function describes its behavior and verifies the result. The function also uses a tester to manipulate the phases of the WidgetModel lifecycle and a BuildContext mock.
How to use #
void main() {
late TestPageModelMock model;
late ThemeWrapperMock theme;
late TextThemeMock textTheme;

TestPageWidgetModel setUpWm() {
textTheme = TextThemeMock();
when(() => textTheme.headline4).thenReturn(null);
theme = ThemeWrapperMock();
when(() => theme.getTextTheme(any())).thenReturn(textTheme);
model = TestPageModelMock();
when(() => model.value).thenReturn(0);
when(() => model.increment()).thenAnswer((invocation) => Future.value(1));

return TestPageWidgetModel(model, theme);
}

testWidgetModel<TestPageWidgetModel, TestPageWidget>(
'counterStyle should be headline4',
setUpWm,
(wm, tester, context) {
final style = TextStyleMock();
when(() => textTheme.headline4).thenReturn(style);

tester.init();

expect(wm.counterStyle, style);
},
);

testWidgetModel<TestPageWidgetModel, TestPageWidget>(
'when call increment and before get answer valueState should be loading',
setUpWm,
(wm, tester, context) async {
tester.init();

when(() => model.increment()).thenAnswer(
(invocation) => Future.delayed(
const Duration(milliseconds: 30),
() => 1,
),
);

unawaited(wm.increment());

await Future<void>.delayed(
const Duration(milliseconds: 10),
);

final value = wm.valueState.value;

expect(value, isNotNull);
expect(value!.isLoading, isTrue);
},
);
}
copied to clipboard
Maintainer #



Mikhail Zotyev


Contributors thanks #
Big thanks to all these people, who put their effort into helping the project.


Special thanks to:
Dmitry Krutskikh, Konoshenko Vlad, and
Denis Grafov for the early adoption and the first production feedback;
Alex Bukin for IDE plugins;
All members of the Surf Flutter Team for actively using and providing feedback.
Sponsorship #
Special sponsor of the project:



For all questions regarding sponsorship/collaboration connect with Mikhail Zotyev.

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.