This commit is contained in:
macbook_max
2026-10-15 20:36:59 +08:00
commit 6bf949949c
7923 changed files with 1369582 additions and 0 deletions
+110
View File
@@ -0,0 +1,110 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:video_app/models/video_item.dart';
import 'package:video_app/services/upload_service.dart';
/// 上传发布模块模型解析测试(《03-接口文档》5.5/5.6/5.7/5.8)
void main() {
group('VideoCategory(5.8 分类列表)', () {
test('完整字段解析', () {
final c = VideoCategory.fromJson({'category_id': 3, 'name': '生活'});
expect(c.categoryId, 3);
expect(c.name, '生活');
});
test('缺字段兜底', () {
final c = VideoCategory.fromJson(const {});
expect(c.categoryId, 0);
expect(c.name, '');
});
});
group('UploadTokenInfo(5.5 上传凭证)', () {
test('server 中转模式解析', () {
final t = UploadTokenInfo.fromJson({
'upload_type': 'server',
'object_key': 'upload/tmp/20261015/abc.mp4',
'upload_url': '/videos/upload/file',
});
expect(t.uploadType, 'server');
expect(t.objectKey, 'upload/tmp/20261015/abc.mp4');
expect(t.uploadUrl, '/videos/upload/file');
});
test('缺字段兜底', () {
final t = UploadTokenInfo.fromJson(const {});
expect(t.uploadType, '');
expect(t.objectKey, '');
expect(t.uploadUrl, '');
});
});
group('UploadFileResult(5.5 中转上传)', () {
test('完整字段解析', () {
final r = UploadFileResult.fromJson({
'object_key': 'upload/tmp/20261015/abc.mp4',
'url': '/static/upload/tmp/20261015/abc.mp4',
'file_size': 204800,
});
expect(r.objectKey, 'upload/tmp/20261015/abc.mp4');
expect(r.url, '/static/upload/tmp/20261015/abc.mp4');
expect(r.fileSize, 204800);
});
test('缺字段兜底', () {
final r = UploadFileResult.fromJson(const {});
expect(r.objectKey, '');
expect(r.url, '');
expect(r.fileSize, 0);
});
});
group('PublishResult(5.6 发布结果)', () {
test('完整字段解析(待审核 + 会员优先)', () {
final r = PublishResult.fromJson({
'video_id': 113,
'status': 1,
'status_text': '待审核',
'is_priority': true,
});
expect(r.videoId, 113);
expect(r.status, 1);
expect(r.statusText, '待审核');
expect(r.isPriority, isTrue);
});
test('缺字段兜底', () {
final r = PublishResult.fromJson(const {});
expect(r.videoId, 0);
expect(r.status, 0);
expect(r.statusText, '');
expect(r.isPriority, isFalse);
});
});
group('VideoItem 作品状态扩展(5.7 我的作品)', () {
Map<String, dynamic> baseJson() => {
'video_id': 113,
'title': '测试视频',
'author': {'user_id': 4, 'nickname': '作者', 'avatar_url': ''},
};
test('带状态字段解析', () {
final v = VideoItem.fromJson({
...baseJson(),
'status': 3,
'status_text': '拒绝',
'reject_reason': '内容违规',
});
expect(v.status, 3);
expect(v.statusText, '拒绝');
expect(v.rejectReason, '内容违规');
});
test('无状态字段(Feed/收藏等列表)兜底 -1', () {
final v = VideoItem.fromJson(baseJson());
expect(v.status, -1);
expect(v.statusText, '');
expect(v.rejectReason, '');
});
});
}