Skip to content

Commit

Permalink
add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
josxha committed Feb 7, 2024
1 parent 47f413f commit 266aaaa
Show file tree
Hide file tree
Showing 10 changed files with 166 additions and 14 deletions.
2 changes: 1 addition & 1 deletion flutter_map_cache/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ dependencies:
dev_dependencies:
flutter_test:
sdk: flutter
total_lints: ^3.0.0
test: ^1.24.9
total_lints: ^3.0.0
http_mock_adapter: ^0.6.1
latlong2: ^0.9.0
12 changes: 6 additions & 6 deletions flutter_map_mbtiles/lib/src/mbtiles_image_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,27 +7,27 @@ import 'package:flutter_map/flutter_map.dart';
import 'package:mbtiles/mbtiles.dart';

/// Image provider with additional caching functionality
class MBTilesImageProvider extends ImageProvider<MBTilesImageProvider> {
class MbTilesImageProvider extends ImageProvider<MbTilesImageProvider> {
/// The tile coordinates of the requested tile image
final TileCoordinates coordinates;

/// MBTiles database
final MBTiles mbtiles;

/// Default constructor for the [MBTilesImageProvider]
MBTilesImageProvider({
/// Default constructor for the [MbTilesImageProvider]
MbTilesImageProvider({
required this.coordinates,
required this.mbtiles,
});

@override
Future<MBTilesImageProvider> obtainKey(ImageConfiguration configuration) {
Future<MbTilesImageProvider> obtainKey(ImageConfiguration configuration) {
return Future.value(this);
}

@override
ImageStreamCompleter loadImage(
MBTilesImageProvider key,
MbTilesImageProvider key,
ImageDecoderCallback decode,
) {
final chunkEvents = StreamController<ImageChunkEvent>();
Expand All @@ -45,7 +45,7 @@ class MBTilesImageProvider extends ImageProvider<MBTilesImageProvider> {
}

Future<Codec> _loadAsync(
MBTilesImageProvider key,
MbTilesImageProvider key,
StreamController<ImageChunkEvent> chunkEvents,
ImageDecoderCallback decode,
) async {
Expand Down
2 changes: 1 addition & 1 deletion flutter_map_mbtiles/lib/src/raster_mbtiles_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class MbTilesTilesProvider extends TileProvider {

@override
ImageProvider getImage(TileCoordinates coordinates, TileLayer options) =>
MBTilesImageProvider(
MbTilesImageProvider(
coordinates: coordinates,
mbtiles: mbtiles,
);
Expand Down
11 changes: 5 additions & 6 deletions flutter_map_mbtiles/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,9 @@ dependencies:
sqlite3_flutter_libs: ^0.5.18

dev_dependencies:
flutter_test:
sdk: flutter
test: ^1.24.9
mockito: ^5.4.4
build_runner: ^2.4.8
total_lints: ^3.2.0

dependency_overrides:
vector_map_tiles:
git:
url: https://github.com/aovooyov/flutter-vector-map-tiles.git
ref: main
21 changes: 21 additions & 0 deletions flutter_map_mbtiles/test/integration_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import 'package:flutter_map/flutter_map.dart';
import 'package:flutter_map_mbtiles/flutter_map_mbtiles.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';

@GenerateNiceMocks([MockSpec<MBTiles>()])
import 'integration_test.mocks.dart';
import 'utils/test_app.dart';

Future<void> main() async {
testWidgets('FlutterMap with MbTilesTileProvider', (tester) async {
final mbtiles = MockMBTiles();
when(mbtiles.getMetadata())
.thenAnswer((_) => MBTilesMetadata(name: 'MockMBTiles', format: 'png'));
when(mbtiles.getTile(captureAny, captureAny, captureAny))
.thenAnswer((_) => TileProvider.transparentImage);
await tester.pumpWidget(TestApp(mbtiles: mbtiles));
await tester.pumpAndSettle();
});
}
91 changes: 91 additions & 0 deletions flutter_map_mbtiles/test/integration_test.mocks.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
// Mocks generated by Mockito 5.4.4 from annotations
// in flutter_map_mbtiles/test/integration_test.dart.
// Do not manually edit this file.

// ignore_for_file: no_leading_underscores_for_library_prefixes
import 'dart:typed_data' as _i3;

import 'package:mbtiles/mbtiles.dart' as _i2;
import 'package:mockito/mockito.dart' as _i1;

// ignore_for_file: type=lint
// ignore_for_file: avoid_redundant_argument_values
// ignore_for_file: avoid_setters_without_getters
// ignore_for_file: comment_references
// ignore_for_file: deprecated_member_use
// ignore_for_file: deprecated_member_use_from_same_package
// ignore_for_file: implementation_imports
// ignore_for_file: invalid_use_of_visible_for_testing_member
// ignore_for_file: prefer_const_constructors
// ignore_for_file: unnecessary_parenthesis
// ignore_for_file: camel_case_types
// ignore_for_file: subtype_of_sealed_class

class _FakeMBTilesMetadata_0 extends _i1.SmartFake
implements _i2.MBTilesMetadata {
_FakeMBTilesMetadata_0(
Object parent,
Invocation parentInvocation,
) : super(
parent,
parentInvocation,
);
}

/// A class which mocks [MBTiles].
///
/// See the documentation for Mockito's code generation for more information.
class MockMBTiles extends _i1.Mock implements _i2.MBTiles {
@override
_i2.MBTilesMetadata getMetadata({bool? allowCache = true}) =>
(super.noSuchMethod(
Invocation.method(
#getMetadata,
[],
{#allowCache: allowCache},
),
returnValue: _FakeMBTilesMetadata_0(
this,
Invocation.method(
#getMetadata,
[],
{#allowCache: allowCache},
),
),
returnValueForMissingStub: _FakeMBTilesMetadata_0(
this,
Invocation.method(
#getMetadata,
[],
{#allowCache: allowCache},
),
),
) as _i2.MBTilesMetadata);

@override
_i3.Uint8List? getTile(
int? z,
int? x,
int? y,
) =>
(super.noSuchMethod(
Invocation.method(
#getTile,
[
z,
x,
y,
],
),
returnValueForMissingStub: null,
) as _i3.Uint8List?);

@override
void dispose() => super.noSuchMethod(
Invocation.method(
#dispose,
[],
),
returnValueForMissingStub: null,
);
}
32 changes: 32 additions & 0 deletions flutter_map_mbtiles/test/utils/test_app.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import 'package:flutter/material.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:flutter_map_mbtiles/flutter_map_mbtiles.dart';
import 'package:latlong2/latlong.dart';

// ignore_for_file: diagnostic_describe_all_properties

class TestApp extends StatelessWidget {
final MBTiles mbtiles;

const TestApp({super.key, required this.mbtiles});

@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: FlutterMap(
options: const MapOptions(
initialZoom: 0,
initialCenter: LatLng(0, 0),
),
children: [
TileLayer(
urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
tileProvider: MbTilesTilesProvider(mbtiles: mbtiles),
),
],
),
),
);
}
}
3 changes: 3 additions & 0 deletions flutter_map_pmtiles/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,7 @@ dependencies:
pmtiles: ^1.2.0

dev_dependencies:
flutter_test:
sdk: flutter
test: ^1.24.9
flutter_lints: ^3.0.0
3 changes: 3 additions & 0 deletions vector_map_tiles_mbtiles/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ environment:
dependencies:
flutter:
sdk: flutter
flutter_test:
sdk: flutter
test: ^1.24.9
mbtiles: ^0.1.0
vector_map_tiles: ^7.0.1

Expand Down
3 changes: 3 additions & 0 deletions vector_map_tiles_pmtiles/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,7 @@ dependencies:
vector_map_tiles: ^7.0.1

dev_dependencies:
flutter_test:
sdk: flutter
test: ^1.24.9
flutter_lints: ^3.0.0

0 comments on commit 266aaaa

Please sign in to comment.