import 'package:aves/model/db/db.dart';
import 'package:aves/model/dynamic_albums.dart';
import 'package:aves/model/filters/container/album_group.dart';
import 'package:aves/model/filters/container/dynamic_album.dart';
import 'package:aves/model/filters/covered/stored_album.dart';
import 'package:aves/model/filters/container/set_or.dart';
import 'package:aves/model/grouping/common.dart';
import 'package:aves/model/grouping/convert.dart';
import 'package:aves/services/common/services.dart';
import 'package:path/path.dart' as p;
import 'package:test/test.dart';
import '../../fake/db.dart';
void main() {
const groupName = 'some group name';
const storedAlbumPath = '/path/to/album/';
setUp(() async {
// specify Posix style path context for consistent behaviour when running tests on Windows
getIt.registerLazySingleton
(() => p.Context(style: p.Style.posix));
getIt.registerLazySingleton(FakeAvesDb.new);
});
tearDown(() async {
await dynamicAlbums.clear();
await getIt.reset();
});
test('Filter URI round trip', () {
final storedAlbumFilter = StoredAlbumFilter(storedAlbumPath, 'display name');
final dynamicAlbumFilter = DynamicAlbumFilter('dynamic name', storedAlbumFilter);
dynamicAlbums.add(dynamicAlbumFilter);
final groupUri = albumGrouping.buildGroupUri(null, groupName);
final albumGroupFilter = AlbumGroupFilter(groupUri, SetOrFilter({storedAlbumFilter, dynamicAlbumFilter}));
expect(albumGrouping.uriToFilter(GroupingConversion.filterToUri(storedAlbumFilter)), storedAlbumFilter);
expect(albumGrouping.uriToFilter(GroupingConversion.filterToUri(dynamicAlbumFilter)), dynamicAlbumFilter);
expect(albumGrouping.uriToFilter(GroupingConversion.filterToUri(albumGroupFilter)), albumGroupFilter);
});
}