diff --git a/pkg/handlers/adminapi/api.go b/pkg/handlers/adminapi/api.go index 34d6729a0f2..39132e12843 100644 --- a/pkg/handlers/adminapi/api.go +++ b/pkg/handlers/adminapi/api.go @@ -209,7 +209,7 @@ func NewAdminAPI(handlerConfig handlers.HandlerConfig) *adminops.MymoveAPI { pagination.NewPagination, } - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) signedCertificationCreator := signedcertification.NewSignedCertificationCreator() signedCertificationUpdater := signedcertification.NewSignedCertificationUpdater() adminAPI.MovesUpdateMoveHandler = UpdateMoveHandler{ diff --git a/pkg/handlers/adminapi/moves_test.go b/pkg/handlers/adminapi/moves_test.go index bfc3291df46..35c054238ca 100644 --- a/pkg/handlers/adminapi/moves_test.go +++ b/pkg/handlers/adminapi/moves_test.go @@ -22,6 +22,7 @@ import ( mtoserviceitem "github.com/transcom/mymove/pkg/services/mto_service_item" "github.com/transcom/mymove/pkg/services/pagination" "github.com/transcom/mymove/pkg/services/query" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" ) func (suite *HandlerSuite) TestIndexMovesHandler() { @@ -111,7 +112,7 @@ func (suite *HandlerSuite) TestUpdateMoveHandler() { ppmEstimator := &mocks.PPMEstimator{} setupHandler := func() UpdateMoveHandler { builder := query.NewQueryBuilder() - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), diff --git a/pkg/handlers/ghcapi/api.go b/pkg/handlers/ghcapi/api.go index 7a61a6af415..a71a1a4db1f 100644 --- a/pkg/handlers/ghcapi/api.go +++ b/pkg/handlers/ghcapi/api.go @@ -65,7 +65,7 @@ func NewGhcAPIHandler(handlerConfig handlers.HandlerConfig) *ghcops.MymoveAPI { } ghcAPI := ghcops.NewMymoveAPI(ghcSpec) queryBuilder := query.NewQueryBuilder() - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) moveLocker := movelocker.NewMoveLocker() addressCreator := address.NewAddressCreator() portLocationFetcher := portlocation.NewPortLocationFetcher() diff --git a/pkg/handlers/ghcapi/move_task_order_test.go b/pkg/handlers/ghcapi/move_task_order_test.go index e93d756cf58..754dfddda10 100644 --- a/pkg/handlers/ghcapi/move_task_order_test.go +++ b/pkg/handlers/ghcapi/move_task_order_test.go @@ -36,6 +36,7 @@ import ( movetaskorder "github.com/transcom/mymove/pkg/services/move_task_order" mtoserviceitem "github.com/transcom/mymove/pkg/services/mto_service_item" "github.com/transcom/mymove/pkg/services/query" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/testdatagen" "github.com/transcom/mymove/pkg/trace" ) @@ -183,7 +184,7 @@ func (suite *HandlerSuite) TestUpdateMoveTaskOrderHandlerIntegrationSuccess() { handlerConfig := suite.HandlerConfig() handlerConfig.SetNotificationSender(notifications.NewStubNotificationSender("milmovelocal")) queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -308,7 +309,7 @@ func (suite *HandlerSuite) TestUpdateMoveTaskOrderHandlerIntegrationWithIncomple } handlerConfig := suite.HandlerConfig() queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) ppmEstimator := &mocks.PPMEstimator{} planner := &routemocks.Planner{} planner.On("ZipTransitDistance", @@ -399,7 +400,7 @@ func (suite *HandlerSuite) TestUpdateMTOStatusServiceCounselingCompletedHandler( setupTestData := func() UpdateMTOStatusServiceCounselingCompletedHandlerFunc { handlerConfig := suite.HandlerConfig() queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -620,7 +621,7 @@ func (suite *HandlerSuite) TestUpdateMoveTIORemarksHandler() { requestUser := factory.BuildUser(nil, nil, nil) handlerConfig := suite.HandlerConfig() queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), diff --git a/pkg/handlers/ghcapi/mto_service_items_test.go b/pkg/handlers/ghcapi/mto_service_items_test.go index 0a38a489ba1..1e7a405ad8c 100644 --- a/pkg/handlers/ghcapi/mto_service_items_test.go +++ b/pkg/handlers/ghcapi/mto_service_items_test.go @@ -33,6 +33,7 @@ import ( ppmshipment "github.com/transcom/mymove/pkg/services/ppmshipment" "github.com/transcom/mymove/pkg/services/query" sitstatus "github.com/transcom/mymove/pkg/services/sit_status" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/testdatagen" "github.com/transcom/mymove/pkg/trace" ) @@ -325,7 +326,7 @@ func (suite *HandlerSuite) TestUpdateMTOServiceItemStatusHandler() { mockSender := suite.TestNotificationSender() addressUpdater := address.NewAddressUpdater() addressCreator := address.NewAddressCreator() - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) noCheckUpdater := mtoshipment.NewMTOShipmentUpdater(builder, fetcher, planner, moveRouter, moveWeights, mockSender, paymentRequestShipmentRecalculator, addressUpdater, addressCreator) ppmEstimator := mocks.PPMEstimator{} @@ -557,7 +558,7 @@ func (suite *HandlerSuite) TestUpdateMTOServiceItemStatusHandler() { } fetcher := fetch.NewFetcher(queryBuilder) - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) shipmentFetcher := mtoshipment.NewMTOShipmentFetcher() addressCreator := address.NewAddressCreator() portLocationFetcher := portlocation.NewPortLocationFetcher() @@ -599,7 +600,7 @@ func (suite *HandlerSuite) TestUpdateMTOServiceItemStatusHandler() { // by the handler is working as expected. suite.Run("Successful status update of MTO service item and event trigger", func() { queryBuilder := query.NewQueryBuilder() - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) shipmentFetcher := mtoshipment.NewMTOShipmentFetcher() mtoServiceItem, availableMove := suite.createServiceItem() requestUser := factory.BuildUser(nil, nil, nil) @@ -778,7 +779,7 @@ func (suite *HandlerSuite) TestUpdateServiceItemSitEntryDateHandler() { mockSender := suite.TestNotificationSender() addressUpdater := address.NewAddressUpdater() addressCreator := address.NewAddressCreator() - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) noCheckUpdater := mtoshipment.NewMTOShipmentUpdater(builder, fetcher, planner, moveRouter, moveWeights, mockSender, paymentRequestShipmentRecalculator, addressUpdater, addressCreator) ppmEstimator := mocks.PPMEstimator{} diff --git a/pkg/handlers/ghcapi/mto_shipment_test.go b/pkg/handlers/ghcapi/mto_shipment_test.go index 316a2adbbd4..322fc2a1fc9 100644 --- a/pkg/handlers/ghcapi/mto_shipment_test.go +++ b/pkg/handlers/ghcapi/mto_shipment_test.go @@ -39,6 +39,7 @@ import ( "github.com/transcom/mymove/pkg/services/query" sitextension "github.com/transcom/mymove/pkg/services/sit_extension" sitstatus "github.com/transcom/mymove/pkg/services/sit_status" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/swagger/nullable" "github.com/transcom/mymove/pkg/trace" "github.com/transcom/mymove/pkg/unit" @@ -596,7 +597,7 @@ func (suite *HandlerSuite) TestApproveShipmentHandler() { eTag := etag.GenerateEtag(shipment.UpdatedAt) officeUser := factory.BuildOfficeUserWithRoles(nil, nil, []roles.RoleType{roles.RoleTypeTOO}) builder := query.NewQueryBuilder() - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} moveWeights := moveservices.NewMoveWeights(mtoshipment.NewShipmentReweighRequester()) planner.On("ZipTransitDistance", @@ -1198,7 +1199,7 @@ func (suite *HandlerSuite) TestApproveShipmentDiversionHandler() { officeUser := factory.BuildOfficeUserWithRoles(nil, nil, []roles.RoleType{roles.RoleTypeTOO}) approver := mtoshipment.NewShipmentDiversionApprover( mtoshipment.NewShipmentRouter(), - moveservices.NewMoveRouter(), + moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()), ) req := httptest.NewRequest("POST", fmt.Sprintf("/shipments/%s/approve-diversion", shipment.ID.String()), nil) @@ -1824,7 +1825,7 @@ func (suite *HandlerSuite) TestRequestShipmentCancellationHandler() { officeUser := factory.BuildOfficeUserWithRoles(nil, nil, []roles.RoleType{roles.RoleTypeTOO}) canceler := mtoshipment.NewShipmentCancellationRequester( mtoshipment.NewShipmentRouter(), - moveservices.NewMoveRouter(), + moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()), ) req := httptest.NewRequest("POST", fmt.Sprintf("/shipments/%s/request-cancellation", shipment.ID.String()), nil) @@ -2128,7 +2129,7 @@ func (suite *HandlerSuite) TestRequestShipmentReweighHandler() { false, false, ).Return(400, nil) - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) moveWeights := moveservices.NewMoveWeights(mtoshipment.NewShipmentReweighRequester()) // Get shipment payment request recalculator service @@ -2188,7 +2189,7 @@ func (suite *HandlerSuite) TestRequestShipmentReweighHandler() { false, false, ).Return(400, nil) - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) moveWeights := moveservices.NewMoveWeights(mtoshipment.NewShipmentReweighRequester()) // Get shipment payment request recalculator service @@ -2245,7 +2246,7 @@ func (suite *HandlerSuite) TestRequestShipmentReweighHandler() { false, false, ).Return(400, nil) - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) moveWeights := moveservices.NewMoveWeights(mtoshipment.NewShipmentReweighRequester()) // Get shipment payment request recalculator service @@ -2303,7 +2304,7 @@ func (suite *HandlerSuite) TestRequestShipmentReweighHandler() { false, false, ).Return(400, nil) - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) moveWeights := moveservices.NewMoveWeights(mtoshipment.NewShipmentReweighRequester()) // Get shipment payment request recalculator service @@ -2362,7 +2363,7 @@ func (suite *HandlerSuite) TestRequestShipmentReweighHandler() { false, false, ).Return(400, nil) - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) moveWeights := moveservices.NewMoveWeights(mtoshipment.NewShipmentReweighRequester()) // Get shipment payment request recalculator service @@ -2420,7 +2421,7 @@ func (suite *HandlerSuite) TestRequestShipmentReweighHandler() { false, false, ).Return(400, nil) - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) moveWeights := moveservices.NewMoveWeights(mtoshipment.NewShipmentReweighRequester()) // Get shipment payment request recalculator service @@ -2744,7 +2745,7 @@ func (suite *HandlerSuite) TestApproveSITExtensionHandler() { }, nil) eTag := etag.GenerateEtag(mtoShipment.UpdatedAt) officeUser := factory.BuildOfficeUserWithRoles(nil, nil, []roles.RoleType{roles.RoleTypeTOO}) - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) sitExtensionApprover := sitextension.NewSITExtensionApprover(moveRouter) req := httptest.NewRequest("PATCH", fmt.Sprintf("/shipments/%s/sit-extension/%s/approve", mtoShipment.ID.String(), sitExtension.ID.String()), nil) req = suite.AuthenticateOfficeRequest(req, officeUser) @@ -2843,7 +2844,7 @@ func (suite *HandlerSuite) TestDenySITExtensionHandler() { }, nil) eTag := etag.GenerateEtag(mtoShipment.UpdatedAt) officeUser := factory.BuildOfficeUserWithRoles(nil, nil, []roles.RoleType{roles.RoleTypeTOO}) - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) sitExtensionDenier := sitextension.NewSITExtensionDenier(moveRouter) req := httptest.NewRequest("PATCH", fmt.Sprintf("/shipments/%s/sit-extension/%s/deny", mtoShipment.ID.String(), sitExtension.ID.String()), nil) req = suite.AuthenticateOfficeRequest(req, officeUser) @@ -2912,7 +2913,7 @@ func (suite *HandlerSuite) CreateApprovedSITDurationUpdate() { mockSender := suite.TestNotificationSender() addressUpdater := address.NewAddressUpdater() addressCreator := address.NewAddressCreator() - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) noCheckUpdater := mtoshipment.NewMTOShipmentUpdater(builder, fetcher, planner, moveRouter, moveWeights, mockSender, paymentRequestShipmentRecalculator, addressUpdater, addressCreator) ppmEstimator := mocks.PPMEstimator{} @@ -2997,7 +2998,7 @@ func (suite *HandlerSuite) CreateApprovedSITDurationUpdate() { mockSender := suite.TestNotificationSender() addressUpdater := address.NewAddressUpdater() addressCreator := address.NewAddressCreator() - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) noCheckUpdater := mtoshipment.NewMTOShipmentUpdater(builder, fetcher, planner, moveRouter, moveWeights, mockSender, paymentRequestShipmentRecalculator, addressUpdater, addressCreator) ppmEstimator := mocks.PPMEstimator{} @@ -3112,7 +3113,7 @@ func (suite *HandlerSuite) makeCreateMTOShipmentSubtestData() (subtestData *crea } func (suite *HandlerSuite) TestCreateMTOShipmentHandler() { - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) addressCreator := address.NewAddressCreator() setUpSignedCertificationCreatorMock := func(returnValue ...interface{}) services.SignedCertificationCreator { @@ -3481,7 +3482,7 @@ func (suite *HandlerSuite) TestCreateMTOShipmentHandlerUsingPPM() { handlerConfig := suite.HandlerConfig() builder := query.NewQueryBuilder() fetcher := fetch.NewFetcher(builder) - creator := mtoshipment.NewMTOShipmentCreatorV1(builder, fetcher, moveservices.NewMoveRouter(), addressCreator) + creator := mtoshipment.NewMTOShipmentCreatorV1(builder, fetcher, moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()), addressCreator) ppmEstimator := mocks.PPMEstimator{} ppmCreator := ppmshipment.NewPPMShipmentCreator(&ppmEstimator, addressCreator) boatCreator := boatshipment.NewBoatShipmentCreator() @@ -3498,8 +3499,8 @@ func (suite *HandlerSuite) TestCreateMTOShipmentHandlerUsingPPM() { moveTaskOrderUpdater := movetaskorder.NewMoveTaskOrderUpdater( builder, - mtoserviceitem.NewMTOServiceItemCreator(planner, builder, moveservices.NewMoveRouter(), ghcrateengine.NewDomesticUnpackPricer(), ghcrateengine.NewDomesticPackPricer(), ghcrateengine.NewDomesticLinehaulPricer(), ghcrateengine.NewDomesticShorthaulPricer(), ghcrateengine.NewDomesticOriginPricer(), ghcrateengine.NewDomesticDestinationPricer(), ghcrateengine.NewFuelSurchargePricer()), - moveservices.NewMoveRouter(), setUpSignedCertificationCreatorMock(nil, nil), setUpSignedCertificationUpdaterMock(nil, nil), &ppmEstimator, + mtoserviceitem.NewMTOServiceItemCreator(planner, builder, moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()), ghcrateengine.NewDomesticUnpackPricer(), ghcrateengine.NewDomesticPackPricer(), ghcrateengine.NewDomesticLinehaulPricer(), ghcrateengine.NewDomesticShorthaulPricer(), ghcrateengine.NewDomesticOriginPricer(), ghcrateengine.NewDomesticDestinationPricer(), ghcrateengine.NewFuelSurchargePricer()), + moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()), setUpSignedCertificationCreatorMock(nil, nil), setUpSignedCertificationUpdaterMock(nil, nil), &ppmEstimator, ) shipmentCreator := shipmentorchestrator.NewShipmentCreator(creator, ppmCreator, boatCreator, mobileHomeCreator, shipmentRouter, moveTaskOrderUpdater) sitStatus := sitstatus.NewShipmentSITStatus() @@ -3695,7 +3696,7 @@ func (suite *HandlerSuite) TestCreateMTOShipmentHandlerUsingPPM() { handlerConfig := suite.HandlerConfig() builder := query.NewQueryBuilder() fetcher := fetch.NewFetcher(builder) - creator := mtoshipment.NewMTOShipmentCreatorV1(builder, fetcher, moveservices.NewMoveRouter(), addressCreator) + creator := mtoshipment.NewMTOShipmentCreatorV1(builder, fetcher, moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()), addressCreator) ppmEstimator := mocks.PPMEstimator{} boatCreator := boatshipment.NewBoatShipmentCreator() mobileHomeCreator := mobilehomeshipment.NewMobileHomeShipmentCreator() @@ -3710,8 +3711,8 @@ func (suite *HandlerSuite) TestCreateMTOShipmentHandlerUsingPPM() { ).Return(400, nil) moveTaskOrderUpdater := movetaskorder.NewMoveTaskOrderUpdater( builder, - mtoserviceitem.NewMTOServiceItemCreator(planner, builder, moveservices.NewMoveRouter(), ghcrateengine.NewDomesticUnpackPricer(), ghcrateengine.NewDomesticPackPricer(), ghcrateengine.NewDomesticLinehaulPricer(), ghcrateengine.NewDomesticShorthaulPricer(), ghcrateengine.NewDomesticOriginPricer(), ghcrateengine.NewDomesticDestinationPricer(), ghcrateengine.NewFuelSurchargePricer()), - moveservices.NewMoveRouter(), setUpSignedCertificationCreatorMock(nil, nil), setUpSignedCertificationUpdaterMock(nil, nil), &ppmEstimator, + mtoserviceitem.NewMTOServiceItemCreator(planner, builder, moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()), ghcrateengine.NewDomesticUnpackPricer(), ghcrateengine.NewDomesticPackPricer(), ghcrateengine.NewDomesticLinehaulPricer(), ghcrateengine.NewDomesticShorthaulPricer(), ghcrateengine.NewDomesticOriginPricer(), ghcrateengine.NewDomesticDestinationPricer(), ghcrateengine.NewFuelSurchargePricer()), + moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()), setUpSignedCertificationCreatorMock(nil, nil), setUpSignedCertificationUpdaterMock(nil, nil), &ppmEstimator, ) shipmentCreator := shipmentorchestrator.NewShipmentCreator(creator, ppmshipment.NewPPMShipmentCreator(&ppmEstimator, addressCreator), boatCreator, mobileHomeCreator, shipmentRouter, moveTaskOrderUpdater) handler := CreateMTOShipmentHandler{ @@ -3847,7 +3848,7 @@ func (suite *HandlerSuite) TestCreateMTOShipmentHandlerUsingPPM() { handlerConfig := suite.HandlerConfig() builder := query.NewQueryBuilder() fetcher := fetch.NewFetcher(builder) - creator := mtoshipment.NewMTOShipmentCreatorV1(builder, fetcher, moveservices.NewMoveRouter(), addressCreator) + creator := mtoshipment.NewMTOShipmentCreatorV1(builder, fetcher, moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()), addressCreator) ppmEstimator := mocks.PPMEstimator{} boatCreator := boatshipment.NewBoatShipmentCreator() mobileHomeCreator := mobilehomeshipment.NewMobileHomeShipmentCreator() @@ -3862,8 +3863,8 @@ func (suite *HandlerSuite) TestCreateMTOShipmentHandlerUsingPPM() { ).Return(400, nil) moveTaskOrderUpdater := movetaskorder.NewMoveTaskOrderUpdater( builder, - mtoserviceitem.NewMTOServiceItemCreator(planner, builder, moveservices.NewMoveRouter(), ghcrateengine.NewDomesticUnpackPricer(), ghcrateengine.NewDomesticPackPricer(), ghcrateengine.NewDomesticLinehaulPricer(), ghcrateengine.NewDomesticShorthaulPricer(), ghcrateengine.NewDomesticOriginPricer(), ghcrateengine.NewDomesticDestinationPricer(), ghcrateengine.NewFuelSurchargePricer()), - moveservices.NewMoveRouter(), setUpSignedCertificationCreatorMock(nil, nil), setUpSignedCertificationUpdaterMock(nil, nil), &ppmEstimator, + mtoserviceitem.NewMTOServiceItemCreator(planner, builder, moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()), ghcrateengine.NewDomesticUnpackPricer(), ghcrateengine.NewDomesticPackPricer(), ghcrateengine.NewDomesticLinehaulPricer(), ghcrateengine.NewDomesticShorthaulPricer(), ghcrateengine.NewDomesticOriginPricer(), ghcrateengine.NewDomesticDestinationPricer(), ghcrateengine.NewFuelSurchargePricer()), + moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()), setUpSignedCertificationCreatorMock(nil, nil), setUpSignedCertificationUpdaterMock(nil, nil), &ppmEstimator, ) shipmentCreator := shipmentorchestrator.NewShipmentCreator(creator, ppmshipment.NewPPMShipmentCreator(&ppmEstimator, addressCreator), boatCreator, mobileHomeCreator, shipmentRouter, moveTaskOrderUpdater) handler := CreateMTOShipmentHandler{ @@ -4067,7 +4068,7 @@ func (suite *HandlerSuite) TestUpdateShipmentHandler() { false, false, ).Return(400, nil) - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) moveWeights := moveservices.NewMoveWeights(mtoshipment.NewShipmentReweighRequester()) // Get shipment payment request recalculator service @@ -4690,7 +4691,7 @@ func (suite *HandlerSuite) TestUpdateShipmentHandler() { }) } func (suite *HandlerSuite) TestUpdateSITServiceItemCustomerExpenseHandler() { - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) builder := query.NewQueryBuilder() shipmentFetcher := mtoshipment.NewMTOShipmentFetcher() addressCreator := address.NewAddressCreator() diff --git a/pkg/handlers/ghcapi/orders_test.go b/pkg/handlers/ghcapi/orders_test.go index 9dba706d059..465b7821e83 100644 --- a/pkg/handlers/ghcapi/orders_test.go +++ b/pkg/handlers/ghcapi/orders_test.go @@ -29,6 +29,7 @@ import ( mtoserviceitem "github.com/transcom/mymove/pkg/services/mto_service_item" orderservice "github.com/transcom/mymove/pkg/services/order" "github.com/transcom/mymove/pkg/services/query" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" storageTest "github.com/transcom/mymove/pkg/storage/test" "github.com/transcom/mymove/pkg/swagger/nullable" "github.com/transcom/mymove/pkg/trace" @@ -393,7 +394,7 @@ func (suite *HandlerSuite) makeUpdateOrderHandlerAmendedUploadSubtestData() (sub func (suite *HandlerSuite) TestUpdateOrderHandlerWithAmendedUploads() { queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -728,7 +729,7 @@ func (suite *HandlerSuite) TestUpdateOrderHandler() { } moveTaskOrderUpdater := mocks.MoveTaskOrderUpdater{} - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) handler := UpdateOrderHandler{ handlerConfig, orderservice.NewOrderUpdater(moveRouter), @@ -1020,7 +1021,7 @@ func (suite *HandlerSuite) TestCounselingUpdateOrderHandler() { Body: body, } - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) handler := CounselingUpdateOrderHandler{ handlerConfig, orderservice.NewOrderUpdater(moveRouter), @@ -1268,7 +1269,7 @@ func (suite *HandlerSuite) TestUpdateAllowanceHandler() { Body: body, } - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) handler := UpdateAllowanceHandler{ handlerConfig, orderservice.NewOrderUpdater(moveRouter), @@ -1496,7 +1497,7 @@ func (suite *HandlerSuite) TestCounselingUpdateAllowanceHandler() { Body: body, } - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) handler := CounselingUpdateAllowanceHandler{ handlerConfig, orderservice.NewOrderUpdater(moveRouter), @@ -1654,7 +1655,7 @@ func (suite *HandlerSuite) TestUpdateMaxBillableWeightAsTIOHandler() { Body: body, } - router := moverouter.NewMoveRouter() + router := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) handler := UpdateMaxBillableWeightAsTIOHandler{ handlerConfig, orderservice.NewExcessWeightRiskManager(router), @@ -1817,7 +1818,7 @@ func (suite *HandlerSuite) TestUpdateBillableWeightHandler() { Body: body, } - router := moverouter.NewMoveRouter() + router := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) handler := UpdateBillableWeightHandler{ handlerConfig, orderservice.NewExcessWeightRiskManager(router), @@ -2033,7 +2034,7 @@ func (suite *HandlerSuite) TestAcknowledgeExcessWeightRiskHandler() { IfMatch: etag.GenerateEtag(move.UpdatedAt), } - router := moverouter.NewMoveRouter() + router := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) handler := AcknowledgeExcessWeightRiskHandler{ handlerConfig, orderservice.NewExcessWeightRiskManager(router), @@ -2206,7 +2207,7 @@ func (suite *HandlerSuite) TestacknowledgeExcessUnaccompaniedBaggageWeightRiskHa IfMatch: etag.GenerateEtag(move.UpdatedAt), } - router := moverouter.NewMoveRouter() + router := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) handler := AcknowledgeExcessUnaccompaniedBaggageWeightRiskHandler{ handlerConfig, orderservice.NewExcessWeightRiskManager(router), @@ -2616,7 +2617,7 @@ func (suite *HandlerSuite) TestUploadAmendedOrdersHandlerUnit() { } func (suite *HandlerSuite) TestUploadAmendedOrdersHandlerIntegration() { - orderUpdater := orderservice.NewOrderUpdater(moverouter.NewMoveRouter()) + orderUpdater := orderservice.NewOrderUpdater(moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher())) setUpRequestAndParams := func(orders models.Order) *orderop.UploadAmendedOrdersParams { endpoint := fmt.Sprintf("/orders/%v/upload_amended_orders", orders.ID.String()) diff --git a/pkg/handlers/internalapi/api.go b/pkg/handlers/internalapi/api.go index dfbad6e2ba9..ad70794a068 100644 --- a/pkg/handlers/internalapi/api.go +++ b/pkg/handlers/internalapi/api.go @@ -56,7 +56,7 @@ func NewInternalAPI(handlerConfig handlers.HandlerConfig) *internalops.MymoveAPI internalAPI.ServeError = handlers.ServeCustomError builder := query.NewQueryBuilder() fetcher := fetch.NewFetcher(builder) - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) uploadCreator := upload.NewUploadCreator(handlerConfig.FileStorer()) ppmEstimator := ppmshipment.NewEstimatePPM(handlerConfig.DTODPlanner(), &paymentrequesthelper.RequestPaymentHelper{}) ppmCloseoutFetcher := ppmcloseout.NewPPMCloseoutFetcher(handlerConfig.DTODPlanner(), &paymentrequesthelper.RequestPaymentHelper{}, ppmEstimator) diff --git a/pkg/handlers/internalapi/moves_test.go b/pkg/handlers/internalapi/moves_test.go index 40e2e9283f5..abd154aa95c 100644 --- a/pkg/handlers/internalapi/moves_test.go +++ b/pkg/handlers/internalapi/moves_test.go @@ -281,7 +281,7 @@ func (suite *HandlerSuite) TestSubmitMoveForApprovalHandler() { // When: a move is submitted handlerConfig := suite.HandlerConfig() handlerConfig.SetNotificationSender(notifications.NewStubNotificationSender("milmovelocal")) - handler := SubmitMoveHandler{handlerConfig, moverouter.NewMoveRouter()} + handler := SubmitMoveHandler{handlerConfig, moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher())} response := handler.Handle(params) // Then: expect a 200 status code @@ -332,7 +332,7 @@ func (suite *HandlerSuite) TestSubmitMoveForApprovalHandler() { // And: a move is submitted handlerConfig := suite.HandlerConfig() handlerConfig.SetNotificationSender(notifications.NewStubNotificationSender("milmovelocal")) - handler := SubmitMoveHandler{handlerConfig, moverouter.NewMoveRouter()} + handler := SubmitMoveHandler{handlerConfig, moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher())} response := handler.Handle(params) // Then: expect a 200 status code @@ -385,7 +385,7 @@ func (suite *HandlerSuite) TestSubmitMoveForServiceCounselingHandler() { // When: a move is submitted handlerConfig := suite.HandlerConfig() handlerConfig.SetNotificationSender(notifications.NewStubNotificationSender("milmovelocal")) - handler := SubmitMoveHandler{handlerConfig, moverouter.NewMoveRouter()} + handler := SubmitMoveHandler{handlerConfig, moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher())} response := handler.Handle(params) // Then: expect a 200 status code @@ -435,7 +435,7 @@ func (suite *HandlerSuite) TestSubmitAmendedOrdersHandler() { // And: a move is submitted handlerConfig := suite.HandlerConfig() - handler := SubmitAmendedOrdersHandler{handlerConfig, moverouter.NewMoveRouter()} + handler := SubmitAmendedOrdersHandler{handlerConfig, moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher())} response := handler.Handle(params) // Then: expect a 200 status code diff --git a/pkg/handlers/internalapi/mto_shipment_test.go b/pkg/handlers/internalapi/mto_shipment_test.go index b3bdb4971fe..ef2b640132c 100644 --- a/pkg/handlers/internalapi/mto_shipment_test.go +++ b/pkg/handlers/internalapi/mto_shipment_test.go @@ -34,6 +34,7 @@ import ( paymentrequest "github.com/transcom/mymove/pkg/services/payment_request" "github.com/transcom/mymove/pkg/services/ppmshipment" "github.com/transcom/mymove/pkg/services/query" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/testdatagen" "github.com/transcom/mymove/pkg/unit" ) @@ -47,7 +48,7 @@ type mtoShipmentObjects struct { func (suite *HandlerSuite) setUpMTOShipmentObjects() *mtoShipmentObjects { builder := query.NewQueryBuilder() fetcher := fetch.NewFetcher(builder) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) return &mtoShipmentObjects{ builder: builder, diff --git a/pkg/handlers/internalapi/office_test.go b/pkg/handlers/internalapi/office_test.go index 9370fb0c76f..f7e7101f388 100644 --- a/pkg/handlers/internalapi/office_test.go +++ b/pkg/handlers/internalapi/office_test.go @@ -12,6 +12,7 @@ import ( "github.com/transcom/mymove/pkg/models" "github.com/transcom/mymove/pkg/models/roles" moverouter "github.com/transcom/mymove/pkg/services/move" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/testdatagen" ) @@ -31,7 +32,7 @@ func (suite *HandlerSuite) TestApproveMoveHandler() { }, nil) // Given: an office User officeUser := factory.BuildOfficeUserWithRoles(suite.DB(), nil, []roles.RoleType{roles.RoleTypeTOO}) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) // Move is submitted and saved newSignedCertification := factory.BuildSignedCertification(nil, []factory.Customization{ @@ -73,7 +74,7 @@ func (suite *HandlerSuite) TestApproveMoveHandlerIncompleteOrders() { move := factory.BuildMove(suite.DB(), nil, nil) // Given: an office User officeUser := factory.BuildOfficeUserWithRoles(suite.DB(), nil, []roles.RoleType{roles.RoleTypeTOO}) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) // Move is submitted and saved newSignedCertification := factory.BuildSignedCertification(nil, []factory.Customization{ @@ -116,7 +117,7 @@ func (suite *HandlerSuite) TestApproveMoveHandlerForbidden() { move := factory.BuildMove(suite.DB(), nil, nil) // Given: an non-office User user := factory.BuildServiceMember(suite.DB(), nil, nil) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) // And: the context contains the auth values req := httptest.NewRequest("POST", "/moves/some_id/approve", nil) @@ -141,7 +142,7 @@ func (suite *HandlerSuite) TestCancelMoveHandler() { suite.Run("Successfully cancels move", func() { // Given: a set of orders, a move, and office user // Orders has service member with transportation office and phone nums - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) // Given: a set of orders, a move, user and servicemember move := factory.BuildMove(suite.DB(), nil, nil) @@ -171,7 +172,7 @@ func (suite *HandlerSuite) TestCancelMoveHandler() { suite.Run("Fails to cancel someone elses move", func() { // Given: a set of orders, a move, and office user // Orders has service member with transportation office and phone nums - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) // Given: a set of orders, a move, user and servicemember move := factory.BuildMove(suite.DB(), nil, nil) @@ -198,7 +199,7 @@ func (suite *HandlerSuite) TestCancelMoveHandler() { suite.Run("Fails to cancel submitted move", func() { // Given: a set of orders, a move, and office user // Orders has service member with transportation office and phone nums - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) // Given: a set of orders, a move, user and servicemember move := factory.BuildMove(suite.DB(), []factory.Customization{ diff --git a/pkg/handlers/internalapi/orders_test.go b/pkg/handlers/internalapi/orders_test.go index 59df8daf475..192ddc5471e 100644 --- a/pkg/handlers/internalapi/orders_test.go +++ b/pkg/handlers/internalapi/orders_test.go @@ -20,6 +20,7 @@ import ( "github.com/transcom/mymove/pkg/services/mocks" "github.com/transcom/mymove/pkg/services/move" orderservice "github.com/transcom/mymove/pkg/services/order" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" storageTest "github.com/transcom/mymove/pkg/storage/test" "github.com/transcom/mymove/pkg/uploader" ) @@ -487,7 +488,7 @@ func (suite *HandlerSuite) TestUploadAmendedOrdersHandlerUnit() { } func (suite *HandlerSuite) TestUploadAmendedOrdersHandlerIntegration() { - orderUpdater := orderservice.NewOrderUpdater(move.NewMoveRouter()) + orderUpdater := orderservice.NewOrderUpdater(move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher())) setUpRequestAndParams := func(orders models.Order) *ordersop.UploadAmendedOrdersParams { endpoint := fmt.Sprintf("/orders/%v/upload_amended_orders", orders.ID.String()) diff --git a/pkg/handlers/internalapi/service_members_test.go b/pkg/handlers/internalapi/service_members_test.go index 3fc9bba63fe..2c111933eb4 100644 --- a/pkg/handlers/internalapi/service_members_test.go +++ b/pkg/handlers/internalapi/service_members_test.go @@ -23,6 +23,7 @@ import ( "github.com/transcom/mymove/pkg/handlers" "github.com/transcom/mymove/pkg/models" moverouter "github.com/transcom/mymove/pkg/services/move" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" storageTest "github.com/transcom/mymove/pkg/storage/test" ) @@ -392,7 +393,7 @@ func (suite *HandlerSuite) TestPatchServiceMemberHandlerSubmittedMove() { move.Orders.OrdersTypeDetail = nil suite.MustSave(&move.Orders) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) newSignedCertification := factory.BuildSignedCertification(nil, []factory.Customization{ { Model: move, diff --git a/pkg/handlers/primeapi/api.go b/pkg/handlers/primeapi/api.go index a96b47ac5f2..baa8e61dd7e 100644 --- a/pkg/handlers/primeapi/api.go +++ b/pkg/handlers/primeapi/api.go @@ -28,6 +28,7 @@ import ( shipmentaddressupdate "github.com/transcom/mymove/pkg/services/shipment_address_update" signedcertification "github.com/transcom/mymove/pkg/services/signed_certification" sitextension "github.com/transcom/mymove/pkg/services/sit_extension" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/services/upload" "github.com/transcom/mymove/pkg/uploader" ) @@ -43,7 +44,7 @@ func NewPrimeAPI(handlerConfig handlers.HandlerConfig) *primeoperations.MymoveAP } primeAPI := primeoperations.NewMymoveAPI(primeSpec) queryBuilder := query.NewQueryBuilder() - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) addressCreator := address.NewAddressCreator() portLocationFetcher := portlocation.NewPortLocationFetcher() shipmentFetcher := mtoshipment.NewMTOShipmentFetcher() diff --git a/pkg/handlers/primeapi/move_task_order_test.go b/pkg/handlers/primeapi/move_task_order_test.go index 735c362f1c8..619f1e4062d 100644 --- a/pkg/handlers/primeapi/move_task_order_test.go +++ b/pkg/handlers/primeapi/move_task_order_test.go @@ -28,6 +28,7 @@ import ( movetaskorder "github.com/transcom/mymove/pkg/services/move_task_order" mtoserviceitem "github.com/transcom/mymove/pkg/services/mto_service_item" "github.com/transcom/mymove/pkg/services/query" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/services/upload" storageTest "github.com/transcom/mymove/pkg/storage/test" "github.com/transcom/mymove/pkg/testdatagen" @@ -1704,7 +1705,7 @@ func (suite *HandlerSuite) TestUpdateMTOPostCounselingInfo() { queryBuilder := query.NewQueryBuilder() fetcher := fetch.NewFetcher(queryBuilder) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1789,7 +1790,7 @@ func (suite *HandlerSuite) TestUpdateMTOPostCounselingInfo() { mtoChecker := movetaskorder.NewMoveTaskOrderChecker() queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) fetcher := fetch.NewFetcher(queryBuilder) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", diff --git a/pkg/handlers/primeapi/mto_service_item_test.go b/pkg/handlers/primeapi/mto_service_item_test.go index 5848ba63f6c..3dbbf840936 100644 --- a/pkg/handlers/primeapi/mto_service_item_test.go +++ b/pkg/handlers/primeapi/mto_service_item_test.go @@ -30,6 +30,7 @@ import ( portlocation "github.com/transcom/mymove/pkg/services/port_location" "github.com/transcom/mymove/pkg/services/query" sitstatus "github.com/transcom/mymove/pkg/services/sit_status" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/unit" ) @@ -109,7 +110,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemHandler() { suite.Run("Successful POST - Integration Test", func() { subtestData := makeSubtestData() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -169,7 +170,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemHandler() { Body: payloads.MTOServiceItem(&mtoServiceItem), } - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -309,7 +310,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemHandler() { suite.Run("POST failure - 404 - MTO is not available to Prime", func() { subtestData := makeSubtestData() mtoNotAvailable := factory.BuildMove(suite.DB(), nil, nil) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -355,7 +356,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemHandler() { LinkOnly: true, }, }, nil) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -459,7 +460,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemHandler() { suite.Run("POST failure - Shipment fetch not found", func() { subtestData := makeSubtestDataWithPPMShipmentType(true) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -491,7 +492,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemHandler() { suite.Run("POST failure - 422 - PPM not allowed to create service item", func() { subtestData := makeSubtestDataWithPPMShipmentType(true) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -570,7 +571,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDomesticCratingHandler() { suite.Run("Successful POST - Integration Test - Domestic Crating", func() { subtestData := makeSubtestData() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -609,7 +610,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDomesticCratingHandler() { suite.Run("Successful POST - Integration Test - Domestic Uncrating", func() { subtestData := makeSubtestData() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -734,7 +735,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemOriginSITHandler() { requestApprovalRequestedStatus := false subtestData.mtoServiceItem.RequestedApprovalsRequestedStatus = &requestApprovalRequestedStatus subtestData.mtoServiceItem.ReService.Code = models.ReServiceCodeDOPSIT - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -782,7 +783,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemOriginSITHandler() { requestApprovalRequestedStatus := false subtestData.mtoServiceItem.RequestedApprovalsRequestedStatus = &requestApprovalRequestedStatus - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -853,7 +854,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemOriginSITHandler() { }, nil) subtestData.mtoServiceItem.ReService.Code = models.ReServiceCodeDOASIT - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -939,7 +940,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemOriginSITHandlerWithDOFSITNoA requstedApprovalsRequestedStatus := false subtestData.mtoServiceItem.RequestedApprovalsRequestedStatus = &requstedApprovalsRequestedStatus subtestData.mtoServiceItem.ReService.Code = models.ReServiceCodeDOFSIT - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1051,7 +1052,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemOriginSITHandlerWithDOFSITWit requestedApprovalsRequestedStatus := false subtestData.mtoServiceItem.RequestedApprovalsRequestedStatus = &requestedApprovalsRequestedStatus subtestData.mtoServiceItem.ReService.Code = models.ReServiceCodeDOFSIT - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1226,7 +1227,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDestSITHandler() { suite.Run("Successful POST - Integration Test", func() { subtestData := makeSubtestData() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1302,7 +1303,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDestSITHandler() { SITEntryDate: &sitEntryDate, Reason: models.StringPointer("lorem ipsum"), } - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1337,7 +1338,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDestSITHandler() { suite.Run("Failure POST - Integration Test - Missing reason", func() { subtestData := makeSubtestData() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1395,7 +1396,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDestSITHandler() { HTTPRequest: subtestData.params.HTTPRequest, Body: payloads.MTOServiceItem(&subtestData.mtoServiceItem), } - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1451,7 +1452,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDestSITHandler() { HTTPRequest: subtestData.params.HTTPRequest, Body: payloads.MTOServiceItem(&subtestData.mtoServiceItem), } - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1489,7 +1490,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDestSITHandler() { // SETUP // Create the payload subtestData.mtoServiceItem.ReService.Code = models.ReServiceCodeDDDSIT - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} creator := mtoserviceitem.NewMTOServiceItemCreator(planner, builder, moveRouter, ghcrateengine.NewDomesticUnpackPricer(), ghcrateengine.NewDomesticPackPricer(), ghcrateengine.NewDomesticLinehaulPricer(), ghcrateengine.NewDomesticShorthaulPricer(), ghcrateengine.NewDomesticOriginPricer(), ghcrateengine.NewDomesticDestinationPricer(), ghcrateengine.NewFuelSurchargePricer()) handler := CreateMTOServiceItemHandler{ @@ -1648,7 +1649,7 @@ func (suite *HandlerSuite) TestUpdateMTOServiceItemDDDSIT() { // Create the handler queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) shipmentFetcher := mtoshipment.NewMTOShipmentFetcher() addressCreator := address.NewAddressCreator() portLocationFetcher := portlocation.NewPortLocationFetcher() @@ -1831,7 +1832,7 @@ func (suite *HandlerSuite) TestUpdateMTOServiceItemDOPSIT() { // Create the service item in the db for dofsit and DOPSIT // Create the handler queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) shipmentFetcher := mtoshipment.NewMTOShipmentFetcher() addressCreator := address.NewAddressCreator() portLocationFetcher := portlocation.NewPortLocationFetcher() diff --git a/pkg/handlers/primeapi/mto_shipment_test.go b/pkg/handlers/primeapi/mto_shipment_test.go index 917e10cdfc6..e25dffafd62 100644 --- a/pkg/handlers/primeapi/mto_shipment_test.go +++ b/pkg/handlers/primeapi/mto_shipment_test.go @@ -31,6 +31,7 @@ import ( mtoshipment "github.com/transcom/mymove/pkg/services/mto_shipment" paymentrequest "github.com/transcom/mymove/pkg/services/payment_request" "github.com/transcom/mymove/pkg/services/query" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" ) func (suite *HandlerSuite) TestUpdateShipmentDestinationAddressHandler() { @@ -206,7 +207,7 @@ func (suite *HandlerSuite) TestUpdateMTOShipmentStatusHandler() { false, false, ).Return(400, nil) - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) addressUpdater := address.NewAddressUpdater() addressCreator := address.NewAddressCreator() moveWeights := moveservices.NewMoveWeights(mtoshipment.NewShipmentReweighRequester()) @@ -412,7 +413,7 @@ func (suite *HandlerSuite) TestUpdateMTOShipmentStatusHandler() { func (suite *HandlerSuite) TestDeleteMTOShipmentHandler() { setupTestData := func() DeleteMTOShipmentHandler { builder := query.NewQueryBuilder() - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), diff --git a/pkg/handlers/primeapi/sit_extension_test.go b/pkg/handlers/primeapi/sit_extension_test.go index 2e30b6f4576..dfd6052d67a 100644 --- a/pkg/handlers/primeapi/sit_extension_test.go +++ b/pkg/handlers/primeapi/sit_extension_test.go @@ -14,6 +14,7 @@ import ( "github.com/transcom/mymove/pkg/models" moverouter "github.com/transcom/mymove/pkg/services/move" sitextensionservice "github.com/transcom/mymove/pkg/services/sit_extension" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" ) func (suite *HandlerSuite) CreateSITExtensionHandler() { @@ -30,7 +31,7 @@ func (suite *HandlerSuite) CreateSITExtensionHandler() { } // Create move router for SitExtension Createor - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) setupTestData := func() (CreateSITExtensionHandler, models.MTOShipment) { // Make an available move diff --git a/pkg/handlers/primeapiv2/api.go b/pkg/handlers/primeapiv2/api.go index 72468b5a5f4..2be19c8d87f 100644 --- a/pkg/handlers/primeapiv2/api.go +++ b/pkg/handlers/primeapiv2/api.go @@ -23,6 +23,7 @@ import ( "github.com/transcom/mymove/pkg/services/ppmshipment" "github.com/transcom/mymove/pkg/services/query" signedcertification "github.com/transcom/mymove/pkg/services/signed_certification" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" ) // NewPrimeAPI returns the Prime API @@ -30,7 +31,7 @@ func NewPrimeAPI(handlerConfig handlers.HandlerConfig) *primev2operations.Mymove builder := query.NewQueryBuilder() fetcher := fetch.NewFetcher(builder) queryBuilder := query.NewQueryBuilder() - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) primeSpec, err := loads.Analyzed(primev2api.SwaggerJSON, "") if err != nil { diff --git a/pkg/handlers/primeapiv2/mto_service_item_test.go b/pkg/handlers/primeapiv2/mto_service_item_test.go index 8875c35a851..232ac8bb4e8 100644 --- a/pkg/handlers/primeapiv2/mto_service_item_test.go +++ b/pkg/handlers/primeapiv2/mto_service_item_test.go @@ -25,6 +25,7 @@ import ( movetaskorder "github.com/transcom/mymove/pkg/services/move_task_order" mtoserviceitem "github.com/transcom/mymove/pkg/services/mto_service_item" "github.com/transcom/mymove/pkg/services/query" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" ) func (suite *HandlerSuite) TestCreateMTOServiceItemHandler() { @@ -103,7 +104,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemHandler() { suite.Run("Successful POST - Integration Test", func() { subtestData := makeSubtestData() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -163,7 +164,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemHandler() { Body: payloads.MTOServiceItem(&mtoServiceItem), } - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -303,7 +304,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemHandler() { suite.Run("POST failure - 404 - MTO is not available to Prime", func() { subtestData := makeSubtestData() mtoNotAvailable := factory.BuildMove(suite.DB(), nil, nil) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -349,7 +350,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemHandler() { LinkOnly: true, }, }, nil) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -453,7 +454,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemHandler() { suite.Run("POST failure - Shipment fetch not found", func() { subtestData := makeSubtestDataWithPPMShipmentType(true) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -485,7 +486,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemHandler() { suite.Run("POST failure - 422 - PPM not allowed to create service item", func() { subtestData := makeSubtestDataWithPPMShipmentType(true) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -564,7 +565,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDomesticCratingHandler() { suite.Run("Successful POST - Integration Test - Domestic Crating", func() { subtestData := makeSubtestData() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -603,7 +604,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDomesticCratingHandler() { suite.Run("Successful POST - Integration Test - Domestic Uncrating", func() { subtestData := makeSubtestData() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -728,7 +729,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemOriginSITHandler() { requestApprovalRequestedStatus := false subtestData.mtoServiceItem.RequestedApprovalsRequestedStatus = &requestApprovalRequestedStatus subtestData.mtoServiceItem.ReService.Code = models.ReServiceCodeDOPSIT - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -776,7 +777,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemOriginSITHandler() { requestApprovalRequestedStatus := false subtestData.mtoServiceItem.RequestedApprovalsRequestedStatus = &requestApprovalRequestedStatus - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -847,7 +848,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemOriginSITHandler() { }, nil) subtestData.mtoServiceItem.ReService.Code = models.ReServiceCodeDOASIT - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -933,7 +934,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemOriginSITHandlerWithDOFSITNoA requstedApprovalsRequestedStatus := false subtestData.mtoServiceItem.RequestedApprovalsRequestedStatus = &requstedApprovalsRequestedStatus subtestData.mtoServiceItem.ReService.Code = models.ReServiceCodeDOFSIT - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1043,7 +1044,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemOriginSITHandlerWithDOFSITWit requestedApprovalsRequestedStatus := false subtestData.mtoServiceItem.RequestedApprovalsRequestedStatus = &requestedApprovalsRequestedStatus subtestData.mtoServiceItem.ReService.Code = models.ReServiceCodeDOFSIT - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1212,7 +1213,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDestSITHandler() { suite.Run("Successful POST - Integration Test", func() { subtestData := makeSubtestData() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1288,7 +1289,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDestSITHandler() { SITEntryDate: &sitEntryDate, Reason: models.StringPointer("lorem ipsum"), } - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1323,7 +1324,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDestSITHandler() { suite.Run("Failure POST - Integration Test - Missing reason", func() { subtestData := makeSubtestData() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1381,7 +1382,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDestSITHandler() { HTTPRequest: subtestData.params.HTTPRequest, Body: payloads.MTOServiceItem(&subtestData.mtoServiceItem), } - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1447,7 +1448,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDestSITHandler() { HTTPRequest: subtestData.params.HTTPRequest, Body: payloads.MTOServiceItem(&subtestData.mtoServiceItem), } - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1485,7 +1486,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDestSITHandler() { // SETUP // Create the payload subtestData.mtoServiceItem.ReService.Code = models.ReServiceCodeDDDSIT - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} creator := mtoserviceitem.NewMTOServiceItemCreator(planner, builder, moveRouter, ghcrateengine.NewDomesticUnpackPricer(), ghcrateengine.NewDomesticPackPricer(), ghcrateengine.NewDomesticLinehaulPricer(), ghcrateengine.NewDomesticShorthaulPricer(), ghcrateengine.NewDomesticOriginPricer(), ghcrateengine.NewDomesticDestinationPricer(), ghcrateengine.NewFuelSurchargePricer()) handler := CreateMTOServiceItemHandler{ diff --git a/pkg/handlers/primeapiv2/mto_shipment_test.go b/pkg/handlers/primeapiv2/mto_shipment_test.go index aaf6ba180d6..376b8839ca4 100644 --- a/pkg/handlers/primeapiv2/mto_shipment_test.go +++ b/pkg/handlers/primeapiv2/mto_shipment_test.go @@ -31,6 +31,7 @@ import ( shipmentorchestrator "github.com/transcom/mymove/pkg/services/orchestrators/shipment" "github.com/transcom/mymove/pkg/services/ppmshipment" "github.com/transcom/mymove/pkg/services/query" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/unit" ) @@ -38,7 +39,7 @@ func (suite *HandlerSuite) TestCreateMTOShipmentHandler() { builder := query.NewQueryBuilder() mtoChecker := movetaskorder.NewMoveTaskOrderChecker() - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) fetcher := fetch.NewFetcher(builder) addressCreator := address.NewAddressCreator() mtoShipmentCreator := mtoshipment.NewMTOShipmentCreatorV2(builder, fetcher, moveRouter, addressCreator) diff --git a/pkg/handlers/primeapiv3/api.go b/pkg/handlers/primeapiv3/api.go index bb530557a74..83435222879 100644 --- a/pkg/handlers/primeapiv3/api.go +++ b/pkg/handlers/primeapiv3/api.go @@ -23,6 +23,7 @@ import ( "github.com/transcom/mymove/pkg/services/ppmshipment" "github.com/transcom/mymove/pkg/services/query" signedcertification "github.com/transcom/mymove/pkg/services/signed_certification" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" ) // NewPrimeAPI returns the Prime API @@ -30,7 +31,7 @@ func NewPrimeAPI(handlerConfig handlers.HandlerConfig) *primev3operations.Mymove builder := query.NewQueryBuilder() fetcher := fetch.NewFetcher(builder) queryBuilder := query.NewQueryBuilder() - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) primeSpec, err := loads.Analyzed(primev3api.SwaggerJSON, "") if err != nil { diff --git a/pkg/handlers/primeapiv3/mto_service_item_test.go b/pkg/handlers/primeapiv3/mto_service_item_test.go index e5f36265a03..ff510962cac 100644 --- a/pkg/handlers/primeapiv3/mto_service_item_test.go +++ b/pkg/handlers/primeapiv3/mto_service_item_test.go @@ -25,6 +25,7 @@ import ( movetaskorder "github.com/transcom/mymove/pkg/services/move_task_order" mtoserviceitem "github.com/transcom/mymove/pkg/services/mto_service_item" "github.com/transcom/mymove/pkg/services/query" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" ) func (suite *HandlerSuite) TestCreateMTOServiceItemHandler() { @@ -112,7 +113,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemHandler() { false, ).Return(400, nil) subtestData := makeSubtestData() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) creator := mtoserviceitem.NewMTOServiceItemCreator(planner, builder, moveRouter, ghcrateengine.NewDomesticUnpackPricer(), ghcrateengine.NewDomesticPackPricer(), ghcrateengine.NewDomesticLinehaulPricer(), ghcrateengine.NewDomesticShorthaulPricer(), ghcrateengine.NewDomesticOriginPricer(), ghcrateengine.NewDomesticDestinationPricer(), ghcrateengine.NewFuelSurchargePricer()) handler := CreateMTOServiceItemHandler{ suite.HandlerConfig(), @@ -164,7 +165,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemHandler() { Body: payloads.MTOServiceItem(&mtoServiceItem), } - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -304,7 +305,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemHandler() { suite.Run("POST failure - 404 - MTO is not available to Prime", func() { subtestData := makeSubtestData() mtoNotAvailable := factory.BuildMove(suite.DB(), nil, nil) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -350,7 +351,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemHandler() { LinkOnly: true, }, }, nil) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -454,7 +455,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemHandler() { suite.Run("POST failure - Shipment fetch not found", func() { subtestData := makeSubtestDataWithPPMShipmentType(true) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -486,7 +487,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemHandler() { suite.Run("POST failure - 422 - PPM not allowed to create service item", func() { subtestData := makeSubtestDataWithPPMShipmentType(true) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -565,7 +566,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDomesticCratingHandler() { suite.Run("Successful POST - Integration Test - Domestic Crating", func() { subtestData := makeSubtestData() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -604,7 +605,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDomesticCratingHandler() { suite.Run("Successful POST - Integration Test - Domestic Uncrating", func() { subtestData := makeSubtestData() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -729,7 +730,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemOriginSITHandler() { requestApprovalRequestedStatus := false subtestData.mtoServiceItem.RequestedApprovalsRequestedStatus = &requestApprovalRequestedStatus subtestData.mtoServiceItem.ReService.Code = models.ReServiceCodeDOPSIT - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -777,7 +778,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemOriginSITHandler() { requestApprovalRequestedStatus := false subtestData.mtoServiceItem.RequestedApprovalsRequestedStatus = &requestApprovalRequestedStatus - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -848,7 +849,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemOriginSITHandler() { }, nil) subtestData.mtoServiceItem.ReService.Code = models.ReServiceCodeDOASIT - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -934,7 +935,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemOriginSITHandlerWithDOFSITNoA requstedApprovalsRequestedStatus := false subtestData.mtoServiceItem.RequestedApprovalsRequestedStatus = &requstedApprovalsRequestedStatus subtestData.mtoServiceItem.ReService.Code = models.ReServiceCodeDOFSIT - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1044,7 +1045,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemOriginSITHandlerWithDOFSITWit requestedApprovalsRequestedStatus := false subtestData.mtoServiceItem.RequestedApprovalsRequestedStatus = &requestedApprovalsRequestedStatus subtestData.mtoServiceItem.ReService.Code = models.ReServiceCodeDOFSIT - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1213,7 +1214,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDestSITHandler() { suite.Run("Successful POST - Integration Test", func() { subtestData := makeSubtestData() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1289,7 +1290,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDestSITHandler() { SITEntryDate: &sitEntryDate, Reason: models.StringPointer("lorem ipsum"), } - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1324,7 +1325,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDestSITHandler() { suite.Run("Failure POST - Integration Test - Missing reason", func() { subtestData := makeSubtestData() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1382,7 +1383,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDestSITHandler() { HTTPRequest: subtestData.params.HTTPRequest, Body: payloads.MTOServiceItem(&subtestData.mtoServiceItem), } - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1448,7 +1449,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDestSITHandler() { HTTPRequest: subtestData.params.HTTPRequest, Body: payloads.MTOServiceItem(&subtestData.mtoServiceItem), } - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1486,7 +1487,7 @@ func (suite *HandlerSuite) TestCreateMTOServiceItemDestSITHandler() { // SETUP // Create the payload subtestData.mtoServiceItem.ReService.Code = models.ReServiceCodeDDDSIT - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), diff --git a/pkg/handlers/primeapiv3/mto_shipment_test.go b/pkg/handlers/primeapiv3/mto_shipment_test.go index 05db5c0f98d..41a5cd0d495 100644 --- a/pkg/handlers/primeapiv3/mto_shipment_test.go +++ b/pkg/handlers/primeapiv3/mto_shipment_test.go @@ -36,6 +36,7 @@ import ( paymentrequest "github.com/transcom/mymove/pkg/services/payment_request" "github.com/transcom/mymove/pkg/services/ppmshipment" "github.com/transcom/mymove/pkg/services/query" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/unit" ) @@ -43,7 +44,7 @@ func (suite *HandlerSuite) TestCreateMTOShipmentHandler() { builder := query.NewQueryBuilder() mtoChecker := movetaskorder.NewMoveTaskOrderChecker() - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) fetcher := fetch.NewFetcher(builder) addressCreator := address.NewAddressCreator() addressUpdater := address.NewAddressUpdater() diff --git a/pkg/handlers/supportapi/api.go b/pkg/handlers/supportapi/api.go index 6544b5125f6..55a8dc8395c 100644 --- a/pkg/handlers/supportapi/api.go +++ b/pkg/handlers/supportapi/api.go @@ -27,12 +27,13 @@ import ( signedcertification "github.com/transcom/mymove/pkg/services/signed_certification" internalmovetaskorder "github.com/transcom/mymove/pkg/services/support/move_task_order" transportationaccountingcode "github.com/transcom/mymove/pkg/services/transportation_accounting_code" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" ) // NewSupportAPIHandler returns a handler for the Prime API func NewSupportAPIHandler(handlerConfig handlers.HandlerConfig) http.Handler { queryBuilder := query.NewQueryBuilder() - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) shipmentFetcher := mtoshipment.NewMTOShipmentFetcher() addressCreator := address.NewAddressCreator() portLocationFetcher := portlocation.NewPortLocationFetcher() diff --git a/pkg/handlers/supportapi/move_task_order_test.go b/pkg/handlers/supportapi/move_task_order_test.go index b1241de3f32..8773bfbe683 100644 --- a/pkg/handlers/supportapi/move_task_order_test.go +++ b/pkg/handlers/supportapi/move_task_order_test.go @@ -26,6 +26,7 @@ import ( "github.com/transcom/mymove/pkg/services/query" supportMocks "github.com/transcom/mymove/pkg/services/support/mocks" internalmovetaskorder "github.com/transcom/mymove/pkg/services/support/move_task_order" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" ) func (suite *HandlerSuite) TestListMTOsHandler() { @@ -167,7 +168,7 @@ func (suite *HandlerSuite) TestMakeMoveAvailableHandlerIntegrationSuccess() { } handlerConfig := suite.HandlerConfig() queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -384,7 +385,7 @@ func (suite *HandlerSuite) TestCreateMoveTaskOrderRequestHandler() { IfMatch: createdMTO.ETag, } queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), diff --git a/pkg/handlers/supportapi/mto_service_item_test.go b/pkg/handlers/supportapi/mto_service_item_test.go index eeacc3cf5da..1fa4bd6c1f0 100644 --- a/pkg/handlers/supportapi/mto_service_item_test.go +++ b/pkg/handlers/supportapi/mto_service_item_test.go @@ -28,6 +28,7 @@ import ( mtoshipment "github.com/transcom/mymove/pkg/services/mto_shipment" portlocation "github.com/transcom/mymove/pkg/services/port_location" "github.com/transcom/mymove/pkg/services/query" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" ) // Create a service item on a Move with Approvals Requested status @@ -77,7 +78,7 @@ func (suite *HandlerSuite) TestUpdateMTOServiceItemStatusHandlerApproveSuccess() handlerConfig := suite.HandlerConfig() queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) shipmentFetcher := mtoshipment.NewMTOShipmentFetcher() addressCreator := address.NewAddressCreator() portLocationFetcher := portlocation.NewPortLocationFetcher() @@ -136,7 +137,7 @@ func (suite *HandlerSuite) TestUpdateMTOServiceItemStatusHandlerRejectSuccess() handlerConfig := suite.HandlerConfig() queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) shipmentFetcher := mtoshipment.NewMTOShipmentFetcher() addressCreator := address.NewAddressCreator() portLocationFetcher := portlocation.NewPortLocationFetcher() @@ -195,7 +196,7 @@ func (suite *HandlerSuite) TestUpdateMTOServiceItemStatusHandlerRejectionFailedN handlerConfig := suite.HandlerConfig() queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) shipmentFetcher := mtoshipment.NewMTOShipmentFetcher() addressCreator := address.NewAddressCreator() portLocationFetcher := portlocation.NewPortLocationFetcher() diff --git a/pkg/handlers/supportapi/mto_shipment_test.go b/pkg/handlers/supportapi/mto_shipment_test.go index 9a3a0c07a85..5e76dcf3fbd 100644 --- a/pkg/handlers/supportapi/mto_shipment_test.go +++ b/pkg/handlers/supportapi/mto_shipment_test.go @@ -23,6 +23,7 @@ import ( mtoserviceitem "github.com/transcom/mymove/pkg/services/mto_service_item" mtoshipment "github.com/transcom/mymove/pkg/services/mto_shipment" "github.com/transcom/mymove/pkg/services/query" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" ) func (suite *HandlerSuite) TestUpdateMTOShipmentStatusHandler() { @@ -91,7 +92,7 @@ func (suite *HandlerSuite) TestUpdateMTOShipmentStatusHandler() { // Used for all tests except 500 error: queryBuilder := query.NewQueryBuilder() fetcher := fetch.NewFetcher(queryBuilder) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), diff --git a/pkg/services/mocks/TransportationOfficesFetcher.go b/pkg/services/mocks/TransportationOfficesFetcher.go index eed32753594..ca9277f5f9f 100644 --- a/pkg/services/mocks/TransportationOfficesFetcher.go +++ b/pkg/services/mocks/TransportationOfficesFetcher.go @@ -16,6 +16,34 @@ type TransportationOfficesFetcher struct { mock.Mock } +// FindClosestCounselingOffice provides a mock function with given fields: appCtx, dutyLocationID +func (_m *TransportationOfficesFetcher) FindClosestCounselingOffice(appCtx appcontext.AppContext, dutyLocationID uuid.UUID) (models.TransportationOffice, error) { + ret := _m.Called(appCtx, dutyLocationID) + + if len(ret) == 0 { + panic("no return value specified for FindClosestCounselingOffice") + } + + var r0 models.TransportationOffice + var r1 error + if rf, ok := ret.Get(0).(func(appcontext.AppContext, uuid.UUID) (models.TransportationOffice, error)); ok { + return rf(appCtx, dutyLocationID) + } + if rf, ok := ret.Get(0).(func(appcontext.AppContext, uuid.UUID) models.TransportationOffice); ok { + r0 = rf(appCtx, dutyLocationID) + } else { + r0 = ret.Get(0).(models.TransportationOffice) + } + + if rf, ok := ret.Get(1).(func(appcontext.AppContext, uuid.UUID) error); ok { + r1 = rf(appCtx, dutyLocationID) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + // GetAllGBLOCs provides a mock function with given fields: appCtx func (_m *TransportationOfficesFetcher) GetAllGBLOCs(appCtx appcontext.AppContext) (*models.GBLOCs, error) { ret := _m.Called(appCtx) diff --git a/pkg/services/move/move_router.go b/pkg/services/move/move_router.go index 930a3a46006..db11468d5c5 100644 --- a/pkg/services/move/move_router.go +++ b/pkg/services/move/move_router.go @@ -17,11 +17,14 @@ import ( ) type moveRouter struct { + transportationOfficesFetcher services.TransportationOfficesFetcher } // NewMoveRouter creates a new moveRouter service -func NewMoveRouter() services.MoveRouter { - return &moveRouter{} +func NewMoveRouter(transportationOfficeFetcher services.TransportationOfficesFetcher) services.MoveRouter { + return &moveRouter{ + transportationOfficesFetcher: transportationOfficeFetcher, + } } // Submit is called when the customer submits amended orders or submits their move. It determines whether @@ -173,6 +176,7 @@ func (router moveRouter) needsServiceCounseling(appCtx appcontext.AppContext, mo // sendToServiceCounselor makes the move available for a Service Counselor to review func (router moveRouter) sendToServiceCounselor(appCtx appcontext.AppContext, move *models.Move) error { var orders models.Order + var originDutyLocation models.DutyLocation err := appCtx.DB().Q(). Where("orders.id = ?", move.OrdersID). First(&orders) @@ -210,7 +214,16 @@ func (router moveRouter) sendToServiceCounselor(appCtx appcontext.AppContext, mo move.Status = models.MoveStatusNeedsServiceCounseling now := time.Now() move.SubmittedAt = &now + if orders.OriginDutyLocationID == nil || *orders.OriginDutyLocationID == uuid.Nil { + return apperror.NewInvalidInputError(orders.ID, err, nil, "orders missing OriginDutyLocation") + } + originDutyLocation, err = models.FetchDutyLocation(appCtx.DB(), *orders.OriginDutyLocationID) + if err != nil { + appCtx.Logger().Error("failure finding the origin duty location", zap.Error(err)) + return apperror.NewInvalidInputError(*orders.OriginDutyLocationID, err, nil, "unable to find origin duty location") + } + orders.OriginDutyLocation = &originDutyLocation for i := range move.MTOShipments { // if it's a PPMShipment update both the mto and ppm shipment level statuses if move.MTOShipments[i].ShipmentType == models.MTOShipmentTypePPM { @@ -218,6 +231,15 @@ func (router moveRouter) sendToServiceCounselor(appCtx appcontext.AppContext, mo move.MTOShipments[i].PPMShipment.Status = models.PPMShipmentStatusSubmitted // actual expense reimbursement is always true for civilian moves move.MTOShipments[i].PPMShipment.IsActualExpenseReimbursement = models.BoolPointer(isCivilian) + if move.IsPPMOnly() && !orders.OriginDutyLocation.ProvidesServicesCounseling { + closestCounselingOffice, err := router.transportationOfficesFetcher.FindClosestCounselingOffice(appCtx, *move.Orders.OriginDutyLocationID) + if err != nil { + msg := "Failure setting PPM counseling office to closest service counseling office" + appCtx.Logger().Error(msg, zap.Error(err)) + return apperror.NewQueryError("Closest Counseling Office", err, "Failed to find counseling office that provides counseling") + } + move.CounselingOffice = &closestCounselingOffice + } if verrs, err := appCtx.DB().ValidateAndUpdate(&move.MTOShipments[i]); verrs.HasAny() || err != nil { msg := "failure saving shipment when routing move submission" diff --git a/pkg/services/move/move_router_test.go b/pkg/services/move/move_router_test.go index a7d5489f931..eaba0cd3cdb 100644 --- a/pkg/services/move/move_router_test.go +++ b/pkg/services/move/move_router_test.go @@ -9,13 +9,14 @@ import ( "github.com/transcom/mymove/pkg/apperror" "github.com/transcom/mymove/pkg/factory" "github.com/transcom/mymove/pkg/models" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" storageTest "github.com/transcom/mymove/pkg/storage/test" "github.com/transcom/mymove/pkg/testdatagen" "github.com/transcom/mymove/pkg/uploader" ) func (suite *MoveServiceSuite) TestMoveApproval() { - moveRouter := NewMoveRouter() + moveRouter := NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) suite.Run("from valid statuses", func() { move := factory.BuildMove(nil, nil, nil) @@ -61,7 +62,7 @@ func (suite *MoveServiceSuite) TestMoveApproval() { } func (suite *MoveServiceSuite) TestMoveSubmission() { - moveRouter := NewMoveRouter() + moveRouter := NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) suite.Run("returns error when needsServicesCounseling cannot find move", func() { // Under test: MoveRouter.Submit @@ -992,7 +993,7 @@ func (suite *MoveServiceSuite) TestMoveSubmission() { } func (suite *MoveServiceSuite) TestMoveCancellation() { - moveRouter := NewMoveRouter() + moveRouter := NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) suite.Run("Cancel move with no shipments", func() { move := factory.BuildMove(suite.DB(), nil, nil) @@ -1056,7 +1057,7 @@ func (suite *MoveServiceSuite) TestMoveCancellation() { } func (suite *MoveServiceSuite) TestSendToOfficeUser() { - moveRouter := NewMoveRouter() + moveRouter := NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) suite.Run("from valid statuses", func() { move := factory.BuildMove(suite.DB(), nil, nil) @@ -1114,7 +1115,7 @@ func (suite *MoveServiceSuite) TestSendToOfficeUser() { } func (suite *MoveServiceSuite) TestApproveOrRequestApproval() { - moveRouter := NewMoveRouter() + moveRouter := NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) suite.Run("approves the move if TOO no longer has actions to perform", func() { move := factory.BuildApprovalsRequestedMove(suite.DB(), nil, nil) @@ -1273,7 +1274,7 @@ func (suite *MoveServiceSuite) TestApproveOrRequestApproval() { } func (suite *MoveServiceSuite) TestCompleteServiceCounseling() { - moveRouter := NewMoveRouter() + moveRouter := NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) suite.Run("status changed to service counseling completed", func() { move := factory.BuildStubbedMoveWithStatus(models.MoveStatusNeedsServiceCounseling) diff --git a/pkg/services/move_history/move_history_fetcher_test.go b/pkg/services/move_history/move_history_fetcher_test.go index 1aabbab0a2b..72e40358ca6 100644 --- a/pkg/services/move_history/move_history_fetcher_test.go +++ b/pkg/services/move_history/move_history_fetcher_test.go @@ -25,6 +25,7 @@ import ( portlocation "github.com/transcom/mymove/pkg/services/port_location" "github.com/transcom/mymove/pkg/services/query" "github.com/transcom/mymove/pkg/services/reweigh" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/testdatagen" "github.com/transcom/mymove/pkg/unit" ) @@ -368,7 +369,7 @@ func (suite *MoveHistoryServiceSuite) TestMoveHistoryFetcherScenarios() { suite.Run("has audit history records for service item", func() { builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) shipmentFetcher := mtoshipment.NewMTOShipmentFetcher() addressCreator := address.NewAddressCreator() portLocationFetcher := portlocation.NewPortLocationFetcher() @@ -548,7 +549,7 @@ func (suite *MoveHistoryServiceSuite) TestMoveHistoryFetcherScenarios() { }, }, nil) builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -623,7 +624,7 @@ func (suite *MoveHistoryServiceSuite) TestMoveHistoryFetcherScenarios() { }, }, nil) builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), diff --git a/pkg/services/move_task_order/move_task_order_updater_test.go b/pkg/services/move_task_order/move_task_order_updater_test.go index 778619788a9..3ee1d2719ea 100644 --- a/pkg/services/move_task_order/move_task_order_updater_test.go +++ b/pkg/services/move_task_order/move_task_order_updater_test.go @@ -22,11 +22,12 @@ import ( mtoserviceitem "github.com/transcom/mymove/pkg/services/mto_service_item" "github.com/transcom/mymove/pkg/services/query" signedcertification "github.com/transcom/mymove/pkg/services/signed_certification" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/testdatagen" ) func (suite *MoveTaskOrderServiceSuite) TestMoveTaskOrderUpdater_UpdateStatusServiceCounselingCompleted() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) queryBuilder := query.NewQueryBuilder() planner := &routemocks.Planner{} ppmEstimator := &mocks.PPMEstimator{} @@ -388,7 +389,7 @@ func (suite *MoveTaskOrderServiceSuite) TestMoveTaskOrderUpdater_UpdateStatusSer func (suite *MoveTaskOrderServiceSuite) TestMoveTaskOrderUpdater_UpdatePostCounselingInfo() { queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} ppmEstimator := &mocks.PPMEstimator{} planner.On("ZipTransitDistance", @@ -557,7 +558,7 @@ func (suite *MoveTaskOrderServiceSuite) TestMoveTaskOrderUpdater_ShowHide() { // Set up the necessary updater objects: queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} ppmEstimator := &mocks.PPMEstimator{} planner.On("ZipTransitDistance", @@ -787,7 +788,7 @@ func (suite *MoveTaskOrderServiceSuite) TestMoveTaskOrderUpdater_MakeAvailableTo suite.Run("Service item creator is not called if move fails to get approved", func() { mockserviceItemCreator := &mocks.MTOServiceItemCreator{} queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) mtoUpdater := mt.NewMoveTaskOrderUpdater(queryBuilder, mockserviceItemCreator, moveRouter, setUpSignedCertificationCreatorMock(nil, nil), setUpSignedCertificationUpdaterMock(nil, nil), ppmEstimator) // Create move in DRAFT status, which should fail to get approved move := factory.BuildMove(suite.DB(), nil, nil) @@ -807,7 +808,7 @@ func (suite *MoveTaskOrderServiceSuite) TestMoveTaskOrderUpdater_MakeAvailableTo suite.Run("When ETag is stale", func() { mockserviceItemCreator := &mocks.MTOServiceItemCreator{} queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) mtoUpdater := mt.NewMoveTaskOrderUpdater(queryBuilder, mockserviceItemCreator, moveRouter, setUpSignedCertificationCreatorMock(nil, nil), setUpSignedCertificationUpdaterMock(nil, nil), ppmEstimator) move := factory.BuildSubmittedMove(suite.DB(), nil, nil) @@ -822,7 +823,7 @@ func (suite *MoveTaskOrderServiceSuite) TestMoveTaskOrderUpdater_MakeAvailableTo suite.Run("Makes move available to Prime and creates Move management and Service counseling service items when both are specified", func() { queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -861,7 +862,7 @@ func (suite *MoveTaskOrderServiceSuite) TestMoveTaskOrderUpdater_MakeAvailableTo }) suite.Run("Makes move available to Prime and Removes assigned TOO office user", func() { queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -888,7 +889,7 @@ func (suite *MoveTaskOrderServiceSuite) TestMoveTaskOrderUpdater_MakeAvailableTo suite.Run("Makes move available to Prime and only creates Move management when it's the only one specified", func() { queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -924,7 +925,7 @@ func (suite *MoveTaskOrderServiceSuite) TestMoveTaskOrderUpdater_MakeAvailableTo suite.Run("Makes move available to Prime and only creates CS service item when it's the only one specified", func() { queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} serviceItemCreator := mtoserviceitem.NewMTOServiceItemCreator(planner, queryBuilder, moveRouter, ghcrateengine.NewDomesticUnpackPricer(), ghcrateengine.NewDomesticPackPricer(), ghcrateengine.NewDomesticLinehaulPricer(), ghcrateengine.NewDomesticShorthaulPricer(), ghcrateengine.NewDomesticOriginPricer(), ghcrateengine.NewDomesticDestinationPricer(), ghcrateengine.NewFuelSurchargePricer()) mtoUpdater := mt.NewMoveTaskOrderUpdater(queryBuilder, serviceItemCreator, moveRouter, setUpSignedCertificationCreatorMock(nil, nil), setUpSignedCertificationUpdaterMock(nil, nil), ppmEstimator) @@ -953,7 +954,7 @@ func (suite *MoveTaskOrderServiceSuite) TestMoveTaskOrderUpdater_MakeAvailableTo suite.Run("Does not create service items if neither CS nor MS are requested", func() { queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) mockserviceItemCreator := &mocks.MTOServiceItemCreator{} mtoUpdater := mt.NewMoveTaskOrderUpdater(queryBuilder, mockserviceItemCreator, moveRouter, setUpSignedCertificationCreatorMock(nil, nil), setUpSignedCertificationUpdaterMock(nil, nil), ppmEstimator) @@ -977,7 +978,7 @@ func (suite *MoveTaskOrderServiceSuite) TestMoveTaskOrderUpdater_MakeAvailableTo suite.Run("Does not make move available to prime if Order is missing required fields", func() { mockserviceItemCreator := &mocks.MTOServiceItemCreator{} queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) mtoUpdater := mt.NewMoveTaskOrderUpdater(queryBuilder, mockserviceItemCreator, moveRouter, setUpSignedCertificationCreatorMock(nil, nil), setUpSignedCertificationUpdaterMock(nil, nil), ppmEstimator) orderWithoutDefaults := factory.BuildOrderWithoutDefaults(suite.DB(), nil, nil) @@ -1032,7 +1033,7 @@ func (suite *MoveTaskOrderServiceSuite) TestMoveTaskOrderUpdater_BillableWeights suite.Run("Service item creator is not called if move fails to get approved", func() { mockserviceItemCreator := &mocks.MTOServiceItemCreator{} queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) mtoUpdater := mt.NewMoveTaskOrderUpdater(queryBuilder, mockserviceItemCreator, moveRouter, setUpSignedCertificationCreatorMock(nil, nil), setUpSignedCertificationUpdaterMock(nil, nil), ppmEstimator) move := factory.BuildMove(suite.DB(), nil, nil) eTag := etag.GenerateEtag(move.UpdatedAt) @@ -1046,7 +1047,7 @@ func (suite *MoveTaskOrderServiceSuite) TestMoveTaskOrderUpdater_BillableWeights suite.Run("When ETag is stale", func() { mockserviceItemCreator := &mocks.MTOServiceItemCreator{} queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) mtoUpdater := mt.NewMoveTaskOrderUpdater(queryBuilder, mockserviceItemCreator, moveRouter, setUpSignedCertificationCreatorMock(nil, nil), setUpSignedCertificationUpdaterMock(nil, nil), ppmEstimator) move := factory.BuildSubmittedMove(suite.DB(), nil, nil) @@ -1063,7 +1064,7 @@ func (suite *MoveTaskOrderServiceSuite) TestMoveTaskOrderUpdater_TIORemarks() { mockserviceItemCreator := &mocks.MTOServiceItemCreator{} ppmEstimator := &mocks.PPMEstimator{} queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) setUpSignedCertificationCreatorMock := func(returnValue ...interface{}) services.SignedCertificationCreator { mockCreator := &mocks.SignedCertificationCreator{} @@ -1138,7 +1139,7 @@ func (suite *MoveTaskOrderServiceSuite) TestMoveTaskOrderUpdater_UpdatePPMType() // Set up the necessary updater objects: queryBuilder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} ppmEstimator := &mocks.PPMEstimator{} planner.On("ZipTransitDistance", diff --git a/pkg/services/mto_service_item/mto_service_item_creator_test.go b/pkg/services/mto_service_item/mto_service_item_creator_test.go index 2b619b4fd97..92420da386d 100644 --- a/pkg/services/mto_service_item/mto_service_item_creator_test.go +++ b/pkg/services/mto_service_item/mto_service_item_creator_test.go @@ -27,6 +27,7 @@ import ( "github.com/transcom/mymove/pkg/services/ghcrateengine" moverouter "github.com/transcom/mymove/pkg/services/move" "github.com/transcom/mymove/pkg/services/query" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/testdatagen" "github.com/transcom/mymove/pkg/unit" ) @@ -187,7 +188,7 @@ func (suite *MTOServiceItemServiceSuite) TestCreateMTOServiceItemWithInvalidMove // Error because we cannot create service items before move is approved. builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &mocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -195,6 +196,8 @@ func (suite *MTOServiceItemServiceSuite) TestCreateMTOServiceItemWithInvalidMove mock.Anything, false, false, + false, + false, ).Return(400, nil) creator := NewMTOServiceItemCreator(planner, builder, moveRouter, ghcrateengine.NewDomesticUnpackPricer(), ghcrateengine.NewDomesticPackPricer(), ghcrateengine.NewDomesticLinehaulPricer(), ghcrateengine.NewDomesticShorthaulPricer(), ghcrateengine.NewDomesticOriginPricer(), ghcrateengine.NewDomesticDestinationPricer(), ghcrateengine.NewFuelSurchargePricer()) serviceItemForUnapprovedMove := suite.buildValidServiceItemWithInvalidMove() @@ -217,7 +220,7 @@ func (suite *MTOServiceItemServiceSuite) TestCreateMTOServiceItemWithInvalidMove func (suite *MTOServiceItemServiceSuite) TestCreateMTOServiceItem() { builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &mocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1029,7 +1032,7 @@ func (suite *MTOServiceItemServiceSuite) TestCreateOriginSITServiceItem() { } builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &mocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1080,7 +1083,7 @@ func (suite *MTOServiceItemServiceSuite) TestCreateOriginSITServiceItem() { } builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &mocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1156,7 +1159,7 @@ func (suite *MTOServiceItemServiceSuite) TestCreateOriginSITServiceItem() { } builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &mocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1284,7 +1287,7 @@ func (suite *MTOServiceItemServiceSuite) TestCreateOriginSITServiceItem() { } builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &mocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1320,7 +1323,7 @@ func (suite *MTOServiceItemServiceSuite) TestCreateOriginSITServiceItem() { } builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &mocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1355,7 +1358,7 @@ func (suite *MTOServiceItemServiceSuite) TestCreateOriginSITServiceItem() { } builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &mocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1432,7 +1435,7 @@ func (suite *MTOServiceItemServiceSuite) TestCreateOriginSITServiceItemFailToCre Reason: &reason, } builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &mocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1468,7 +1471,7 @@ func (suite *MTOServiceItemServiceSuite) TestCreateDestSITServiceItem() { }, }, nil) builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &mocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -1769,7 +1772,7 @@ func (suite *MTOServiceItemServiceSuite) TestCreateDestSITServiceItem() { } builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &mocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -2108,7 +2111,7 @@ func (suite *MTOServiceItemServiceSuite) TestPriceEstimator() { } builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &mocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -2408,7 +2411,7 @@ func (suite *MTOServiceItemServiceSuite) TestPriceEstimator() { } builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &mocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), diff --git a/pkg/services/mto_service_item/mto_service_item_updater_test.go b/pkg/services/mto_service_item/mto_service_item_updater_test.go index f2367216b1d..12da44c0121 100644 --- a/pkg/services/mto_service_item/mto_service_item_updater_test.go +++ b/pkg/services/mto_service_item/mto_service_item_updater_test.go @@ -31,6 +31,7 @@ import ( portlocation "github.com/transcom/mymove/pkg/services/port_location" "github.com/transcom/mymove/pkg/services/query" sitstatus "github.com/transcom/mymove/pkg/services/sit_status" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" storageTest "github.com/transcom/mymove/pkg/storage/test" "github.com/transcom/mymove/pkg/testdatagen" "github.com/transcom/mymove/pkg/unit" @@ -40,7 +41,7 @@ import ( func (suite *MTOServiceItemServiceSuite) TestMTOServiceItemUpdater() { builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) shipmentFetcher := mtoshipment.NewMTOShipmentFetcher() addressCreator := address.NewAddressCreator() sitStatusService := sitstatus.NewShipmentSITStatus() @@ -2171,7 +2172,7 @@ func (suite *MTOServiceItemServiceSuite) createServiceItemForMoveWithUnacknowled func (suite *MTOServiceItemServiceSuite) TestUpdateMTOServiceItemStatus() { builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) shipmentFetcher := mtoshipment.NewMTOShipmentFetcher() addressCreator := address.NewAddressCreator() portLocationFetcher := portlocation.NewPortLocationFetcher() @@ -2861,7 +2862,7 @@ func (suite *MTOServiceItemServiceSuite) setupServiceItemData() { func (suite *MTOServiceItemServiceSuite) TestUpdateMTOServiceItemPricingEstimate() { builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) shipmentFetcher := mtoshipment.NewMTOShipmentFetcher() addressCreator := address.NewAddressCreator() portLocationFetcher := portlocation.NewPortLocationFetcher() diff --git a/pkg/services/mto_shipment/mto_shipment_creator_test.go b/pkg/services/mto_shipment/mto_shipment_creator_test.go index aa46f145aee..be064d36fce 100644 --- a/pkg/services/mto_shipment/mto_shipment_creator_test.go +++ b/pkg/services/mto_shipment/mto_shipment_creator_test.go @@ -14,6 +14,7 @@ import ( "github.com/transcom/mymove/pkg/services/fetch" moverouter "github.com/transcom/mymove/pkg/services/move" "github.com/transcom/mymove/pkg/services/query" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/testdatagen" "github.com/transcom/mymove/pkg/unit" ) @@ -29,7 +30,7 @@ func (suite *MTOShipmentServiceSuite) createSubtestData(customs []factory.Custom subtestData.move = factory.BuildMove(suite.DB(), customs, nil) builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) fetcher := fetch.NewFetcher(builder) addressCreator := address.NewAddressCreator() @@ -45,7 +46,7 @@ func (suite *MTOShipmentServiceSuite) createSubtestDataV2(customs []factory.Cust subtestData.move = factory.BuildMove(suite.DB(), customs, nil) builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) fetcher := fetch.NewFetcher(builder) addressCreator := address.NewAddressCreator() diff --git a/pkg/services/mto_shipment/mto_shipment_updater_test.go b/pkg/services/mto_shipment/mto_shipment_updater_test.go index 63d4af96dc8..abfe0aea245 100644 --- a/pkg/services/mto_shipment/mto_shipment_updater_test.go +++ b/pkg/services/mto_shipment/mto_shipment_updater_test.go @@ -25,6 +25,7 @@ import ( moveservices "github.com/transcom/mymove/pkg/services/move" mtoserviceitem "github.com/transcom/mymove/pkg/services/mto_service_item" "github.com/transcom/mymove/pkg/services/query" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/testdatagen" "github.com/transcom/mymove/pkg/unit" ) @@ -53,7 +54,7 @@ func (suite *MTOShipmentServiceSuite) TestMTOShipmentUpdater() { false, false, ).Return(1000, nil) - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) moveWeights := moveservices.NewMoveWeights(NewShipmentReweighRequester()) mockShipmentRecalculator := mockservices.PaymentRequestShipmentRecalculator{} mockShipmentRecalculator.On("ShipmentRecalculatePaymentRequest", @@ -2188,7 +2189,7 @@ func (suite *MTOShipmentServiceSuite) TestUpdateMTOShipmentStatus() { } builder := query.NewQueryBuilder() - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &mocks.Planner{} var TransitDistancePickupArg string var TransitDistanceDestinationArg string @@ -2804,7 +2805,7 @@ func (suite *MTOShipmentServiceSuite) TestMTOShipmentsMTOAvailableToPrime() { builder := query.NewQueryBuilder() fetcher := fetch.NewFetcher(builder) planner := &mocks.Planner{} - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) moveWeights := moveservices.NewMoveWeights(NewShipmentReweighRequester()) mockShipmentRecalculator := mockservices.PaymentRequestShipmentRecalculator{} mockShipmentRecalculator.On("ShipmentRecalculatePaymentRequest", @@ -2873,7 +2874,7 @@ func (suite *MTOShipmentServiceSuite) TestUpdateShipmentEstimatedWeightMoveExces builder := query.NewQueryBuilder() fetcher := fetch.NewFetcher(builder) planner := &mocks.Planner{} - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) moveWeights := moveservices.NewMoveWeights(NewShipmentReweighRequester()) mockShipmentRecalculator := mockservices.PaymentRequestShipmentRecalculator{} mockShipmentRecalculator.On("ShipmentRecalculatePaymentRequest", @@ -3056,7 +3057,7 @@ func (suite *MTOShipmentServiceSuite) TestUpdateShipmentActualWeightAutoReweigh( builder := query.NewQueryBuilder() fetcher := fetch.NewFetcher(builder) planner := &mocks.Planner{} - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) moveWeights := moveservices.NewMoveWeights(NewShipmentReweighRequester()) mockShipmentRecalculator := mockservices.PaymentRequestShipmentRecalculator{} mockShipmentRecalculator.On("ShipmentRecalculatePaymentRequest", @@ -3195,7 +3196,7 @@ func (suite *MTOShipmentServiceSuite) TestUpdateShipmentNullableFields() { builder := query.NewQueryBuilder() fetcher := fetch.NewFetcher(builder) planner := &mocks.Planner{} - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) mockShipmentRecalculator := mockservices.PaymentRequestShipmentRecalculator{} mockShipmentRecalculator.On("ShipmentRecalculatePaymentRequest", mock.AnythingOfType("*appcontext.appContext"), @@ -3346,7 +3347,7 @@ func (suite *MTOShipmentServiceSuite) TestUpdateStatusServiceItems() { } builder := query.NewQueryBuilder() - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &mocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -3495,7 +3496,7 @@ func (suite *MTOShipmentServiceSuite) TestUpdateDomesticServiceItems() { } builder := query.NewQueryBuilder() - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &mocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), diff --git a/pkg/services/mto_shipment/shipment_approver_test.go b/pkg/services/mto_shipment/shipment_approver_test.go index a0ef5f321d1..c1fde66e229 100644 --- a/pkg/services/mto_shipment/shipment_approver_test.go +++ b/pkg/services/mto_shipment/shipment_approver_test.go @@ -22,6 +22,7 @@ import ( moverouter "github.com/transcom/mymove/pkg/services/move" mtoserviceitem "github.com/transcom/mymove/pkg/services/mto_service_item" "github.com/transcom/mymove/pkg/services/query" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/testdatagen" "github.com/transcom/mymove/pkg/unit" ) @@ -85,7 +86,7 @@ func (suite *MTOShipmentServiceSuite) createApproveShipmentSubtestData() (subtes router := NewShipmentRouter() builder := query.NewQueryBuilder() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &mocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), diff --git a/pkg/services/mto_shipment/shipment_cancellation_requester_test.go b/pkg/services/mto_shipment/shipment_cancellation_requester_test.go index 0d2b4c33310..8c9a9ea1994 100644 --- a/pkg/services/mto_shipment/shipment_cancellation_requester_test.go +++ b/pkg/services/mto_shipment/shipment_cancellation_requester_test.go @@ -11,11 +11,12 @@ import ( "github.com/transcom/mymove/pkg/factory" "github.com/transcom/mymove/pkg/models" moveservices "github.com/transcom/mymove/pkg/services/move" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" ) func (suite *MTOShipmentServiceSuite) TestRequestShipmentCancellation() { router := NewShipmentRouter() - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) requester := NewShipmentCancellationRequester(router, moveRouter) suite.Run("If the shipment diversion is requested successfully, it should update the shipment status in the DB", func() { @@ -108,7 +109,7 @@ func (suite *MTOShipmentServiceSuite) TestRequestShipmentCancellation() { suite.Run("It calls RequestCancellation on the ShipmentRouter", func() { shipmentRouter := NewShipmentRouter() - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) requester := NewShipmentCancellationRequester(shipmentRouter, moveRouter) // valid pickupdate is anytime after the request to cancel date actualPickupDate := time.Now().AddDate(0, 0, 1) @@ -143,7 +144,7 @@ func (suite *MTOShipmentServiceSuite) TestRequestShipmentCancellation() { suite.Run("It calls RequestCancellation on shipment with invalid actualPickupDate", func() { shipmentRouter := NewShipmentRouter() - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) requester := NewShipmentCancellationRequester(shipmentRouter, moveRouter) actualPickupDate := time.Now() shipment := factory.BuildMTOShipmentMinimal(suite.DB(), []factory.Customization{ diff --git a/pkg/services/mto_shipment/shipment_deleter_test.go b/pkg/services/mto_shipment/shipment_deleter_test.go index 35c86bc68ac..d7bdab4ee8f 100644 --- a/pkg/services/mto_shipment/shipment_deleter_test.go +++ b/pkg/services/mto_shipment/shipment_deleter_test.go @@ -19,11 +19,12 @@ import ( movetaskorder "github.com/transcom/mymove/pkg/services/move_task_order" mtoserviceitem "github.com/transcom/mymove/pkg/services/mto_service_item" "github.com/transcom/mymove/pkg/services/query" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" ) func (suite *MTOShipmentServiceSuite) TestShipmentDeleter() { builder := query.NewQueryBuilder() - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), @@ -79,7 +80,7 @@ func (suite *MTOShipmentServiceSuite) TestShipmentDeleter() { }) suite.Run("Returns an error when the Move is neither in Draft nor in NeedsServiceCounseling status", func() { - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) shipmentDeleter := NewShipmentDeleter(moveTaskOrderUpdater, moveRouter) shipment := factory.BuildMTOShipmentMinimal(suite.DB(), nil, nil) move := shipment.MoveTaskOrder @@ -98,7 +99,7 @@ func (suite *MTOShipmentServiceSuite) TestShipmentDeleter() { }) suite.Run("Soft deletes the shipment when it is found", func() { - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) shipmentDeleter := NewShipmentDeleter(moveTaskOrderUpdater, moveRouter) shipment := factory.BuildMTOShipmentMinimal(suite.DB(), nil, nil) @@ -140,7 +141,7 @@ func (suite *MTOShipmentServiceSuite) TestShipmentDeleter() { }) suite.Run("Soft deletes the shipment when it is found and check if shipment_seq_num changed", func() { - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) move := factory.BuildMove(suite.DB(), nil, nil) shipmentDeleter := NewShipmentDeleter(moveTaskOrderUpdater, moveRouter) shipment := factory.BuildMTOShipmentMinimal(suite.DB(), []factory.Customization{ @@ -203,7 +204,7 @@ func (suite *MTOShipmentServiceSuite) TestShipmentDeleter() { }) suite.Run("Returns not found error when the shipment is already deleted", func() { - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) shipmentDeleter := NewShipmentDeleter(moveTaskOrderUpdater, moveRouter) shipment := factory.BuildMTOShipmentMinimal(suite.DB(), nil, nil) session := suite.AppContextWithSessionForTest(&auth.Session{ @@ -220,7 +221,7 @@ func (suite *MTOShipmentServiceSuite) TestShipmentDeleter() { }) suite.Run("Soft deletes the associated PPM shipment", func() { - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) shipmentDeleter := NewShipmentDeleter(moveTaskOrderUpdater, moveRouter) ppmShipment := factory.BuildPPMShipment(suite.DB(), []factory.Customization{ { @@ -255,7 +256,7 @@ func (suite *MTOShipmentServiceSuite) TestShipmentDeleter() { func (suite *MTOShipmentServiceSuite) TestPrimeShipmentDeleter() { builder := query.NewQueryBuilder() - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) planner := &routemocks.Planner{} planner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), diff --git a/pkg/services/mto_shipment/shipment_diversion_approver_test.go b/pkg/services/mto_shipment/shipment_diversion_approver_test.go index 73195c53c4e..e43319b2fba 100644 --- a/pkg/services/mto_shipment/shipment_diversion_approver_test.go +++ b/pkg/services/mto_shipment/shipment_diversion_approver_test.go @@ -11,11 +11,12 @@ import ( "github.com/transcom/mymove/pkg/factory" "github.com/transcom/mymove/pkg/models" moverouter "github.com/transcom/mymove/pkg/services/move" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" ) func (suite *MTOShipmentServiceSuite) TestApproveShipmentDiversion() { router := NewShipmentRouter() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) approver := NewShipmentDiversionApprover(router, moveRouter) suite.Run("If the shipment diversion is approved successfully, it should update the shipment status in the DB", func() { diff --git a/pkg/services/orchestrators/shipment/shipment_updater_test.go b/pkg/services/orchestrators/shipment/shipment_updater_test.go index 34874136525..1a596c14cb1 100644 --- a/pkg/services/orchestrators/shipment/shipment_updater_test.go +++ b/pkg/services/orchestrators/shipment/shipment_updater_test.go @@ -18,6 +18,7 @@ import ( moveservices "github.com/transcom/mymove/pkg/services/move" mtoserviceitem "github.com/transcom/mymove/pkg/services/mto_service_item" "github.com/transcom/mymove/pkg/services/query" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/unit" ) @@ -42,7 +43,7 @@ func (suite *ShipmentSuite) TestUpdateShipment() { } planner := &routemocks.Planner{} - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) builder := query.NewQueryBuilder() mtoServiceItemCreator := mtoserviceitem.NewMTOServiceItemCreator(planner, builder, moveRouter, ghcrateengine.NewDomesticUnpackPricer(), ghcrateengine.NewDomesticPackPricer(), ghcrateengine.NewDomesticLinehaulPricer(), ghcrateengine.NewDomesticShorthaulPricer(), ghcrateengine.NewDomesticOriginPricer(), ghcrateengine.NewDomesticDestinationPricer(), ghcrateengine.NewFuelSurchargePricer()) diff --git a/pkg/services/order/excess_weight_risk_manager_test.go b/pkg/services/order/excess_weight_risk_manager_test.go index c7c81e58f86..e060b54ebb5 100644 --- a/pkg/services/order/excess_weight_risk_manager_test.go +++ b/pkg/services/order/excess_weight_risk_manager_test.go @@ -10,13 +10,14 @@ import ( "github.com/transcom/mymove/pkg/factory" "github.com/transcom/mymove/pkg/models" moverouter "github.com/transcom/mymove/pkg/services/move" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" storageTest "github.com/transcom/mymove/pkg/storage/test" "github.com/transcom/mymove/pkg/uploader" ) func (suite *OrderServiceSuite) TestUpdateBillableWeightAsTOO() { suite.Run("Returns an error when order is not found", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) nonexistentUUID := uuid.Must(uuid.NewV4()) newAuthorizedWeight := int(10000) @@ -29,7 +30,7 @@ func (suite *OrderServiceSuite) TestUpdateBillableWeightAsTOO() { }) suite.Run("Returns an error when the etag does not match", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) order := factory.BuildMove(suite.DB(), nil, nil).Orders newAuthorizedWeight := int(10000) @@ -43,7 +44,7 @@ func (suite *OrderServiceSuite) TestUpdateBillableWeightAsTOO() { }) suite.Run("Updates the BillableWeight and approves the move when all fields are valid", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) now := time.Now() move := factory.BuildApprovalsRequestedMove(suite.DB(), []factory.Customization{ @@ -76,7 +77,7 @@ func (suite *OrderServiceSuite) TestUpdateBillableWeightAsTOO() { }) suite.Run("Updates the BillableWeight but does not approve the move if unacknowledged amended orders exist", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) storer := storageTest.NewFakeS3Storage(true) userUploader, err := uploader.NewUserUploader(storer, 100*uploader.MB) @@ -137,7 +138,7 @@ func (suite *OrderServiceSuite) TestUpdateBillableWeightAsTOO() { }) suite.Run("Updates the BillableWeight but does not approve the move if unreviewed service items exist", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) _, _, move := suite.createServiceItem() @@ -164,7 +165,7 @@ func (suite *OrderServiceSuite) TestUpdateBillableWeightAsTOO() { }) suite.Run("Updates the BillableWeight but does not acknowledge the risk if there is no excess weight risk", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) move := factory.BuildApprovalsRequestedMove(suite.DB(), nil, nil) order := move.Orders @@ -189,7 +190,7 @@ func (suite *OrderServiceSuite) TestUpdateBillableWeightAsTOO() { }) suite.Run("Updates the BillableWeight but does not acknowledge the risk if the risk was already acknowledged", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) now := time.Now() move := factory.BuildApprovalsRequestedMove(suite.DB(), []factory.Customization{ @@ -223,7 +224,7 @@ func (suite *OrderServiceSuite) TestUpdateBillableWeightAsTOO() { func (suite *OrderServiceSuite) TestUpdateBillableWeightAsTIO() { suite.Run("Returns an error when order is not found", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) nonexistentUUID := uuid.Must(uuid.NewV4()) newAuthorizedWeight := int(10000) @@ -237,7 +238,7 @@ func (suite *OrderServiceSuite) TestUpdateBillableWeightAsTIO() { }) suite.Run("Returns an error when the etag does not match", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) order := factory.BuildMove(suite.DB(), nil, nil).Orders newAuthorizedWeight := int(10000) @@ -252,7 +253,7 @@ func (suite *OrderServiceSuite) TestUpdateBillableWeightAsTIO() { }) suite.Run("Updates the MaxBillableWeight and TIO remarks and approves the move when all fields are valid", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) now := time.Now() move := factory.BuildApprovalsRequestedMove(suite.DB(), []factory.Customization{ @@ -287,7 +288,7 @@ func (suite *OrderServiceSuite) TestUpdateBillableWeightAsTIO() { }) suite.Run("Updates the MaxBillableWeight and TIO remarks but does not approve the move if unacknowledged amended orders exist", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) storer := storageTest.NewFakeS3Storage(true) userUploader, err := uploader.NewUserUploader(storer, 100*uploader.MB) @@ -350,7 +351,7 @@ func (suite *OrderServiceSuite) TestUpdateBillableWeightAsTIO() { }) suite.Run("Updates the MaxBillableWeight and TIO remarks but does not approve the move if unreviewed service items exist", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) _, _, move := suite.createServiceItem() @@ -379,7 +380,7 @@ func (suite *OrderServiceSuite) TestUpdateBillableWeightAsTIO() { }) suite.Run("Updates the MaxBillableWeight and TIO remarks but does not acknowledge the risk if there is no excess weight risk", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) move := factory.BuildApprovalsRequestedMove(suite.DB(), nil, nil) order := move.Orders @@ -406,7 +407,7 @@ func (suite *OrderServiceSuite) TestUpdateBillableWeightAsTIO() { }) suite.Run("Updates the MaxBillableWeight and TIO remarks but does not acknowledge the risk if the risk was already acknowledged", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) now := time.Now() move := factory.BuildApprovalsRequestedMove(suite.DB(), []factory.Customization{ @@ -442,7 +443,7 @@ func (suite *OrderServiceSuite) TestUpdateBillableWeightAsTIO() { func (suite *OrderServiceSuite) TestAcknowledgeExcessWeightRisk() { suite.Run("Returns an error when move is not found", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) nonexistentUUID := uuid.Must(uuid.NewV4()) eTag := "" @@ -454,7 +455,7 @@ func (suite *OrderServiceSuite) TestAcknowledgeExcessWeightRisk() { }) suite.Run("Returns an error when the etag does not match", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) move := factory.BuildMove(suite.DB(), nil, nil) order := move.Orders @@ -468,7 +469,7 @@ func (suite *OrderServiceSuite) TestAcknowledgeExcessWeightRisk() { }) suite.Run("Updates the ExcessWeightAcknowledgedAt field and approves the move when all fields are valid", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) now := time.Now() move := factory.BuildApprovalsRequestedMove(suite.DB(), []factory.Customization{ @@ -496,7 +497,7 @@ func (suite *OrderServiceSuite) TestAcknowledgeExcessWeightRisk() { }) suite.Run("Updates the ExcessWeightAcknowledgedAt field but does not approve the move if unacknowledged amended orders exist", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) storer := storageTest.NewFakeS3Storage(true) userUploader, err := uploader.NewUserUploader(storer, 100*uploader.MB) @@ -550,7 +551,7 @@ func (suite *OrderServiceSuite) TestAcknowledgeExcessWeightRisk() { }) suite.Run("Updates the ExcessUnaccompaniedBaggageWeightAcknowledgedAt field and approves the move when all fields are valid", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) now := time.Now() move := factory.BuildApprovalsRequestedMove(suite.DB(), []factory.Customization{ @@ -578,7 +579,7 @@ func (suite *OrderServiceSuite) TestAcknowledgeExcessWeightRisk() { }) suite.Run("Updates the ExcessWeightAcknowledgedAt field but does not approve the move if unreviewed service items exist", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) _, _, move := suite.createServiceItem() @@ -598,7 +599,7 @@ func (suite *OrderServiceSuite) TestAcknowledgeExcessWeightRisk() { }) suite.Run("Does not update the ExcessWeightAcknowledgedAt field if there is no risk of excess weight", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) move := factory.BuildApprovalsRequestedMove(suite.DB(), nil, nil) @@ -619,7 +620,7 @@ func (suite *OrderServiceSuite) TestAcknowledgeExcessWeightRisk() { }) suite.Run("Does not update the ExcessWeightAcknowledgedAt field if the risk was already acknowledged", func() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) excessWeightRiskManager := NewExcessWeightRiskManager(moveRouter) date := time.Now().Add(30 * time.Minute) diff --git a/pkg/services/order/order_updater_test.go b/pkg/services/order/order_updater_test.go index 1bf72866552..8994233f250 100644 --- a/pkg/services/order/order_updater_test.go +++ b/pkg/services/order/order_updater_test.go @@ -17,6 +17,7 @@ import ( "github.com/transcom/mymove/pkg/handlers" "github.com/transcom/mymove/pkg/models" "github.com/transcom/mymove/pkg/services/move" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" storageTest "github.com/transcom/mymove/pkg/storage/test" "github.com/transcom/mymove/pkg/swagger/nullable" "github.com/transcom/mymove/pkg/testdatagen" @@ -24,7 +25,7 @@ import ( func (suite *OrderServiceSuite) TestUpdateOrderAsTOO() { suite.Run("Returns an error when order is not found", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) nonexistentUUID := uuid.Must(uuid.NewV4()) @@ -38,7 +39,7 @@ func (suite *OrderServiceSuite) TestUpdateOrderAsTOO() { }) suite.Run("Returns an error when origin duty location is not found", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) order := factory.BuildMove(suite.DB(), nil, nil).Orders newDutyLocation := factory.BuildDutyLocation(suite.DB(), nil, nil) @@ -57,7 +58,7 @@ func (suite *OrderServiceSuite) TestUpdateOrderAsTOO() { }) suite.Run("Returns an error when new duty location is not found", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) order := factory.BuildMove(suite.DB(), nil, nil).Orders originDutyLocation := factory.BuildDutyLocation(suite.DB(), nil, nil) @@ -76,7 +77,7 @@ func (suite *OrderServiceSuite) TestUpdateOrderAsTOO() { }) suite.Run("Returns an error when the etag does not match", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) order := factory.BuildMove(suite.DB(), nil, nil).Orders @@ -90,7 +91,7 @@ func (suite *OrderServiceSuite) TestUpdateOrderAsTOO() { }) suite.Run("Updates the order when all fields are valid", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) move := factory.BuildServiceCounselingCompletedMove(suite.DB(), nil, nil) order := move.Orders @@ -154,7 +155,7 @@ func (suite *OrderServiceSuite) TestUpdateOrderAsTOO() { }) suite.Run("Rolls back transaction if Order is invalid", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) order := factory.BuildServiceCounselingCompletedMove(suite.DB(), nil, nil).Orders @@ -188,7 +189,7 @@ func (suite *OrderServiceSuite) TestUpdateOrderAsTOO() { }) suite.Run("Allow Order update to have a missing HHG SAC", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) order := factory.BuildServiceCounselingCompletedMove(suite.DB(), nil, nil).Orders @@ -232,7 +233,7 @@ func (suite *OrderServiceSuite) TestUpdateOrderAsTOO() { }) suite.Run("Allow Order update to have a missing NTS SAC", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) order := factory.BuildServiceCounselingCompletedMove(suite.DB(), nil, nil).Orders @@ -276,7 +277,7 @@ func (suite *OrderServiceSuite) TestUpdateOrderAsTOO() { }) suite.Run("Allow Order update to have a missing NTS TAC", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) order := factory.BuildServiceCounselingCompletedMove(suite.DB(), nil, nil).Orders @@ -320,7 +321,7 @@ func (suite *OrderServiceSuite) TestUpdateOrderAsTOO() { }) suite.Run("Rolls back transaction if Order is invalid", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) order := factory.BuildServiceCounselingCompletedMove(suite.DB(), nil, nil).Orders @@ -355,7 +356,7 @@ func (suite *OrderServiceSuite) TestUpdateOrderAsTOO() { }) suite.Run("Rolls back transaction if Order is missing required fields", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) orderWithoutDefaults := factory.BuildOrderWithoutDefaults(suite.DB(), nil, nil) @@ -398,7 +399,7 @@ func (suite *OrderServiceSuite) TestUpdateOrderAsTOO() { func (suite *OrderServiceSuite) TestUpdateOrderAsCounselor() { suite.Run("Returns an error when order is not found", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) nonexistentUUID := uuid.Must(uuid.NewV4()) @@ -412,7 +413,7 @@ func (suite *OrderServiceSuite) TestUpdateOrderAsCounselor() { }) suite.Run("Returns an error when the etag does not match", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) order := factory.BuildMove(suite.DB(), nil, nil).Orders @@ -426,7 +427,7 @@ func (suite *OrderServiceSuite) TestUpdateOrderAsCounselor() { }) suite.Run("Updates the order when it is found", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) order := factory.BuildNeedsServiceCounselingMove(suite.DB(), nil, nil).Orders @@ -477,7 +478,7 @@ func (suite *OrderServiceSuite) TestUpdateOrderAsCounselor() { }) suite.Run("Updates the PPM actual expense reimbursement when pay grade is civilian", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) ppmShipment := factory.BuildPPMShipmentThatNeedsCloseout(suite.DB(), nil, nil) @@ -505,7 +506,7 @@ func (suite *OrderServiceSuite) TestUpdateOrderAsCounselor() { }) suite.Run("Rolls back transaction if Order is invalid", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) order := factory.BuildOrderWithoutDefaults(suite.DB(), nil, nil) @@ -540,7 +541,7 @@ func (suite *OrderServiceSuite) TestUpdateOrderAsCounselor() { func (suite *OrderServiceSuite) TestUpdateAllowanceAsTOO() { suite.Run("Returns an error when order is not found", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) nonexistentUUID := uuid.Must(uuid.NewV4()) @@ -554,7 +555,7 @@ func (suite *OrderServiceSuite) TestUpdateAllowanceAsTOO() { }) suite.Run("Returns an error when the etag does not match", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) order := factory.BuildMove(suite.DB(), nil, nil).Orders @@ -568,7 +569,7 @@ func (suite *OrderServiceSuite) TestUpdateAllowanceAsTOO() { }) suite.Run("Updates the allowance when all fields are valid and no dependents", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) order := factory.BuildServiceCounselingCompletedMove(suite.DB(), nil, nil).Orders @@ -607,7 +608,7 @@ func (suite *OrderServiceSuite) TestUpdateAllowanceAsTOO() { }) suite.Run("Updates the allowance when all OCONUS fields are valid with dependents", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) order := factory.BuildServiceCounselingCompletedMove(suite.DB(), nil, nil).Orders @@ -652,7 +653,7 @@ func (suite *OrderServiceSuite) TestUpdateAllowanceAsTOO() { }) suite.Run("Updates the allowance when all fields are valid with dependents", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) // Build with dependents trait order := factory.BuildServiceCounselingCompletedMove(suite.DB(), nil, []factory.Trait{ @@ -696,7 +697,7 @@ func (suite *OrderServiceSuite) TestUpdateAllowanceAsTOO() { func (suite *OrderServiceSuite) TestUpdateAllowanceAsCounselor() { suite.Run("Returns an error when order is not found", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) nonexistentUUID := uuid.Must(uuid.NewV4()) @@ -710,7 +711,7 @@ func (suite *OrderServiceSuite) TestUpdateAllowanceAsCounselor() { }) suite.Run("Returns an error when the etag does not match", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) order := factory.BuildMove(suite.DB(), nil, nil).Orders @@ -724,7 +725,7 @@ func (suite *OrderServiceSuite) TestUpdateAllowanceAsCounselor() { }) suite.Run("Updates the entitlement of OCONUS fields", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) order := factory.BuildNeedsServiceCounselingMove(suite.DB(), nil, nil).Orders @@ -764,7 +765,7 @@ func (suite *OrderServiceSuite) TestUpdateAllowanceAsCounselor() { }) suite.Run("Updates the allowance when all fields are valid with dependents authorized but not present", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) order := factory.BuildNeedsServiceCounselingMove(suite.DB(), nil, nil).Orders @@ -807,7 +808,7 @@ func (suite *OrderServiceSuite) TestUpdateAllowanceAsCounselor() { }) suite.Run("Updates the allowance when all fields are valid with dependents present and authorized", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) order := factory.BuildNeedsServiceCounselingMove(suite.DB(), nil, []factory.Trait{ factory.GetTraitHasDependents, @@ -852,7 +853,7 @@ func (suite *OrderServiceSuite) TestUpdateAllowanceAsCounselor() { }) suite.Run("Updates the allowance when move needs service counseling and order fields are missing", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) orderWithoutDefaults := factory.BuildOrderWithoutDefaults(suite.DB(), nil, nil) move := factory.BuildNeedsServiceCounselingMove(suite.DB(), []factory.Customization{ @@ -909,7 +910,7 @@ func (suite *OrderServiceSuite) TestUpdateAllowanceAsCounselor() { }) suite.Run("Entire update is aborted when ProGearWeight is over max amount", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) order := factory.BuildNeedsServiceCounselingMove(suite.DB(), nil, nil).Orders @@ -945,7 +946,7 @@ func (suite *OrderServiceSuite) TestUpdateAllowanceAsCounselor() { }) suite.Run("Entire update is aborted when ProGearWeightSpouse is over max amount", func() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) order := factory.BuildNeedsServiceCounselingMove(suite.DB(), nil, nil).Orders @@ -982,7 +983,7 @@ func (suite *OrderServiceSuite) TestUpdateAllowanceAsCounselor() { } func (suite *OrderServiceSuite) TestUploadAmendedOrdersForCustomer() { - moveRouter := move.NewMoveRouter() + moveRouter := move.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) orderUpdater := NewOrderUpdater(moveRouter) setUpOrders := func(setUpPreExistingAmendedOrders bool) *models.Order { diff --git a/pkg/services/shipment_address_update/shipment_address_update_requester_test.go b/pkg/services/shipment_address_update/shipment_address_update_requester_test.go index 7a7e12a3733..bb74650deca 100644 --- a/pkg/services/shipment_address_update/shipment_address_update_requester_test.go +++ b/pkg/services/shipment_address_update/shipment_address_update_requester_test.go @@ -14,6 +14,7 @@ import ( routemocks "github.com/transcom/mymove/pkg/route/mocks" "github.com/transcom/mymove/pkg/services/address" moveservices "github.com/transcom/mymove/pkg/services/move" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/testdatagen" "github.com/transcom/mymove/pkg/unit" ) @@ -99,7 +100,7 @@ func (suite *ShipmentAddressUpdateServiceSuite) TestCreateApprovedShipmentAddres } addressCreator := address.NewAddressCreator() mockPlanner := &routemocks.Planner{} - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) addressUpdateRequester := NewShipmentAddressUpdateRequester(mockPlanner, addressCreator, moveRouter) suite.Run("Successfully create ShipmentAddressUpdate for a domestic shipment", func() { @@ -804,7 +805,7 @@ func (suite *ShipmentAddressUpdateServiceSuite) TestCreateApprovedShipmentAddres func (suite *ShipmentAddressUpdateServiceSuite) TestTOOApprovedShipmentAddressUpdateRequest() { addressCreator := address.NewAddressCreator() mockPlanner := &routemocks.Planner{} - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) mockPlanner.On("ZipTransitDistance", mock.AnythingOfType("*appcontext.appContext"), mock.Anything, @@ -1504,7 +1505,7 @@ func (suite *ShipmentAddressUpdateServiceSuite) TestTOOApprovedShipmentAddressUp } addressCreator := address.NewAddressCreator() mockPlanner := &routemocks.Planner{} - moveRouter := moveservices.NewMoveRouter() + moveRouter := moveservices.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) addressUpdateRequester := NewShipmentAddressUpdateRequester(mockPlanner, addressCreator, moveRouter) suite.Run("Service items are rejected and regenerated when pricing type changes post TOO approval", func() { diff --git a/pkg/services/sit_extension/sit_extension_approver_test.go b/pkg/services/sit_extension/sit_extension_approver_test.go index 286d31cfcc8..56e787d7de2 100644 --- a/pkg/services/sit_extension/sit_extension_approver_test.go +++ b/pkg/services/sit_extension/sit_extension_approver_test.go @@ -9,10 +9,11 @@ import ( "github.com/transcom/mymove/pkg/factory" "github.com/transcom/mymove/pkg/models" moverouter "github.com/transcom/mymove/pkg/services/move" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" ) func (suite *SitExtensionServiceSuite) TestApproveSITExtension() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) sitExtensionApprover := NewSITExtensionApprover(moveRouter) suite.Run("Returns an error when shipment is not found", func() { diff --git a/pkg/services/sit_extension/sit_extension_creator_test.go b/pkg/services/sit_extension/sit_extension_creator_test.go index 4d7a9e310ef..de11d022153 100644 --- a/pkg/services/sit_extension/sit_extension_creator_test.go +++ b/pkg/services/sit_extension/sit_extension_creator_test.go @@ -9,12 +9,13 @@ import ( "github.com/transcom/mymove/pkg/services" moverouter "github.com/transcom/mymove/pkg/services/move" movefetcher "github.com/transcom/mymove/pkg/services/move_task_order" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" ) func (suite *SitExtensionServiceSuite) TestSITExtensionCreator() { // Create move router for SitExtension Createor - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) sitExtensionCreator := NewSitExtensionCreator(moveRouter) movefetcher := movefetcher.NewMoveTaskOrderFetcher() diff --git a/pkg/services/sit_extension/sit_extension_denier_test.go b/pkg/services/sit_extension/sit_extension_denier_test.go index 3ea81e61d42..1649346eb76 100644 --- a/pkg/services/sit_extension/sit_extension_denier_test.go +++ b/pkg/services/sit_extension/sit_extension_denier_test.go @@ -11,11 +11,12 @@ import ( "github.com/transcom/mymove/pkg/factory" "github.com/transcom/mymove/pkg/models" moverouter "github.com/transcom/mymove/pkg/services/move" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/testdatagen" ) func (suite *SitExtensionServiceSuite) TestDenySITExtension() { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) sitExtensionDenier := NewSITExtensionDenier(moveRouter) suite.Run("Returns an error when shipment is not found", func() { diff --git a/pkg/services/transportation_office.go b/pkg/services/transportation_office.go index 307f0d0fef5..a0d5cd95b8c 100644 --- a/pkg/services/transportation_office.go +++ b/pkg/services/transportation_office.go @@ -13,4 +13,5 @@ type TransportationOfficesFetcher interface { GetTransportationOffice(appCtx appcontext.AppContext, transportationOfficeID uuid.UUID, includeOnlyPPMCloseoutOffices bool) (*models.TransportationOffice, error) GetAllGBLOCs(appCtx appcontext.AppContext) (*models.GBLOCs, error) GetCounselingOffices(appCtx appcontext.AppContext, dutyLocationID uuid.UUID) (*models.TransportationOffices, error) + FindClosestCounselingOffice(appCtx appcontext.AppContext, dutyLocationID uuid.UUID) (models.TransportationOffice, error) } diff --git a/pkg/services/transportation_office/transportation_office_fetcher.go b/pkg/services/transportation_office/transportation_office_fetcher.go index be942890c75..6ebb89837e4 100644 --- a/pkg/services/transportation_office/transportation_office_fetcher.go +++ b/pkg/services/transportation_office/transportation_office_fetcher.go @@ -6,6 +6,7 @@ import ( "github.com/gofrs/uuid" "github.com/pkg/errors" + "go.uber.org/zap" "github.com/transcom/mymove/pkg/appcontext" "github.com/transcom/mymove/pkg/apperror" @@ -305,3 +306,95 @@ func findOconusGblocDepartmentIndicator(appCtx appcontext.AppContext, dutyLocati return nil, apperror.NewImplementationError(fmt.Sprintf("Error: Cannot determine GBLOC -- serviceMember.Affiliation: %s, DutyLocaton: %s, departmentIndicator: %s, dutyLocation.Address.ID: %s", serviceMember.Affiliation, dutyLocation.Name, *departmentIndicator, dutyLocation.Address.ID)) } + +// Return the closeset transportation office in the GBLOC of the given duty location for oconus/conus duty locations +func (o transportationOfficesFetcher) FindClosestCounselingOffice(appCtx appcontext.AppContext, dutyLocationID uuid.UUID) (models.TransportationOffice, error) { + var closestOffice models.TransportationOffice + duty_location, err := models.FetchDutyLocation(appCtx.DB(), dutyLocationID) + if err != nil { + appCtx.Logger().Error("Failed to fetch duty location", zap.Error(err)) + return closestOffice, err + } + var sqlQuery string + + // Find for oconus duty location + if *duty_location.Address.IsOconus { + gblocDepartmentIndicator, err := findOconusGblocDepartmentIndicator(appCtx, duty_location) + if err != nil { + appCtx.Logger().Error("Failed to find OCONUS GBLOC department indicator", zap.Error(err)) + return closestOffice, err + } + + sqlQuery = ` + WITH counseling_offices AS ( + SELECT transportation_offices.id, transportation_offices.name, transportation_offices.address_id AS counseling_address, + SUBSTRING(a.postal_code, 1, 3) AS origin_zip, SUBSTRING(a2.postal_code, 1, 3) AS dest_zip + FROM duty_locations + JOIN addresses a ON duty_locations.address_id = a.id + JOIN v_locations v ON (a.us_post_region_cities_id = v.uprc_id OR v.uprc_id IS NULL) + JOIN re_oconus_rate_areas r ON r.us_post_region_cities_id = v.uprc_id + JOIN gbloc_aors ON gbloc_aors.oconus_rate_area_id = r.id + JOIN jppso_regions j ON gbloc_aors.jppso_regions_id = j.id + JOIN transportation_offices ON j.code = transportation_offices.gbloc + JOIN addresses a2 ON a2.id = transportation_offices.address_id + WHERE duty_locations.id = $1 AND j.code = $2 + AND transportation_offices.provides_ppm_closeout = true + ) + SELECT counseling_offices.id, counseling_offices.name + FROM counseling_offices + JOIN addresses cnsl_address ON counseling_offices.counseling_address = cnsl_address.id + LEFT JOIN zip3_distances ON ( + (SUBSTRING(cnsl_address.postal_code, 1, 3) = zip3_distances.to_zip3 + AND counseling_offices.origin_zip = zip3_distances.from_zip3) + OR + (SUBSTRING(cnsl_address.postal_code, 1, 3) = zip3_distances.from_zip3 + AND counseling_offices.origin_zip = zip3_distances.to_zip3) + ) + GROUP BY counseling_offices.id, counseling_offices.name, zip3_distances.distance_miles + ORDER BY COALESCE(zip3_distances.distance_miles, 0) ASC + FETCH FIRST 1 ROW ONLY` + + if err := appCtx.DB().Q().RawQuery(sqlQuery, dutyLocationID, gblocDepartmentIndicator.Gbloc).First(&closestOffice); err != nil { + appCtx.Logger().Error("Failed to execute OCONUS SQL query", zap.Error(err)) + if errors.Cause(err).Error() != models.RecordNotFoundErrorString { + return closestOffice, err + } + } + return closestOffice, nil + } else { + + // Find for conus duty location + sqlQuery = ` + WITH counseling_offices AS ( + SELECT transportation_offices.id, transportation_offices.name, transportation_offices.address_id AS counseling_address, SUBSTRING(addresses.postal_code, 1, 3) AS pickup_zip + FROM postal_code_to_gblocs + JOIN addresses ON postal_code_to_gblocs.postal_code = addresses.postal_code + JOIN duty_locations ON addresses.id = duty_locations.address_id + JOIN transportation_offices ON postal_code_to_gblocs.gbloc = transportation_offices.gbloc + WHERE duty_locations.id = $1 + ) + SELECT counseling_offices.id, counseling_offices.name + FROM counseling_offices + JOIN duty_locations duty_locations2 ON counseling_offices.id = duty_locations2.transportation_office_id + JOIN addresses ON counseling_offices.counseling_address = addresses.id + JOIN re_us_post_regions ON addresses.postal_code = re_us_post_regions.uspr_zip_id + LEFT JOIN zip3_distances ON ( + (re_us_post_regions.zip3 = zip3_distances.to_zip3 AND counseling_offices.pickup_zip = zip3_distances.from_zip3) + OR + (re_us_post_regions.zip3 = zip3_distances.from_zip3 AND counseling_offices.pickup_zip = zip3_distances.to_zip3) + ) + WHERE duty_locations2.provides_services_counseling = true + GROUP BY counseling_offices.id, counseling_offices.name, zip3_distances.distance_miles + ORDER BY COALESCE(zip3_distances.distance_miles, 0), counseling_offices.name ASC + FETCH FIRST 1 ROW ONLY` + + if err := appCtx.DB().Q().RawQuery(sqlQuery, dutyLocationID).First(&closestOffice); err != nil { + appCtx.Logger().Error("Failed to execute CONUS SQL query", zap.Error(err)) + if errors.Cause(err).Error() != models.RecordNotFoundErrorString { + return closestOffice, err + } + } + } + + return closestOffice, nil +} diff --git a/pkg/services/transportation_office/transportation_office_fetcher_test.go b/pkg/services/transportation_office/transportation_office_fetcher_test.go index 9ce5bab765c..cca4d4c6fd5 100644 --- a/pkg/services/transportation_office/transportation_office_fetcher_test.go +++ b/pkg/services/transportation_office/transportation_office_fetcher_test.go @@ -677,3 +677,493 @@ func (suite *TransportationOfficeServiceSuite) Test_GetTransportationOffice() { suite.Equal("OFFICE ONE", office1f.Name) suite.Equal("OFFICE TWO", office2f.Name) } + +func (suite *TransportationOfficeServiceSuite) Test_FindClosestCounselingOfficeCONUS() { + suite.toFetcher = NewTransportationOfficesFetcher() + customAddress1 := models.Address{ + ID: uuid.Must(uuid.NewV4()), + StreetAddress1: "123 Mayport St", + City: "Mayport", + State: "FL", + PostalCode: "32228", + County: models.StringPointer("Duval"), + IsOconus: models.BoolPointer(false), + } + factory.BuildDutyLocation(suite.DB(), []factory.Customization{ + {Model: customAddress1, Type: &factory.Addresses.DutyLocationAddress}, + { + Model: models.DutyLocation{ + ProvidesServicesCounseling: false, + }, + }, + { + Model: models.TransportationOffice{ + Name: "PPPO Holloman AFB - USAF", + }, + }, + }, nil) + + customAddress2 := models.Address{ + ID: uuid.Must(uuid.NewV4()), + StreetAddress1: "123 Mayport St", + City: "Jacksonville", + State: "FL", + PostalCode: "32228", + County: models.StringPointer("Duval"), + IsOconus: models.BoolPointer(false), + } + factory.BuildDutyLocation(suite.DB(), []factory.Customization{ + {Model: customAddress2, Type: &factory.Addresses.DutyLocationAddress}, + { + Model: models.DutyLocation{ + ProvidesServicesCounseling: true, + }, + }, + { + Model: models.TransportationOffice{ + Name: "PPPO Jacksonville - USN", + }, + }, + }, nil) + + customAddress3 := models.Address{ + ID: uuid.Must(uuid.NewV4()), + StreetAddress1: "123 Mayport St", + City: "Palm Valley", + State: "FL", + PostalCode: "32228", + County: models.StringPointer("Duval"), + IsOconus: models.BoolPointer(false), + } + origDutyLocation := factory.BuildDutyLocation(suite.DB(), []factory.Customization{ + {Model: customAddress3, Type: &factory.Addresses.DutyLocationAddress}, + { + Model: models.DutyLocation{ + ProvidesServicesCounseling: true, + }, + }, + { + Model: models.TransportationOffice{ + Name: "PPPO Fort Moore - USA", + Gbloc: "CNNQ", + ProvidesCloseout: true, + }, + }, + }, nil) + + customAddress4 := models.Address{ + ID: uuid.Must(uuid.NewV4()), + StreetAddress1: "123 Mayport St", + City: "Fernandina", + State: "FL", + PostalCode: "32228", + County: models.StringPointer("Duval"), + IsOconus: models.BoolPointer(false), + } + factory.BuildDutyLocation(suite.DB(), []factory.Customization{ + {Model: customAddress4, Type: &factory.Addresses.DutyLocationAddress}, + { + Model: models.DutyLocation{ + ProvidesServicesCounseling: true, + }, + }, + { + Model: models.TransportationOffice{ + Name: "PPPO Fort Meade - USA", + Gbloc: "CNNQ", + ProvidesCloseout: true, + }, + }, + }, nil) + + offices, err := suite.toFetcher.FindClosestCounselingOffice(suite.AppContextForTest(), origDutyLocation.ID) + suite.NoError(err) + suite.Equal(offices.Name, "PPPO Jacksonville - USN") +} + +func (suite *TransportationOfficeServiceSuite) Test_FindClosestCounselingOfficeOCONUS() { + testContractName := "Test_findOconusGblocDepartmentIndicator" + testContractCode := "Test_findOconusGblocDepartmentIndicator_Code" + testPostalCode := "32228" + testPostalCode2 := "99701" + testGbloc := "CNNQ" + testGbloc2 := "KKFA" + testTransportationName := "JPPSO - North West (JEAT) - USA" + testTransportationName2 := "PPPO Fort Belvoir - USA" + + serviceAffiliations := []models.ServiceMemberAffiliation{models.AffiliationARMY, + models.AffiliationNAVY, models.AffiliationMARINES, models.AffiliationAIRFORCE, models.AffiliationCOASTGUARD, + models.AffiliationSPACEFORCE} + + setupServiceMember := func(serviceMemberAffiliation models.ServiceMemberAffiliation) models.ServiceMember { + customServiceMember := models.ServiceMember{ + FirstName: models.StringPointer("John"), + LastName: models.StringPointer("Doe"), + Telephone: models.StringPointer("999-999-9999"), + SecondaryTelephone: models.StringPointer("123-555-9999"), + PersonalEmail: models.StringPointer("peyton@example.com"), + Edipi: models.StringPointer("1000011111"), + Affiliation: &serviceMemberAffiliation, + Suffix: models.StringPointer("Random suffix string"), + PhoneIsPreferred: models.BoolPointer(false), + EmailIsPreferred: models.BoolPointer(false), + } + + customAddress := models.Address{ + StreetAddress1: "987 Another Street", + } + + customUser := models.User{ + OktaEmail: "test_email@email.com", + } + + serviceMember := factory.BuildServiceMember(suite.DB(), []factory.Customization{ + {Model: customServiceMember}, + {Model: customAddress}, + {Model: customUser}, + }, nil) + + return serviceMember + } + + createContract := func(appCtx appcontext.AppContext, contractCode string, contractName string) (*models.ReContract, error) { + // See if contract code already exists. + exists, err := appCtx.DB().Where("code = ?", contractCode).Exists(&models.ReContract{}) + if err != nil { + return nil, fmt.Errorf("could not determine if contract code [%s] existed: %w", contractCode, err) + } + if exists { + return nil, fmt.Errorf("the provided contract code [%s] already exists", contractCode) + } + + // Contract code is new; insert it. + contract := models.ReContract{ + Code: contractCode, + Name: contractName, + } + verrs, err := appCtx.DB().ValidateAndSave(&contract) + if verrs.HasAny() { + return nil, fmt.Errorf("validation errors when saving contract [%+v]: %w", contract, verrs) + } + if err != nil { + return nil, fmt.Errorf("could not save contract [%+v]: %w", contract, err) + } + return &contract, nil + } + + setupDataForOconusSearchCounselingOffice := func(contract models.ReContract, postalCode string, gbloc string, transportationName string) (models.ReRateArea, models.OconusRateArea, models.UsPostRegionCity, models.DutyLocation) { + rateAreaCode := uuid.Must(uuid.NewV4()).String()[0:5] + rateArea := models.ReRateArea{ + ID: uuid.Must(uuid.NewV4()), + ContractID: contract.ID, + IsOconus: true, + Code: rateAreaCode, + Name: fmt.Sprintf("Alaska-%s", rateAreaCode), + Contract: contract, + } + verrs, err := suite.DB().ValidateAndCreate(&rateArea) + if verrs.HasAny() { + suite.Fail(verrs.Error()) + } + if err != nil { + suite.Fail(err.Error()) + } + + us_country, err := models.FetchCountryByCode(suite.DB(), "US") + suite.NotNil(us_country) + suite.Nil(err) + + usprc, err := models.FindByZipCode(suite.AppContextForTest().DB(), postalCode) + suite.NotNil(usprc) + suite.FatalNoError(err) + + oconusRateArea := models.OconusRateArea{ + ID: uuid.Must(uuid.NewV4()), + RateAreaId: rateArea.ID, + CountryId: us_country.ID, + UsPostRegionCityId: usprc.ID, + Active: true, + } + verrs, err = suite.DB().ValidateAndCreate(&oconusRateArea) + if verrs.HasAny() { + suite.Fail(verrs.Error()) + } + if err != nil { + suite.Fail(err.Error()) + } + + address := models.Address{ + StreetAddress1: "123 Ocunus St.", + City: "Fairbanks", + State: "AK", + PostalCode: postalCode, + County: models.StringPointer("Fairbanks North Star Borough"), + IsOconus: models.BoolPointer(true), + UsPostRegionCityID: &usprc.ID, + CountryId: models.UUIDPointer(us_country.ID), + } + suite.MustSave(&address) + + origDutyLocation := factory.BuildDutyLocation(suite.DB(), []factory.Customization{ + { + Model: models.DutyLocation{ + AddressID: address.ID, + ProvidesServicesCounseling: true, + }, + }, + { + Model: models.TransportationOffice{ + Name: transportationName, + Gbloc: gbloc, + ProvidesCloseout: true, + }, + }, + }, nil) + suite.MustSave(&origDutyLocation) + found_duty_location, _ := models.FetchDutyLocation(suite.DB(), origDutyLocation.ID) + return rateArea, oconusRateArea, *usprc, found_duty_location + } + + suite.Run("success - findOconusGblocDepartmentIndicator - returns default GLOC for departmentAffiliation if no specific departmentAffilation mapping is defined", func() { + contract, err := createContract(suite.AppContextForTest(), testContractCode, testContractName) + suite.NotNil(contract) + suite.FatalNoError(err) + + const fairbanksAlaskaPostalCode = "99790" + _, oconusRateArea, _, dutylocation := setupDataForOconusSearchCounselingOffice(*contract, fairbanksAlaskaPostalCode, testGbloc, testTransportationName) + + // setup department affiliation to GBLOC mappings + expected_gbloc := "TEST-GBLOC" + jppsoRegion := models.JppsoRegions{ + Code: expected_gbloc, + Name: "TEST PPM", + } + suite.MustSave(&jppsoRegion) + + gblocAors := models.GblocAors{ + JppsoRegionID: jppsoRegion.ID, + OconusRateAreaID: oconusRateArea.ID, + // DepartmentIndicator is nil, + } + suite.MustSave(&gblocAors) + + serviceAffiliations := []models.ServiceMemberAffiliation{models.AffiliationARMY, + models.AffiliationNAVY, models.AffiliationMARINES, models.AffiliationAIRFORCE, models.AffiliationCOASTGUARD, + models.AffiliationSPACEFORCE} + + // loop through and make sure all branches are using expected default GBLOC + for _, affiliation := range serviceAffiliations { + serviceMember := setupServiceMember(affiliation) + appCtx := suite.AppContextWithSessionForTest(&auth.Session{ + ServiceMemberID: serviceMember.ID, + }) + suite.Nil(err) + departmentIndictor, err := findOconusGblocDepartmentIndicator(appCtx, dutylocation) + suite.NotNil(departmentIndictor) + suite.Nil(err) + suite.Nil(departmentIndictor.DepartmentIndicator) + suite.Equal(expected_gbloc, departmentIndictor.Gbloc) + } + }) + + suite.Run("Success - findOconusGblocDepartmentIndicator - Should return specific GLOC for departmentAffiliation when a specific departmentAffilation mapping is defined", func() { + contract, err := createContract(suite.AppContextForTest(), testContractCode, testContractName) + suite.NotNil(contract) + suite.FatalNoError(err) + + _, oconusRateArea, _, dutylocation := setupDataForOconusSearchCounselingOffice(*contract, testPostalCode, testGbloc, testTransportationName) + + departmentIndicators := []models.DepartmentIndicator{models.DepartmentIndicatorARMY, + models.DepartmentIndicatorARMYCORPSOFENGINEERS, models.DepartmentIndicatorCOASTGUARD, + models.DepartmentIndicatorNAVYANDMARINES, models.DepartmentIndicatorAIRANDSPACEFORCE} + + expectedAffiliationToDepartmentIndicatorMap := make(map[string]string, 0) + expectedAffiliationToDepartmentIndicatorMap[models.AffiliationARMY.String()] = models.DepartmentIndicatorARMY.String() + expectedAffiliationToDepartmentIndicatorMap[models.AffiliationNAVY.String()] = models.DepartmentIndicatorNAVYANDMARINES.String() + expectedAffiliationToDepartmentIndicatorMap[models.AffiliationMARINES.String()] = models.DepartmentIndicatorNAVYANDMARINES.String() + expectedAffiliationToDepartmentIndicatorMap[models.AffiliationAIRFORCE.String()] = models.DepartmentIndicatorAIRANDSPACEFORCE.String() + expectedAffiliationToDepartmentIndicatorMap[models.AffiliationCOASTGUARD.String()] = models.DepartmentIndicatorCOASTGUARD.String() + expectedAffiliationToDepartmentIndicatorMap[models.AffiliationSPACEFORCE.String()] = models.DepartmentIndicatorAIRANDSPACEFORCE.String() + + // setup department affiliation to GBLOC mappings + expected_gbloc := "TEST-GBLOC" + jppsoRegion := models.JppsoRegions{ + Code: expected_gbloc, + Name: "TEST PPM", + } + suite.MustSave(&jppsoRegion) + + defaultGblocAors := models.GblocAors{ + JppsoRegionID: jppsoRegion.ID, + OconusRateAreaID: oconusRateArea.ID, + //DepartmentIndicator is nil, + } + suite.MustSave(&defaultGblocAors) + + // setup specific departmentAffiliation mapping for each branch + for _, departmentIndicator := range departmentIndicators { + gblocAors := models.GblocAors{ + JppsoRegionID: jppsoRegion.ID, + OconusRateAreaID: oconusRateArea.ID, + DepartmentIndicator: models.StringPointer(departmentIndicator.String()), + } + suite.MustSave(&gblocAors) + } + + // loop through and make sure all branches are using it's own dedicated GBLOC and not default + for _, affiliation := range serviceAffiliations { + serviceMember := setupServiceMember(affiliation) + appCtx := suite.AppContextWithSessionForTest(&auth.Session{ + ServiceMemberID: serviceMember.ID, + }) + suite.Nil(err) + departmentIndictor, err := findOconusGblocDepartmentIndicator(appCtx, dutylocation) + suite.NotNil(departmentIndictor) + suite.Nil(err) + suite.NotNil(departmentIndictor.DepartmentIndicator) + if match, ok := expectedAffiliationToDepartmentIndicatorMap[affiliation.String()]; ok { + // verify service member's affiliation matches on specific departmentIndicator mapping record + suite.Equal(match, *departmentIndictor.DepartmentIndicator) + } else { + suite.Fail(fmt.Sprintf("key does not exist for %s", affiliation.String())) + } + suite.Equal(expected_gbloc, departmentIndictor.Gbloc) + } + }) + + suite.Run("success - offices using default departmentIndicator mapping", func() { + contract, err := createContract(suite.AppContextForTest(), testContractCode, testContractName) + suite.NotNil(contract) + suite.FatalNoError(err) + + _, oconusRateArea, _, dutylocation := setupDataForOconusSearchCounselingOffice(*contract, testPostalCode, testGbloc, testTransportationName) + + // setup department affiliation to GBLOC mappings + jppsoRegion := models.JppsoRegions{ + Code: testGbloc, + Name: "TEST PPM", + } + suite.MustSave(&jppsoRegion) + + gblocAors := models.GblocAors{ + JppsoRegionID: jppsoRegion.ID, + OconusRateAreaID: oconusRateArea.ID, + } + suite.MustSave(&gblocAors) + + postalCodeToGBLOC := models.PostalCodeToGBLOC{ + PostalCode: testPostalCode, + GBLOC: testGbloc, + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + } + suite.MustSave(&postalCodeToGBLOC) + + serviceMember := setupServiceMember(models.AffiliationAIRFORCE) + appCtx := suite.AppContextWithSessionForTest(&auth.Session{ + ServiceMemberID: serviceMember.ID, + }) + + suite.Nil(err) + offices, err := findCounselingOffice(appCtx, dutylocation.ID) + suite.NotNil(offices) + suite.Nil(err) + suite.Equal(1, len(offices)) + suite.Equal(testTransportationName, offices[0].Name) + + factory.BuildTransportationOffice(suite.DB(), []factory.Customization{ + { + Model: models.TransportationOffice{ + Name: testTransportationName2, + ProvidesCloseout: true, + Gbloc: testGbloc, + }, + }, + }, nil) + offices, err = findCounselingOffice(appCtx, dutylocation.ID) + suite.NotNil(offices) + suite.Nil(err) + suite.Equal(2, len(offices)) + }) + + suite.Run("Should return correct office based on service affiliation", func() { + contract, err := createContract(suite.AppContextForTest(), testContractCode, testContractName) + suite.NotNil(contract) + suite.FatalNoError(err) + + _, oconusRateArea, _, dutylocation := setupDataForOconusSearchCounselingOffice(*contract, testPostalCode, testGbloc, testTransportationName) + + jppsoRegion_AFSF := models.JppsoRegions{ + Code: testGbloc, + Name: "TEST PPO", + } + suite.MustSave(&jppsoRegion_AFSF) + + gblocAors_AFSF := models.GblocAors{ + JppsoRegionID: jppsoRegion_AFSF.ID, + OconusRateAreaID: oconusRateArea.ID, + DepartmentIndicator: models.StringPointer(models.DepartmentIndicatorAIRANDSPACEFORCE.String()), + } + suite.MustSave(&gblocAors_AFSF) + + postalCodeToGBLOC_AFSF := models.PostalCodeToGBLOC{ + PostalCode: testPostalCode, + GBLOC: testGbloc, + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + } + suite.MustSave(&postalCodeToGBLOC_AFSF) + + jppsoRegion_not_AFSF := models.JppsoRegions{ + Code: testGbloc2, + Name: "TEST PPO 2", + } + suite.MustSave(&jppsoRegion_not_AFSF) + + gblocAors_not_AFSF := models.GblocAors{ + JppsoRegionID: jppsoRegion_not_AFSF.ID, + OconusRateAreaID: oconusRateArea.ID, + } + suite.MustSave(&gblocAors_not_AFSF) + + postalCodeToGBLOC_not_AFSF := models.PostalCodeToGBLOC{ + PostalCode: testPostalCode2, + GBLOC: testGbloc2, + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + } + suite.MustSave(&postalCodeToGBLOC_not_AFSF) + + // add transportation office for other branches not AF/SF + factory.BuildTransportationOffice(suite.DB(), []factory.Customization{ + { + Model: models.TransportationOffice{ + Name: testTransportationName2, + ProvidesCloseout: true, + Gbloc: testGbloc2, + }, + }, + }, nil) + + for _, affiliation := range serviceAffiliations { + serviceMember := setupServiceMember(affiliation) + if affiliation == models.AffiliationAIRFORCE || affiliation == models.AffiliationSPACEFORCE { + appCtx := suite.AppContextWithSessionForTest(&auth.Session{ + ServiceMemberID: serviceMember.ID, + }) + offices, err := suite.toFetcher.FindClosestCounselingOffice(appCtx, dutylocation.ID) + suite.NotNil(offices) + suite.Nil(err) + suite.Equal(testTransportationName, offices.Name) + } else { + appCtx := suite.AppContextWithSessionForTest(&auth.Session{ + ServiceMemberID: serviceMember.ID, + }) + offices, err := suite.toFetcher.FindClosestCounselingOffice(appCtx, dutylocation.ID) + suite.NotNil(offices) + suite.Nil(err) + suite.Equal(testTransportationName2, offices.Name) + } + } + }) +} diff --git a/pkg/testdatagen/scenario/devseed.go b/pkg/testdatagen/scenario/devseed.go index fe698271e8d..93555dd2ce3 100644 --- a/pkg/testdatagen/scenario/devseed.go +++ b/pkg/testdatagen/scenario/devseed.go @@ -14,6 +14,7 @@ import ( "github.com/transcom/mymove/pkg/models" moverouter "github.com/transcom/mymove/pkg/services/move" mtoshipment "github.com/transcom/mymove/pkg/services/mto_shipment" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/uploader" ) @@ -28,7 +29,7 @@ var DevSeedScenario = devSeedScenario{ // Setup initializes the run setup for the devseed scenario func (e *devSeedScenario) Setup(appCtx appcontext.AppContext, userUploader *uploader.UserUploader, primeUploader *uploader.PrimeUploader) { db := appCtx.DB() - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) shipmentFetcher := mtoshipment.NewMTOShipmentFetcher() // Testdatagen factories will create new random duty locations so let's get the standard ones in the migrations diff --git a/pkg/testdatagen/scenario/e2ebasic.go b/pkg/testdatagen/scenario/e2ebasic.go index e615fdf931e..9702ff15fc1 100644 --- a/pkg/testdatagen/scenario/e2ebasic.go +++ b/pkg/testdatagen/scenario/e2ebasic.go @@ -15,6 +15,7 @@ import ( "github.com/transcom/mymove/pkg/models" "github.com/transcom/mymove/pkg/models/roles" moverouter "github.com/transcom/mymove/pkg/services/move" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/testdatagen" "github.com/transcom/mymove/pkg/unit" "github.com/transcom/mymove/pkg/uploader" @@ -4299,7 +4300,7 @@ func createNTSMoveWithServiceItemsandPaymentRequests(appCtx appcontext.AppContex // Run does that data load thing func (e e2eBasicScenario) Run(appCtx appcontext.AppContext, userUploader *uploader.UserUploader, primeUploader *uploader.PrimeUploader) { - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) // Testdatagen factories will create new random duty locations so let's get the standard ones in the migrations var allDutyLocations []models.DutyLocation err := appCtx.DB().All(&allDutyLocations) diff --git a/pkg/testdatagen/testharness/make_move.go b/pkg/testdatagen/testharness/make_move.go index ca192666c7d..f9e8dda3b73 100644 --- a/pkg/testdatagen/testharness/make_move.go +++ b/pkg/testdatagen/testharness/make_move.go @@ -24,6 +24,7 @@ import ( mtoserviceitem "github.com/transcom/mymove/pkg/services/mto_service_item" mtoshipment "github.com/transcom/mymove/pkg/services/mto_shipment" "github.com/transcom/mymove/pkg/services/query" + transportationoffice "github.com/transcom/mymove/pkg/services/transportation_office" "github.com/transcom/mymove/pkg/storage" "github.com/transcom/mymove/pkg/testdatagen" "github.com/transcom/mymove/pkg/testdatagen/scenario" @@ -3792,7 +3793,7 @@ func MakeHHGMoveWithApprovedNTSShipmentsForTOO(appCtx appcontext.AppContext) mod locator := models.GenerateLocator() move := scenario.CreateMoveWithHHGAndNTSShipments(appCtx, locator, false) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) err := moveRouter.Approve(appCtx, &move) if err != nil { log.Panic("Failed to approve move: %w", err) @@ -3896,7 +3897,7 @@ func MakeHHGMoveWithApprovedNTSRShipmentsForTOO(appCtx appcontext.AppContext) mo locator := models.GenerateLocator() move := scenario.CreateMoveWithHHGAndNTSRShipments(appCtx, locator, false) - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) err := moveRouter.Approve(appCtx, &move) if err != nil { log.Panic("Failed to approve move: %w", err) @@ -4044,7 +4045,7 @@ func MakeBoatHaulAwayMoveNeedsSC(appCtx appcontext.AppContext) models.Move { MoveLocator: models.GenerateLocator(), } - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) move := scenario.CreateBoatHaulAwayMoveForSC(appCtx, userUploader, moveRouter, moveInfo) @@ -4073,7 +4074,7 @@ func MakeBoatHaulAwayMoveNeedsTOOApproval(appCtx appcontext.AppContext) models.M MoveLocator: models.GenerateLocator(), } - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) move := scenario.CreateBoatHaulAwayMoveForTOO(appCtx, userUploader, moveRouter, moveInfo) @@ -4583,7 +4584,7 @@ func MakeSubmittedMoveWithPPMShipmentForSC(appCtx appcontext.AppContext) models. MoveLocator: models.GenerateLocator(), } - moveRouter := moverouter.NewMoveRouter() + moveRouter := moverouter.NewMoveRouter(transportationoffice.NewTransportationOfficesFetcher()) move := scenario.CreateSubmittedMoveWithPPMShipmentForSC(appCtx, userUploader, moveRouter, moveInfo) diff --git a/src/components/Office/RequestedShipments/RequestedShipments.test.jsx b/src/components/Office/RequestedShipments/RequestedShipments.test.jsx index 8fdd77d5f51..3ba0372039f 100644 --- a/src/components/Office/RequestedShipments/RequestedShipments.test.jsx +++ b/src/components/Office/RequestedShipments/RequestedShipments.test.jsx @@ -667,7 +667,7 @@ describe('RequestedShipments', () => { expect(screen.getByTestId('counselingFee')).toBeInTheDocument(); }); - it('does not render the "Add service items to move" section or Counseling option when all shipments are PPM', () => { + it('should disable the counseling checkbox when full ppm shipment', () => { const testPropsServiceItemsEmpty = { mtoServiceItems: serviceItemsEmpty, mtoShipments: ppmOnlyShipments, @@ -675,10 +675,9 @@ describe('RequestedShipments', () => { }; renderComponent(testPropsServiceItemsEmpty); - expect(screen.queryByText('Add service items to this move')).not.toBeInTheDocument(); + expect(screen.queryByText('Add service items to this move')).toBeInTheDocument(); expect(screen.getByText('Approve selected')).toBeInTheDocument(); - expect(screen.queryByTestId('shipmentManagementFee')).not.toBeInTheDocument(); - expect(screen.queryByTestId('counselingFee')).not.toBeInTheDocument(); + expect(screen.queryByTestId('counselingFee')).toBeDisabled(); }); }); }); diff --git a/src/components/Office/RequestedShipments/SubmittedRequestedShipments.jsx b/src/components/Office/RequestedShipments/SubmittedRequestedShipments.jsx index 1d71878a9bb..f07eb7a711a 100644 --- a/src/components/Office/RequestedShipments/SubmittedRequestedShipments.jsx +++ b/src/components/Office/RequestedShipments/SubmittedRequestedShipments.jsx @@ -275,9 +275,11 @@ const SubmittedRequestedShipments = ({ const dutyLocationPostal = { postalCode: ordersInfo.newDutyLocation?.address?.postalCode }; - // Hide counseling line item if prime counseling is already in the service items, if service counseling has been applied, or if full PPM move - const hideCounselingCheckbox = - hasCounseling(mtoServiceItems) || moveTaskOrder?.serviceCounselingCompletedAt || isPPMOnly(mtoShipments); + // Hide counseling line item if prime counseling is already in the service items or if service counseling has been applied + const hideCounselingCheckbox = hasCounseling(mtoServiceItems) || moveTaskOrder?.serviceCounselingCompletedAt; + + // Disable counseling checkbox if full PPM shipment + const disableCounselingCheckbox = isPPMOnly(mtoShipments); // Hide move management line item if it is already in the service items or for PPM only moves const hideMoveManagementCheckbox = hasMoveManagement(mtoServiceItems) || isPPMOnly(mtoShipments); @@ -393,7 +395,7 @@ const SubmittedRequestedShipments = ({ name="counselingFee" onChange={formik.handleChange} data-testid="counselingFee" - disabled={isMoveLocked} + disabled={isMoveLocked || disableCounselingCheckbox} /> )} diff --git a/src/components/Office/RequestedShipments/SubmittedRequestedShipments.test.jsx b/src/components/Office/RequestedShipments/SubmittedRequestedShipments.test.jsx index 1388bdf84e4..30ec9358f6f 100644 --- a/src/components/Office/RequestedShipments/SubmittedRequestedShipments.test.jsx +++ b/src/components/Office/RequestedShipments/SubmittedRequestedShipments.test.jsx @@ -177,7 +177,7 @@ describe('RequestedShipments', () => { moveCode: 'TE5TC0DE', }; - it('does not render the "Add service items to move" section or Counseling option when all shipments are PPM', () => { + it('should disable the counseling checkbox when full ppm shipment', () => { const testPropsServiceItemsEmpty = { mtoServiceItems: serviceItemsEmpty, mtoShipments: ppmOnlyShipments, @@ -185,10 +185,9 @@ describe('RequestedShipments', () => { }; renderComponent(testPropsServiceItemsEmpty); - expect(screen.queryByText('Add service items to this move')).not.toBeInTheDocument(); + expect(screen.queryByText('Add service items to this move')).toBeInTheDocument(); expect(screen.getByText('Approve selected')).toBeInTheDocument(); - expect(screen.queryByTestId('shipmentManagementFee')).not.toBeInTheDocument(); - expect(screen.queryByTestId('counselingFee')).not.toBeInTheDocument(); + expect(screen.queryByTestId('counselingFee')).toBeDisabled(); }); }); });