package model

import "testing"

func TestSetGearCatalog_FillsMissingSlotsFromDefaults(t *testing.T) {
	originalCatalog := append([]GearFamily(nil), GearCatalog...)
	originalBySlot := make(map[EquipmentSlot][]GearFamily, len(gearBySlot))
	for slot, families := range gearBySlot {
		originalBySlot[slot] = append([]GearFamily(nil), families...)
	}
	defer func() {
		GearCatalog = originalCatalog
		gearBySlot = originalBySlot
	}()

	dbOnlyMainHand := []GearFamily{
		{
			Slot:        SlotMainHand,
			FormID:      "gear.form.main_hand.test",
			Name:        "Test Blade",
			BasePrimary: 10,
			StatType:    "attack",
		},
	}
	SetGearCatalog(dbOnlyMainHand)

	if got := len(gearBySlot[SlotMainHand]); got != 1 {
		t.Fatalf("expected main hand to keep only db families, got %d", got)
	}
	if gearBySlot[SlotMainHand][0].Name != "Test Blade" {
		t.Fatalf("expected db main hand family to be used, got %q", gearBySlot[SlotMainHand][0].Name)
	}
	if got := len(gearBySlot[SlotHead]); got == 0 {
		t.Fatalf("expected missing slot to be filled from defaults, got %d", got)
	}
}
