admin
Some checks are pending
Backend CI / test (push) Waiting to run
Backend CI / build (push) Blocked by required conditions
Deploy Mnemo Cards / Deploy Backend (push) Waiting to run
Deploy Mnemo Cards / Deploy Web App (push) Blocked by required conditions
Deploy Mnemo Cards / Final Verification (push) Blocked by required conditions

This commit is contained in:
Dmitry 2025-12-20 13:07:31 +03:00
parent 1989f988a6
commit 1d9bc6c43d
2 changed files with 17 additions and 11 deletions

View file

@ -14,7 +14,6 @@ import 'package:mnemo_cards_common/mnemo_cards_common.dart';
import 'package:mnemo_cards_backend/api/v2/extensions/game_card_extensions.dart';
import 'package:mnemo_cards_backend/api/v2/extensions/voice_extensions.dart';
import 'package:mnemo_cards_backend/packs/card_image_storage.dart';
import 'package:mnemo_cards_backend/packs/voice_storage.dart';
import 'package:mnemo_cards_backend/storage/minio_config.dart';
import 'package:mnemo_cards_backend/storage/minio_service.dart';
@ -456,18 +455,25 @@ class AdminCardsApiV2 {
);
await _db.packDao.updateCard(updated);
// Получить текущие паки для карточки
final currentPacks = await _db.packDao.getPacksForCard(updated.id);
// Обновить связь с паком
if (requestDto.packId != null && requestDto.packId!.isNotEmpty) {
// Сначала удалить старую связь
await _db.packDao.removeCardFromPack(updated.id, existing.packId ?? '');
// Затем добавить новую
// Удалить все старые связи
for (final pack in currentPacks) {
await _db.packDao.removeCardFromPack(updated.id, pack.id);
}
// Затем добавить новую связь
await _db.packDao.addCardToPack(cardId: updated.id, packId: requestDto.packId!);
} else {
// Если packId не указан или пустой, удалить связь
await _db.packDao.removeCardFromPack(updated.id, existing.packId ?? '');
// Если packId не указан или пустой, удалить все связи
for (final pack in currentPacks) {
await _db.packDao.removeCardFromPack(updated.id, pack.id);
}
}
// Получить паки для карточки
// Получить паки для карточки после обновления
final packs = await _db.packDao.getPacksForCard(updated.id);
final packId = packs.isNotEmpty ? packs.first.id : null;

View file

@ -815,7 +815,7 @@ void main() {
expect(responseBody.containsKey('cards'), isTrue);
});
test('should return 409 for authenticated user who already owns pack', () async {
test('should return pack info with isPurchased=true for authenticated user who already owns pack', () async {
// First, add pack to user
await testIsar.writeTxn(() async {
final user = await testIsar.userModels.get(1);
@ -843,9 +843,9 @@ void main() {
final responseBody = jsonDecode(await response.readAsString())
as Map<String, dynamic>;
expect(response.statusCode, equals(409));
expect(responseBody['error'], equals('Conflict'));
expect(responseBody['message'], equals('Pack already purchased'));
expect(response.statusCode, equals(200));
expect(responseBody['id'], equals('11'));
expect(responseBody['isPurchased'], equals(true));
});
test('should return 404 for non-existent pack (unauthenticated)', () async {