import 'package:flutter_test/flutter_test.dart';
import 'package:tane/db/database.dart';
import 'package:tane/db/enums.dart';

import '../support/test_support.dart';

void main() {
  late AppDatabase db;
  setUp(() => db = newTestDatabase());
  tearDown(() => db.close());

  test('shareableLots returns non-private lots with their id and label',
      () async {
    final repo = newTestRepository(db);
    final varietyId = await repo.addQuickVariety(
      label: 'Tomate rosa',
      category: 'Solanaceae',
    );
    final sharedId = await repo.addLot(
      varietyId: varietyId,
      offerStatus: OfferStatus.exchange,
    );

    final lots = await repo.shareableLots();
    final shared = lots.where((l) => l.lotId == sharedId).toList();
    expect(shared, hasLength(1));
    expect(shared.single.summary, 'Tomate rosa');
    expect(shared.single.offerStatus, OfferStatus.exchange);
    expect(shared.single.category, 'Solanaceae');
  });

  test('private lots are never shareable', () async {
    final repo = newTestRepository(db);
    final varietyId = await repo.addQuickVariety(label: 'Pimiento');
    final privateId = await repo.addLot(
      varietyId: varietyId,
      offerStatus: OfferStatus.private,
    );

    final lots = await repo.shareableLots();
    expect(lots.where((l) => l.lotId == privateId), isEmpty);
  });
}
