import 'package:flutter_test/flutter_test.dart';
import 'package:game_test/game/data/item_table.dart';

void main() {
  TestWidgetsFlutterBinding.ensureInitialized();

  test('ItemTable loads items from JSON', () async {
    // We need to ensure the assets are loaded.
    // In a unit test, rootBundle might not point to the real assets folder easily without setup.
    // However, we can verify that the code *attempts* to load and parses correctly if we mock the bundle,
    // OR we can try to run it and see if it finds the file.

    // For this environment, let's try to run it. If it fails to find asset, we might need to mock.
    // But since we want to verify the JSON content validity, mocking the *content* with the *actual file content* is a good middle ground if direct loading fails.

    // Let's try direct load first.
    try {
      await ItemTable.load();

      expect(ItemTable.weapons.isNotEmpty, true, reason: "Weapons should be loaded");
      expect(ItemTable.armors.isNotEmpty, true, reason: "Armors should be loaded");
      expect(ItemTable.shields.isNotEmpty, true, reason: "Shields should be loaded");
      expect(ItemTable.accessories.isNotEmpty, true, reason: "Accessories should be loaded");

      print("Loaded ${ItemTable.weapons.length} weapons");
      print("Loaded ${ItemTable.armors.length} armors");
      print("Loaded ${ItemTable.shields.length} shields");
      print("Loaded ${ItemTable.accessories.length} accessories");

    } catch (e) {
      // If asset loading fails (common in raw flutter_test without integration test setup),
      // we can't easily fix the environment here, but we can verify the JSON parsing logic
      // by mocking the channel if we really wanted to.
      // But for now, let's see if it works.
      print("Error loading items: $e");
      rethrow;
    }
  });
}
