Skip to content

Commit

Permalink
Merge branch 'main' into B-21690-Fix-Assigned-Column
Browse files Browse the repository at this point in the history
  • Loading branch information
pambecker authored Dec 31, 2024
2 parents c95d899 + 8188838 commit 93cec22
Show file tree
Hide file tree
Showing 7 changed files with 97 additions and 17 deletions.
2 changes: 1 addition & 1 deletion pkg/handlers/primeapiv3/mto_shipment.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ func (h CreateMTOShipmentHandler) Handle(params mtoshipmentops.CreateMTOShipment
appCtx.Logger().Error("Error validating mto shipment object: ", zap.Error(verrs))

return mtoshipmentops.NewCreateMTOShipmentUnprocessableEntity().WithPayload(payloads.ValidationError(
"The MTO shipment object is invalid.", h.GetTraceIDFromRequest(params.HTTPRequest), nil)), verrs
"The MTO shipment object is invalid. "+verrs.Error(), h.GetTraceIDFromRequest(params.HTTPRequest), nil)), verrs
}

mtoShipment.Status = models.MTOShipmentStatusSubmitted
Expand Down
6 changes: 2 additions & 4 deletions pkg/handlers/primeapiv3/mto_shipment_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1479,8 +1479,7 @@ func (suite *HandlerSuite) TestCreateMTOShipmentHandler() {
suite.IsType(&mtoshipmentops.CreateMTOShipmentUnprocessableEntity{}, response)
errResponse := response.(*mtoshipmentops.CreateMTOShipmentUnprocessableEntity)

suite.Contains(*errResponse.Payload.Detail, "Invalid input found while validating the PPM shipment.")
suite.Contains(errResponse.Payload.InvalidFields["error validating ppm shipment"][0], "Shipment cannot have a third address without a second address present")
suite.Contains(*errResponse.Payload.Detail, "The MTO shipment object is invalid. Shipment cannot have a third pickup address without a second pickup address present")
})

suite.Run("POST failure - Error creating mto shipment containing a ppm shipment contains tertiary destination address no secondary destination address.", func() {
Expand Down Expand Up @@ -1538,8 +1537,7 @@ func (suite *HandlerSuite) TestCreateMTOShipmentHandler() {
suite.IsType(&mtoshipmentops.CreateMTOShipmentUnprocessableEntity{}, response)
errResponse := response.(*mtoshipmentops.CreateMTOShipmentUnprocessableEntity)

suite.Contains(*errResponse.Payload.Detail, "Invalid input found while validating the PPM shipment.")
suite.Contains(errResponse.Payload.InvalidFields["error validating ppm shipment"][0], "Shipment cannot have a third address without a second address present")
suite.Contains(*errResponse.Payload.Detail, "The MTO shipment object is invalid. Shipment cannot have a third destination address without a second destination address present")
})
suite.Run("PATCH failure - Error updating an mto shipment contains tertiary pickup address no secondary pickup address.", func() {
// Under Test: UpdateMTOShipmentHandler
Expand Down
25 changes: 20 additions & 5 deletions pkg/handlers/primeapiv3/payloads/payload_to_model.go
Original file line number Diff line number Diff line change
Expand Up @@ -262,8 +262,14 @@ func MTOShipmentModelFromCreate(mtoShipment *primev3messages.CreateMTOShipment)
}

if mtoShipment.PpmShipment != nil {
model.PPMShipment = PPMShipmentModelFromCreate(mtoShipment.PpmShipment)
model.PPMShipment.Shipment = *model
ppmShipment, err := PPMShipmentModelFromCreate(mtoShipment.PpmShipment)
if err != nil {
verrs.Add("mtoShipment", err.Error())
return nil, verrs
} else {
model.PPMShipment = ppmShipment
model.PPMShipment.Shipment = *model
}
}

if mtoShipment.BoatShipment != nil {
Expand Down Expand Up @@ -306,9 +312,10 @@ func ShipmentAddressUpdateModel(nonSITAddressUpdate *primev3messages.UpdateShipm
}

// PPMShipmentModelFromCreate model
func PPMShipmentModelFromCreate(ppmShipment *primev3messages.CreatePPMShipment) *models.PPMShipment {
func PPMShipmentModelFromCreate(ppmShipment *primev3messages.CreatePPMShipment) (*models.PPMShipment, *validate.Errors) {
verrs := validate.NewErrors()
if ppmShipment == nil {
return nil
return nil, nil
}

model := &models.PPMShipment{
Expand Down Expand Up @@ -339,6 +346,10 @@ func PPMShipmentModelFromCreate(ppmShipment *primev3messages.CreatePPMShipment)

addressModel = AddressModel(&ppmShipment.TertiaryPickupAddress.Address)
if addressModel != nil {
if AddressModel(&ppmShipment.SecondaryPickupAddress.Address) == nil {
verrs.Add("ppmShipment", "Shipment cannot have a third pickup address without a second pickup address present")
return nil, verrs
}
model.TertiaryPickupAddress = addressModel
model.HasTertiaryPickupAddress = handlers.FmtBool(true)
}
Expand All @@ -356,6 +367,10 @@ func PPMShipmentModelFromCreate(ppmShipment *primev3messages.CreatePPMShipment)

addressModel = AddressModel(&ppmShipment.TertiaryDestinationAddress.Address)
if addressModel != nil {
if AddressModel(&ppmShipment.SecondaryDestinationAddress.Address) == nil {
verrs.Add("ppmShipment", "Shipment cannot have a third destination address without a second destination address present")
return nil, verrs
}
model.TertiaryDestinationAddress = addressModel
model.HasTertiaryDestinationAddress = handlers.FmtBool(true)
}
Expand Down Expand Up @@ -387,7 +402,7 @@ func PPMShipmentModelFromCreate(ppmShipment *primev3messages.CreatePPMShipment)
model.IsActualExpenseReimbursement = ppmShipment.IsActualExpenseReimbursement
}

return model
return model, nil
}

// BoatShipmentModelFromCreate model
Expand Down
57 changes: 56 additions & 1 deletion pkg/handlers/primeapiv3/payloads/payload_to_model_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -762,7 +762,7 @@ func (suite *PayloadsSuite) TestPPMShipmentModelFromCreate() {
IsActualExpenseReimbursement: models.BoolPointer(true),
}

model := PPMShipmentModelFromCreate(&ppmShipment)
model, _ := PPMShipmentModelFromCreate(&ppmShipment)

suite.NotNil(model)
suite.Equal(models.PPMShipmentStatusSubmitted, model.Status)
Expand Down Expand Up @@ -1326,3 +1326,58 @@ func (suite *PayloadsSuite) TestPPMShipmentModelWithOptionalDestinationStreet1Fr
model3 := PPMShipmentModelFromUpdate(&ppmShipmentValidDestinatonStreet1)
suite.Equal(model3.DestinationAddress.StreetAddress1, streetAddress1)
}

func (suite *PayloadsSuite) TestPPMShipmentModelWithThirdDestinationWithoutSecond() {
time := time.Now()
expectedDepartureDate := handlers.FmtDatePtr(&time)

address := models.Address{
StreetAddress1: "some address",
City: "city",
State: "state",
PostalCode: "12345",
}

var pickupAddress primev3messages.Address
var destinationAddress primev3messages.PPMDestinationAddress
var thirdDestinationAddress primev3messages.Address

pickupAddress = primev3messages.Address{
City: &address.City,
PostalCode: &address.PostalCode,
State: &address.State,
StreetAddress1: &address.StreetAddress1,
StreetAddress2: address.StreetAddress2,
StreetAddress3: address.StreetAddress3,
}
destinationAddress = primev3messages.PPMDestinationAddress{
City: &address.City,
PostalCode: &address.PostalCode,
State: &address.State,
StreetAddress1: models.StringPointer(""), // empty string
StreetAddress2: address.StreetAddress2,
StreetAddress3: address.StreetAddress3,
}
thirdDestinationAddress = primev3messages.Address{
City: &address.City,
PostalCode: &address.PostalCode,
State: &address.State,
StreetAddress1: models.StringPointer(""), // empty string
StreetAddress2: address.StreetAddress2,
StreetAddress3: address.StreetAddress3,
}

ppmShipment := primev3messages.CreatePPMShipment{
ExpectedDepartureDate: expectedDepartureDate,
PickupAddress: struct{ primev3messages.Address }{pickupAddress},
DestinationAddress: struct {
primev3messages.PPMDestinationAddress
}{destinationAddress},
TertiaryDestinationAddress: struct{ primev3messages.Address }{thirdDestinationAddress},
}

model, err := PPMShipmentModelFromCreate(&ppmShipment)

suite.Error(err)
suite.Nil(model)
}
Original file line number Diff line number Diff line change
Expand Up @@ -89,13 +89,17 @@ const ApprovedRequestedShipments = ({
const [enableBoat, setEnableBoat] = useState(false);
const [enableMobileHome, setEnableMobileHome] = useState(false);
const [enableUB, setEnableUB] = useState(false);
const [enableNTS, setEnableNTS] = useState(false);
const [enableNTSR, setEnableNTSR] = useState(false);
const [isOconusMove, setIsOconusMove] = useState(false);

useEffect(() => {
const fetchData = async () => {
setEnableBoat(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.BOAT));
setEnableMobileHome(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.MOBILE_HOME));
setEnableUB(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.UNACCOMPANIED_BAGGAGE));
setEnableNTS(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.NTS));
setEnableNTSR(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.NTSR));
};
fetchData();
}, []);
Expand All @@ -117,8 +121,8 @@ const ApprovedRequestedShipments = ({
HHG
</option>
<option value={SHIPMENT_OPTIONS_URL.PPM}>PPM</option>
<option value={SHIPMENT_OPTIONS_URL.NTS}>NTS</option>
<option value={SHIPMENT_OPTIONS_URL.NTSrelease}>NTS-release</option>
{enableNTS && <option value={SHIPMENT_OPTIONS_URL.NTS}>NTS</option>}
{enableNTSR && <option value={SHIPMENT_OPTIONS_URL.NTSrelease}>NTS-release</option>}
{enableBoat && <option value={SHIPMENT_OPTIONS_URL.BOAT}>Boat</option>}
{enableMobileHome && <option value={SHIPMENT_OPTIONS_URL.MOBILE_HOME}>Mobile Home</option>}
{enableUB && isOconusMove && <option value={SHIPMENT_OPTIONS_URL.UNACCOMPANIED_BAGGAGE}>UB</option>}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,17 @@ const SubmittedRequestedShipments = ({
const [enableBoat, setEnableBoat] = useState(false);
const [enableMobileHome, setEnableMobileHome] = useState(false);
const [enableUB, setEnableUB] = useState(false);
const [enableNTS, setEnableNTS] = useState(false);
const [enableNTSR, setEnableNTSR] = useState(false);
const [isOconusMove, setIsOconusMove] = useState(false);

useEffect(() => {
const fetchData = async () => {
setEnableBoat(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.BOAT));
setEnableMobileHome(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.MOBILE_HOME));
setEnableUB(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.UNACCOMPANIED_BAGGAGE));
setEnableNTS(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.NTS));
setEnableNTSR(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.NTSR));
};
fetchData();
}, []);
Expand Down Expand Up @@ -136,8 +140,8 @@ const SubmittedRequestedShipments = ({
HHG
</option>
<option value={SHIPMENT_OPTIONS_URL.PPM}>PPM</option>
<option value={SHIPMENT_OPTIONS_URL.NTS}>NTS</option>
<option value={SHIPMENT_OPTIONS_URL.NTSrelease}>NTS-release</option>
{enableNTS && <option value={SHIPMENT_OPTIONS_URL.NTS}>NTS</option>}
{enableNTSR && <option value={SHIPMENT_OPTIONS_URL.NTSrelease}>NTS-release</option>}
{enableBoat && <option value={SHIPMENT_OPTIONS_URL.BOAT}>Boat</option>}
{enableMobileHome && <option value={SHIPMENT_OPTIONS_URL.MOBILE_HOME}>Mobile Home</option>}
{enableUB && isOconusMove && <option value={SHIPMENT_OPTIONS_URL.UNACCOMPANIED_BAGGAGE}>UB</option>}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ const ServicesCounselingMoveDetails = ({
const [enableBoat, setEnableBoat] = useState(false);
const [enableMobileHome, setEnableMobileHome] = useState(false);
const [enableUB, setEnableUB] = useState(false);
const [enableNTS, setEnableNTS] = useState(false);
const [enableNTSR, setEnableNTSR] = useState(false);
const [isOconusMove, setIsOconusMove] = useState(false);
const [errorMessage, setErrorMessage] = useState(null);

Expand Down Expand Up @@ -166,6 +168,8 @@ const ServicesCounselingMoveDetails = ({
setEnableBoat(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.BOAT));
setEnableMobileHome(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.MOBILE_HOME));
setEnableUB(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.UNACCOMPANIED_BAGGAGE));
setEnableNTS(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.NTS));
setEnableNTSR(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.NTSR));
};
fetchData();
}, []);
Expand Down Expand Up @@ -632,8 +636,8 @@ const ServicesCounselingMoveDetails = ({
HHG
</option>
<option value={SHIPMENT_OPTIONS_URL.PPM}>PPM</option>
<option value={SHIPMENT_OPTIONS_URL.NTS}>NTS</option>
<option value={SHIPMENT_OPTIONS_URL.NTSrelease}>NTS-release</option>
{enableNTS && <option value={SHIPMENT_OPTIONS_URL.NTS}>NTS</option>}
{enableNTSR && <option value={SHIPMENT_OPTIONS_URL.NTSrelease}>NTS-release</option>}
{enableBoat && <option value={SHIPMENT_OPTIONS_URL.BOAT}>Boat</option>}
{enableMobileHome && <option value={SHIPMENT_OPTIONS_URL.MOBILE_HOME}>Mobile Home</option>}
{enableUB && isOconusMove && <option value={SHIPMENT_OPTIONS_URL.UNACCOMPANIED_BAGGAGE}>UB</option>}
Expand Down

0 comments on commit 93cec22

Please sign in to comment.