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
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:
parent
1989f988a6
commit
1d9bc6c43d
2 changed files with 17 additions and 11 deletions
|
|
@ -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/game_card_extensions.dart';
|
||||||
import 'package:mnemo_cards_backend/api/v2/extensions/voice_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/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_config.dart';
|
||||||
import 'package:mnemo_cards_backend/storage/minio_service.dart';
|
import 'package:mnemo_cards_backend/storage/minio_service.dart';
|
||||||
|
|
||||||
|
|
@ -456,18 +455,25 @@ class AdminCardsApiV2 {
|
||||||
);
|
);
|
||||||
await _db.packDao.updateCard(updated);
|
await _db.packDao.updateCard(updated);
|
||||||
|
|
||||||
|
// Получить текущие паки для карточки
|
||||||
|
final currentPacks = await _db.packDao.getPacksForCard(updated.id);
|
||||||
|
|
||||||
// Обновить связь с паком
|
// Обновить связь с паком
|
||||||
if (requestDto.packId != null && requestDto.packId!.isNotEmpty) {
|
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!);
|
await _db.packDao.addCardToPack(cardId: updated.id, packId: requestDto.packId!);
|
||||||
} else {
|
} else {
|
||||||
// Если packId не указан или пустой, удалить связь
|
// Если packId не указан или пустой, удалить все связи
|
||||||
await _db.packDao.removeCardFromPack(updated.id, existing.packId ?? '');
|
for (final pack in currentPacks) {
|
||||||
|
await _db.packDao.removeCardFromPack(updated.id, pack.id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Получить паки для карточки
|
// Получить паки для карточки после обновления
|
||||||
final packs = await _db.packDao.getPacksForCard(updated.id);
|
final packs = await _db.packDao.getPacksForCard(updated.id);
|
||||||
final packId = packs.isNotEmpty ? packs.first.id : null;
|
final packId = packs.isNotEmpty ? packs.first.id : null;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -815,7 +815,7 @@ void main() {
|
||||||
expect(responseBody.containsKey('cards'), isTrue);
|
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
|
// First, add pack to user
|
||||||
await testIsar.writeTxn(() async {
|
await testIsar.writeTxn(() async {
|
||||||
final user = await testIsar.userModels.get(1);
|
final user = await testIsar.userModels.get(1);
|
||||||
|
|
@ -843,9 +843,9 @@ void main() {
|
||||||
final responseBody = jsonDecode(await response.readAsString())
|
final responseBody = jsonDecode(await response.readAsString())
|
||||||
as Map<String, dynamic>;
|
as Map<String, dynamic>;
|
||||||
|
|
||||||
expect(response.statusCode, equals(409));
|
expect(response.statusCode, equals(200));
|
||||||
expect(responseBody['error'], equals('Conflict'));
|
expect(responseBody['id'], equals('11'));
|
||||||
expect(responseBody['message'], equals('Pack already purchased'));
|
expect(responseBody['isPurchased'], equals(true));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should return 404 for non-existent pack (unauthenticated)', () async {
|
test('should return 404 for non-existent pack (unauthenticated)', () async {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue