You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
2.0 KiB
55 lines
2.0 KiB
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:get/get.dart';
|
|
|
|
import 'package:eaimar/data/services/id_verify_service.dart';
|
|
|
|
/// 守住「重新登录后显示未认证」那个 bug 的两个成因:
|
|
/// 1. 未登录时不该去打接口(打了只会拿到 NoLogin,还把 loaded 留在 false);
|
|
/// 2. 登出必须清空状态,否则下一个账号会继承上一个账号的已认证信息。
|
|
void main() {
|
|
setUp(() {
|
|
Get.testMode = true;
|
|
Get.put(IdVerifyService());
|
|
});
|
|
tearDown(Get.reset);
|
|
|
|
test('未登录时 refresh 不改变状态(不会误标记为已加载)', () async {
|
|
final svc = IdVerifyService.to;
|
|
// 测试环境下 User 单例未初始化 ⇒ isLoggedIn()==false
|
|
await svc.refresh();
|
|
expect(svc.loaded.value, isFalse, reason: '未登录不该把状态标记成已加载');
|
|
expect(svc.verified.value, isFalse);
|
|
});
|
|
|
|
test('ensureLoaded 在未登录时同样安全', () async {
|
|
final svc = IdVerifyService.to;
|
|
await svc.ensureLoaded();
|
|
expect(svc.loaded.value, isFalse);
|
|
});
|
|
|
|
test('clear 清空全部字段——换账号不能继承上一个账号的实名信息', () {
|
|
final svc = IdVerifyService.to;
|
|
svc.verified.value = true;
|
|
svc.realname.value = '张三';
|
|
svc.idcardMask.value = '4304**********8812';
|
|
svc.verifyTime.value = 1700000000;
|
|
svc.verifiedGender.value = 1;
|
|
svc.loaded.value = true;
|
|
|
|
svc.clear();
|
|
|
|
expect(svc.verified.value, isFalse);
|
|
expect(svc.realname.value, isEmpty);
|
|
expect(svc.idcardMask.value, isEmpty);
|
|
expect(svc.verifyTime.value, 0);
|
|
expect(svc.verifiedGender.value, 0);
|
|
expect(svc.loaded.value, isFalse, reason: 'loaded 也要清,否则不会重新拉新账号的状态');
|
|
});
|
|
|
|
test('已加载后 ensureLoaded 不重复请求', () async {
|
|
final svc = IdVerifyService.to;
|
|
svc.loaded.value = true;
|
|
await svc.ensureLoaded(); // 不该抛,也不该改状态
|
|
expect(svc.loaded.value, isTrue);
|
|
});
|
|
}
|
|
|