Skip to content
This repository has been archived by the owner on Apr 25, 2022. It is now read-only.

Commit

Permalink
refactor: simplify dio dependency injection
Browse files Browse the repository at this point in the history
为什么之前没想到这么优雅的写法 (;´д`)ゞ
  • Loading branch information
CCXXXI committed Oct 25, 2021
1 parent cf7eaac commit 9b9cb16
Show file tree
Hide file tree
Showing 8 changed files with 24 additions and 25 deletions.
5 changes: 0 additions & 5 deletions lib/settings/settings_logic.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:quiver/iterables.dart';
Expand All @@ -10,10 +9,6 @@ import '../utils/web.dart';
import 'theme.dart';

class SettingsLogic extends GetxController with L {
final Dio dio;

SettingsLogic({Dio? dio}) : dio = dio ?? defaultDio;

void modeOnChanged(String v) {
theme
..mode = v
Expand Down
4 changes: 0 additions & 4 deletions lib/timetable/ecnu/ecnu_logic.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,6 @@ import 'des.dart';
enum S { login, check }

class EcnuLogic extends GetxController with L {
final Dio dio;

EcnuLogic({Dio? dio}) : dio = dio ?? defaultDio;

final step = S.login.obs;

final loginFormKey = GlobalKey<FormState>();
Expand Down
5 changes: 0 additions & 5 deletions lib/toolbox/calendar/calendar_logic.dart
Original file line number Diff line number Diff line change
@@ -1,15 +1,10 @@
import 'package:dio/dio.dart';
import 'package:get/get.dart';
import 'package:universal_html/parsing.dart';

import '../../utils/log.dart';
import '../../utils/web.dart';

class CalendarLogic extends GetxController with L {
final Dio dio;

CalendarLogic({Dio? dio}) : dio = dio ?? defaultDio;

@override
void onInit() {
getCalendar();
Expand Down
5 changes: 0 additions & 5 deletions lib/toolbox/toolbox_logic.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import 'package:dio/dio.dart';
import 'package:flutter/services.dart';
import 'package:get/get.dart';

Expand All @@ -10,10 +9,6 @@ import 'cheater.dart';
import 'juan/juan_view.dart';

class ToolboxLogic extends GetxController with L {
final Dio dio;

ToolboxLogic({Dio? dio}) : dio = dio ?? defaultDio;

@override
void onInit() {
super.onInit();
Expand Down
3 changes: 3 additions & 0 deletions lib/utils/web.dart
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ final defaultDio = Dio()
CookieManager(cookieJar),
]);

/// Should be reassigned in and only in test code.
var dio = defaultDio;

extension Launch on String {
void launch() => launcher.launch(this);
}
Expand Down
13 changes: 10 additions & 3 deletions test/settings/settings_logic_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import 'package:dio/dio.dart';
import 'package:ecnu_timetable/settings/settings_logic.dart';
import 'package:ecnu_timetable/utils/database.dart';
import 'package:ecnu_timetable/utils/string.dart';
import 'package:ecnu_timetable/utils/web.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:get/get.dart' hide Response;
Expand Down Expand Up @@ -61,7 +62,9 @@ void main() {
test('settings', () {
// 这么简单的东西没必要测
// 但是测了能让覆盖率好看一点 :)
final logic = Get.put(SettingsLogic(dio: FakeDio()));
dio = FakeDio();

final logic = Get.put(SettingsLogic());

expect(theme.mode, '跟随系统');
logic.modeOnChanged('开');
Expand Down Expand Up @@ -90,7 +93,9 @@ void main() {
});

test('fake version', () async {
final logic = Get.put(SettingsLogic(dio: FakeDio()));
dio = FakeDio();

final logic = Get.put(SettingsLogic());

expect(logic.latestVer.value, isNull);
expect(logic.updateAvailable, isFalse);
Expand All @@ -105,7 +110,9 @@ void main() {
});

test('error version', () async {
final logic = Get.put(SettingsLogic(dio: FakeErrorDio()));
dio = FakeErrorDio();

final logic = Get.put(SettingsLogic());

expect(logic.latestVer.value, isNull);
expect(logic.updateAvailable, isFalse);
Expand Down
5 changes: 4 additions & 1 deletion test/timetable/ecnu/ecnu_logic_test.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'package:dio/dio.dart';
import 'package:ecnu_timetable/timetable/ecnu/ecnu_logic.dart';
import 'package:ecnu_timetable/utils/database.dart';
import 'package:ecnu_timetable/utils/web.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:get/get.dart' hide Response;
import 'package:hive_flutter/adapters.dart';
Expand Down Expand Up @@ -99,7 +100,9 @@ void main() {
});

test('years', () {
final logic = Get.put(EcnuLogic(dio: FakeDio()));
dio = FakeDio();

final logic = Get.put(EcnuLogic());

logic.year.value = 2021;
expect(logic.years, {
Expand Down
9 changes: 7 additions & 2 deletions test/toolbox/calendar/calendar_logic_test.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:dio/dio.dart';
import 'package:ecnu_timetable/toolbox/calendar/calendar_logic.dart';
import 'package:ecnu_timetable/utils/web.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:get/get.dart' hide Response;
Expand Down Expand Up @@ -43,7 +44,9 @@ void main() {
runApp(const GetMaterialApp());

test('fake calendar', () async {
final logic = Get.put(CalendarLogic(dio: FakeDio()));
dio = FakeDio();

final logic = Get.put(CalendarLogic());

expect(logic.imgUrl.value, isEmpty);

Expand All @@ -54,7 +57,9 @@ void main() {
});

test('error calendar', () async {
final logic = Get.put(CalendarLogic(dio: FakeErrorDio()));
dio = FakeErrorDio();

final logic = Get.put(CalendarLogic());

expect(logic.imgUrl.value, isEmpty);

Expand Down

0 comments on commit 9b9cb16

Please sign in to comment.