diff --git a/pkg/composer/vector.go b/pkg/composer/vector.go index b2eaf9fc..6b7cc78f 100644 --- a/pkg/composer/vector.go +++ b/pkg/composer/vector.go @@ -50,7 +50,7 @@ func (c *Composer) ComposeVectorResponse(response brevity.VectorResponse) Natura distance, ), Speech: fmt.Sprintf( - "%s, vector to %s, %s %d", + "%s, vector to %s, %s, %d", callsign, response.Location, pronounceBearing(response.Vector.Bearing()), diff --git a/pkg/controller/vector.go b/pkg/controller/vector.go index 26af2e15..7aa39d86 100644 --- a/pkg/controller/vector.go +++ b/pkg/controller/vector.go @@ -50,6 +50,10 @@ func (c *Controller) HandleVector(ctx context.Context, request *brevity.VectorRe response.Status = targetLocation != nil if response.Status { + if len(targetLocation.Names) > 0 { + response.Location = targetLocation.Names[0] + } + origin := trackfile.LastKnown().Point target := targetLocation.Point() declination := c.scope.Declination(origin) diff --git a/pkg/controller/vector_test.go b/pkg/controller/vector_test.go index 64a8aa96..71184867 100644 --- a/pkg/controller/vector_test.go +++ b/pkg/controller/vector_test.go @@ -74,6 +74,28 @@ func TestHandleVector_HappyPath(t *testing.T) { assert.Nil(t, resp.BRA) } +func TestHandleVector_UsesCanonicalConfiguredLocationName(t *testing.T) { + t.Parallel() + locs := []locations.Location{ + {Names: []string{"home plate", "base"}, Longitude: 30.0, Latitude: 40.0}, + } + h := newControllerTestHarness(t, locs) + h.insertAircraft(t, "Eagle 1 Reaper", acmiF15C, coalitions.Blue, orb.Point{30.1, 40.1}) + + h.ctrl.HandleVector(h.ctx, &brevity.VectorRequest{ + Callsign: "eagle 1", + Location: "base", + }) + got := h.expectResponse(t) + resp, ok := got.(brevity.VectorResponse) + require.True(t, ok) + assert.Equal(t, "home plate", resp.Location) + assert.True(t, resp.Contact) + assert.True(t, resp.Status) + require.NotNil(t, resp.Vector) + assert.Nil(t, resp.BRA) +} + func TestHandleVector_Tanker_NoCompatibleTanker(t *testing.T) { t.Parallel() h := newControllerTestHarness(t, nil)