package game_test import ( "slices" "testing" e "github.com/iliadenisov/galaxy/pkg/error" "github.com/google/uuid" "github.com/iliadenisov/galaxy/pkg/game" mg "github.com/iliadenisov/galaxy/pkg/model/game" "github.com/stretchr/testify/assert" ) func TestRenamePlanet(t *testing.T) { g(t, func(p func(*game.Param), g func() mg.Game) { cg := g() var number int var owner uuid.UUID for pl := range cg.Map.Planet { if cg.Map.Planet[pl].Owner != uuid.Nil { number = int(cg.Map.Planet[pl].Number) owner = cg.Map.Planet[pl].Owner break } } var race string for r := range cg.Race { if cg.Race[r].ID == owner { race = cg.Race[r].Name break } } newName := "Some-New-Name" err := game.RenamePlanet(p, race, number, newName) assert.NoError(t, err) cg = g() pi := slices.IndexFunc(cg.Map.Planet, func(pl mg.Planet) bool { return pl.Owner == owner && pl.Number == uint(number) }) assert.GreaterOrEqual(t, pi, 0) assert.Equal(t, "Some-New-Name", cg.Map.Planet[pi].Name) ri := slices.IndexFunc(cg.Race, func(r mg.Race) bool { return r.Name != race }) assert.GreaterOrEqual(t, ri, 0) otherRace := cg.Race[ri].Name err = game.RenamePlanet(p, unknownRaceName, number, newName) // TODO: test actual rip race assert.ErrorContains(t, err, e.GenericErrorText(e.ErrInputUnknownRace)) err = game.RenamePlanet(p, race, number, "") assert.ErrorContains(t, err, e.GenericErrorText(e.ErrInputEntityTypeNameInvalid)) err = game.RenamePlanet(p, race, -1, newName) assert.ErrorContains(t, err, e.GenericErrorText(e.ErrInputPlanetNumber)) err = game.RenamePlanet(p, race, 100500, newName) assert.ErrorContains(t, err, e.GenericErrorText(e.ErrInputEntityNotExists)) err = game.RenamePlanet(p, otherRace, number, newName) assert.ErrorContains(t, err, e.GenericErrorText(e.ErrInputEntityNotOwned)) }) }