fix(favorite): 统一收藏状态与互动图标
This commit is contained in:
1 parent
4b97f89c0b
commit
d3dbc9f8dc
13 files changed
+347
-213
No files matched your search
@@ -6,11 +6,12 @@ import 'package:fruitshorts/core/data/models/page_result.dart';
|
||||
import 'package:fruitshorts/core/data/repositories/favorite_repository.dart';
|
||||
import 'package:fruitshorts/core/data/services/favorite_controller.dart';
|
||||
|
||||
Drama _card(String id) => Drama(
|
||||
Drama _card(String id, {int? favoriteCount}) => Drama(
|
||||
id: id,
|
||||
title: 'Drama $id',
|
||||
synopsis: 'synopsis',
|
||||
posterUrl: '/files/$id.png',
|
||||
favoriteCount: favoriteCount,
|
||||
);
|
||||
|
||||
void main() {
|
||||
@@ -37,6 +38,31 @@ void main() {
|
||||
expect(controller.cards.map((drama) => drama.id), ['signal']);
|
||||
});
|
||||
|
||||
test(
|
||||
'should_adjust_the_single_favorite_count_when_toggle_succeeds',
|
||||
() async {
|
||||
final controller = FavoriteController(InMemoryFavoriteRepository());
|
||||
final card = _card('signal', favoriteCount: 12);
|
||||
|
||||
expect(controller.favoriteCountFor(card), 12);
|
||||
expect(await controller.toggle('signal', card: card), isTrue);
|
||||
expect(controller.favoriteCount('signal'), 13);
|
||||
expect(await controller.toggle('signal', card: card), isTrue);
|
||||
expect(controller.favoriteCount('signal'), 12);
|
||||
},
|
||||
);
|
||||
|
||||
test('should_apply_server_count_and_roll_back_toggle_failure', () async {
|
||||
final repository = InMemoryFavoriteRepository()..failToggle = true;
|
||||
final controller = FavoriteController(repository);
|
||||
|
||||
controller.applyServerState('signal', saved: false, favoriteCount: 20);
|
||||
expect(controller.favoriteCount('signal'), 20);
|
||||
expect(await controller.toggle('signal'), isFalse);
|
||||
expect(controller.isSaved('signal'), isFalse);
|
||||
expect(controller.favoriteCount('signal'), 20);
|
||||
});
|
||||
|
||||
test('should_remove_card_and_state_when_toggled_off', () async {
|
||||
final repository = InMemoryFavoriteRepository(saved: {'signal'});
|
||||
final controller = FavoriteController(repository);
|
||||
|
||||
Reference in new issue
Block a user