Toggle navigation
Toggle navigation
This project
Loading...
Sign in
flutter_package
/
fluttertpc_get
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Jonatas
2020-09-28 15:30:15 -0300
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
ce1ff19e625f1e67a73d24326ffccb164351e77b
ce1ff19e
1 parent
4eaf7b10
update mockito on getTests
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
186 additions
and
5 deletions
packages/get_test/example/pubspec.yaml
packages/get_test/lib/utils/image_test_utils.dart
packages/get_test/pubspec.yaml
packages/get_test/example/pubspec.yaml
View file @
ce1ff19
...
...
@@ -23,10 +23,11 @@ environment:
dependencies
:
flutter
:
sdk
:
flutter
get_test
:
path
:
../
get
:
path
:
../../../getx
git
:
url
:
git://github.com/jonataslaw/getx.git
path
:
getx
ref
:
master
# The following adds the Cupertino Icons font to your application.
...
...
packages/get_test/lib/utils/image_test_utils.dart
0 → 100644
View file @
ce1ff19
import
'dart:async'
;
import
'dart:io'
;
import
'package:mockito/mockito.dart'
;
/// Copyright 2018 Iiro Krankka
/// Redistribution and use in source and binary forms, with or without
/// modification, are permitted provided that the following conditions are met:
/// 1. Redistributions of source code must retain the above copyright notice,
/// this list of conditions and the following disclaimer.
/// 2. Redistributions in binary form must reproduce the above copyright
/// notice, this list of conditions and the following disclaimer in the
/// documentation and/or other materials provided with the distribution.
/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
/// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
/// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
/// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
/// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
/// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
/// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
/// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
/// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
/// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
/// USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/// Runs [body] in a fresh [Zone] that provides mocked responses for
/// [Image.network] widgets.
///
/// Behind the scenes, this creates a mocked HTTP client that responds
/// with mocked
/// image data to all HTTP GET requests.
///
/// This is a workaround needed for widget tests that use network images.
/// Without
/// the mocked HTTP client, any widget tests that pump a widget tree containing
/// [Image.network] widgets will crash.
///
/// By default, the mocked HTTP client will respond with [_transparentImage]. If
/// provided, it will use [imageBytes] instead.
///
/// Example usage in a test case:
///
/// ```
/// void main() {
/// testWidgets('should not crash', (WidgetTester tester) async {
/// provideMockedNetworkImages(() async {
/// await tester.pumpWidget(
/// MaterialApp(
/// home: Image.network('https://example.com/image.png'),
/// ),
/// );
/// });
/// });
/// }
/// ```
///
/// Note that you'll want to add this package to the dev_dependencies instead of
/// the regular dependencies block on your pubspec.yaml.
///
/// For more context about [Image.network] widgets failing in widget tests, see
/// these issues:
///
/// * https://github.com/flutter/flutter/issues/13433
/// * https://github.com/flutter/flutter_markdown/pull/17
///
/// The underlying code is taken from the Flutter repo:
/// https://github.com/flutter/flutter/blob/master/dev/manual_tests/test/mock_image_http.dart
R
provideMockedNetworkImages
<
R
>(
R
body
(),
{
List
<
int
>
imageBytes
=
_transparentImage
})
{
return
HttpOverrides
.
runZoned
(
body
,
createHttpClient:
(
_
)
=>
_createMockImageHttpClient
(
_
,
imageBytes
),
);
}
class
MockHttpClient
extends
Mock
implements
HttpClient
{}
class
MockHttpClientRequest
extends
Mock
implements
HttpClientRequest
{}
class
MockHttpClientResponse
extends
Mock
implements
HttpClientResponse
{}
class
MockHttpHeaders
extends
Mock
implements
HttpHeaders
{}
// Returns a mock HTTP client that responds with an image to all requests.
MockHttpClient
_createMockImageHttpClient
(
SecurityContext
_
,
List
<
int
>
imageBytes
)
{
final
client
=
MockHttpClient
();
final
request
=
MockHttpClientRequest
();
final
response
=
MockHttpClientResponse
();
final
headers
=
MockHttpHeaders
();
when
(
client
.
getUrl
(
any
))
.
thenAnswer
((
_
)
=>
Future
<
HttpClientRequest
>.
value
(
request
));
when
(
request
.
headers
).
thenReturn
(
headers
);
when
(
request
.
close
())
.
thenAnswer
((
_
)
=>
Future
<
HttpClientResponse
>.
value
(
response
));
when
(
response
.
contentLength
).
thenReturn
(
_transparentImage
.
length
);
when
(
response
.
statusCode
).
thenReturn
(
HttpStatus
.
ok
);
when
(
response
.
listen
(
any
)).
thenAnswer
((
invocation
)
{
final
onData
=
invocation
.
positionalArguments
[
0
]
as
void
Function
(
List
<
int
>);
final
onDone
=
invocation
.
namedArguments
[
#onDone
]
as
void
Function
();
final
onError
=
invocation
.
namedArguments
[
#onError
]
as
void
Function
(
Object
,
[
StackTrace
]);
final
cancelOnError
=
invocation
.
namedArguments
[
#cancelOnError
]
as
bool
;
return
Stream
<
List
<
int
>>.
fromIterable
(<
List
<
int
>>[
imageBytes
]).
listen
(
onData
,
onDone:
onDone
,
onError:
onError
,
cancelOnError:
cancelOnError
);
});
return
client
;
}
const
List
<
int
>
_transparentImage
=
<
int
>[
0x89
,
0x50
,
0x4E
,
0x47
,
0x0D
,
0x0A
,
0x1A
,
0x0A
,
0x00
,
0x00
,
0x00
,
0x0D
,
0x49
,
0x48
,
0x44
,
0x52
,
0x00
,
0x00
,
0x00
,
0x01
,
0x00
,
0x00
,
0x00
,
0x01
,
0x08
,
0x06
,
0x00
,
0x00
,
0x00
,
0x1F
,
0x15
,
0xC4
,
0x89
,
0x00
,
0x00
,
0x00
,
0x0A
,
0x49
,
0x44
,
0x41
,
0x54
,
0x78
,
0x9C
,
0x63
,
0x00
,
0x01
,
0x00
,
0x00
,
0x05
,
0x00
,
0x01
,
0x0D
,
0x0A
,
0x2D
,
0xB4
,
0x00
,
0x00
,
0x00
,
0x00
,
0x49
,
0x45
,
0x4E
,
0x44
,
0xAE
,
];
...
...
packages/get_test/pubspec.yaml
View file @
ce1ff19
...
...
@@ -10,7 +10,7 @@ environment:
dependencies
:
flutter
:
sdk
:
flutter
mockito
:
"
>=3.0.0
<
4
.0.0"
mockito
:
"
>=3.0.0
<
5
.0.0"
get_navigation
:
git
:
url
:
git://github.com/jonataslaw/getx.git
...
...
@@ -21,7 +21,6 @@ dependencies:
url
:
git://github.com/jonataslaw/getx.git
path
:
packages/get_state_manager
ref
:
master
image_test_utils
:
"
>=1.0.0
<2.0.0"
flutter_test
:
sdk
:
flutter
...
...
Please
register
or
login
to post a comment