import 'dart:io';

import 'package:flutter_test/flutter_test.dart';
import 'package:tane/domain/seed_saving.dart';

/// Guards the committed bundled seed-saving asset: it must parse, cover the
/// major families, and carry the notable per-species corrections the UI relies
/// on. Reads the file directly — no Flutter asset bundle — so it runs as a
/// plain VM test.
void main() {
  final data =
      parseSeedSaving(File('assets/catalog/seed_saving.json').readAsStringSync());

  test('resolves the major families', () {
    for (final family in const [
      'Solanaceae',
      'Fabaceae',
      'Cucurbitaceae',
      'Brassicaceae',
      'Asteraceae',
      'Apiaceae',
      'Amaranthaceae',
      'Poaceae',
    ]) {
      expect(data.guideFor(family: family)?.hasAny, isTrue, reason: family);
    }
  });

  test('faba bean is corrected to insect cross-pollination', () {
    // The whole point of species overrides: unlike other legumes, Vicia faba
    // crosses — the guidance must not inherit Fabaceae "self".
    final g = data.guideFor(scientificName: 'Vicia faba', family: 'Fabaceae');
    expect(g?.pollination, Pollination.cross);
    expect(g?.vector, PollinationVector.insect);
    expect(g?.noteFor('es'), isNotNull);
  });

  test('tomato self-pollinates and is wet-processed', () {
    final g = data.guideFor(
        scientificName: 'Solanum lycopersicum', family: 'Solanaceae');
    expect(g?.pollination, Pollination.self);
    expect(g?.processing, SeedProcessing.wet);
    expect(g?.difficulty, SavingDifficulty.easy);
  });

  test('maize is wind-pollinated with a large population', () {
    final g = data.guideFor(scientificName: 'Zea mays', family: 'Poaceae');
    expect(g?.vector, PollinationVector.wind);
    expect(g?.recommendedPlants, greaterThanOrEqualTo(50));
  });
}
