fix(favorite): 统一收藏状态与互动图标

This commit is contained in:
Zhou Weidong committed 2026-10-27 09:31:48 +08:00
1 parent 4b97f89c0b
commit d3dbc9f8dc
13 files changed
+347 -213

No files matched your search

+27 -1
View File
@@ -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);