70 lines
2.5 KiB
Dart
70 lines
2.5 KiB
Dart
import 'dart:convert';
|
|
import 'dart:io';
|
|
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:reelbox/data/models.dart';
|
|
|
|
Map<String, dynamic> fixture(String name) =>
|
|
jsonDecode(File('test/fixtures/$name.json').readAsStringSync())
|
|
as Map<String, dynamic>;
|
|
|
|
void main() {
|
|
test('real series has no sources and retains the serie discriminator', () {
|
|
final serie = TitleRecord.fromJson(fixture('serie'));
|
|
expect(serie.id, 35716);
|
|
expect(serie.type, 'serie');
|
|
expect(serie.isSeries, isTrue);
|
|
expect(serie.sources, isEmpty);
|
|
expect(TitleRecord.fromJson(serie.toJson()).type, 'serie');
|
|
});
|
|
test('real season retains episode/source variants and unknown metadata', () {
|
|
final raw = fixture('season');
|
|
final season = SeasonRecord.fromJson(raw);
|
|
expect(season.id, 4263);
|
|
expect(season.episodes, hasLength(2));
|
|
expect(season.episodes.first.id, 72819);
|
|
expect(season.episodes.first.sources.single.id, 83260);
|
|
expect(season.episodes.first.sources.single.quality, '');
|
|
expect(
|
|
season.episodes.first.sources.single.url,
|
|
raw['episodes'][0]['sources'][0]['url'],
|
|
);
|
|
expect(season.episodes.first.raw['playas'], '1');
|
|
expect(
|
|
SeasonRecord.fromJson(season.toJson()).episodes.first.toJson(),
|
|
season.episodes.first.toJson(),
|
|
);
|
|
});
|
|
test(
|
|
'real movie preserves source IDs, URLs, countries and entitlement metadata',
|
|
() {
|
|
final raw = fixture('movie');
|
|
final movie = TitleRecord.fromJson(raw);
|
|
expect(movie.id, 35721);
|
|
expect(movie.type, 'movie');
|
|
expect(movie.title, 'The Canvas');
|
|
expect(movie.imdb, 5.2);
|
|
expect(movie.year, 2026);
|
|
expect(movie.duration, '');
|
|
expect(movie.classification, '');
|
|
expect(movie.genres.single.id, 1);
|
|
expect(movie.countries.single.id, 1);
|
|
expect(movie.sources.first.id, 520531);
|
|
expect(movie.sources.first.url, raw['sources'][0]['url']);
|
|
expect(movie.sources.first.isTrailer, isTrue);
|
|
expect(movie.sources[1].isTrailer, isFalse);
|
|
expect(movie.raw['playas'], '1');
|
|
expect(movie.raw['downloadas'], '2');
|
|
expect(movie.isSeries, isFalse);
|
|
expect(movie.isChannel, isFalse);
|
|
final restored = TitleRecord.fromJson(movie.toJson());
|
|
expect(restored.sources[1].url, movie.sources[1].url);
|
|
expect(restored.raw['playas'], '1');
|
|
expect(
|
|
restored.countries.single.toJson(),
|
|
movie.countries.single.toJson(),
|
|
);
|
|
},
|
|
);
|
|
}
|