cmd: merge ship types
This commit is contained in:
@@ -18,6 +18,22 @@ func createShipType(r Repo, g game.Game, race, typeName string, d, w, s, c float
|
||||
return r.SaveState(g)
|
||||
}
|
||||
|
||||
func MergeShipType(configure func(*Param), race, source, target string) (err error) {
|
||||
control(configure, func(c *ctrl) {
|
||||
c.execute(func(r Repo, g game.Game) {
|
||||
err = mergeShipType(r, g, race, source, target)
|
||||
})
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
func mergeShipType(r Repo, g game.Game, race, source, target string) error {
|
||||
if err := g.MergeShipType(race, source, target); err != nil {
|
||||
return err
|
||||
}
|
||||
return r.SaveState(g)
|
||||
}
|
||||
|
||||
func DeleteShipType(configure func(*Param), race, typeName string) (err error) {
|
||||
control(configure, func(c *ctrl) {
|
||||
c.execute(func(r Repo, g game.Game) {
|
||||
|
||||
@@ -91,3 +91,27 @@ func TestCreateShipTypeValidation(t *testing.T) {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestMergeShipType(t *testing.T) {
|
||||
race := "race_01"
|
||||
g(t, func(p func(*game.Param), g func() mg.Game) {
|
||||
err := game.CreateShipType(p, race, "Drone", 1, 0, 0, 0, 0)
|
||||
assert.NoError(t, err)
|
||||
err = game.CreateShipType(p, race, "Spy", 1, 0, 0, 0, 0)
|
||||
assert.NoError(t, err)
|
||||
err = game.CreateShipType(p, race, "Cruiser", 15, 15, 15, 0, 1)
|
||||
assert.NoError(t, err)
|
||||
err = game.MergeShipType(p, race, "Sky", "Drone")
|
||||
assert.ErrorContains(t, err, e.GenericErrorText(e.ErrInputEntityNotExists))
|
||||
err = game.MergeShipType(p, race, "Spy", "Freighter")
|
||||
assert.ErrorContains(t, err, e.GenericErrorText(e.ErrInputEntityNotExists))
|
||||
err = game.MergeShipType(p, race, "Spy", "Drone")
|
||||
assert.NoError(t, err)
|
||||
st, err := g().ShipTypes(race)
|
||||
assert.NoError(t, err)
|
||||
assert.Len(t, st, 2)
|
||||
err = game.MergeShipType(p, race, "Drone", "Cruiser")
|
||||
assert.ErrorContains(t, err, e.GenericErrorText(e.ErrMergeShipTypeNotEqual))
|
||||
// TODO: test group/production changed
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user