Skip to content

Commit

Permalink
validated contractId in view contract milestones command
Browse files Browse the repository at this point in the history
  • Loading branch information
HusseinYasser committed May 18, 2024
1 parent 7a15e1f commit 6db364e
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -1,17 +1,29 @@
package com.workup.contracts.commands;

import com.workup.contracts.models.Contract;
import com.workup.contracts.models.ContractMilestone;
import com.workup.shared.commands.contracts.Milestone;
import com.workup.shared.commands.contracts.requests.ViewContractMilestonesRequest;
import com.workup.shared.commands.contracts.responses.ViewContractMilestonesResponse;
import com.workup.shared.enums.HttpStatusCode;
import java.util.List;
import java.util.Optional;
import java.util.UUID;

public class ViewContractMilestonesCommand
extends ContractCommand<ViewContractMilestonesRequest, ViewContractMilestonesResponse> {

@Override
public ViewContractMilestonesResponse Run(ViewContractMilestonesRequest request) {

Optional<Contract> contract =
contractRepository.findById(UUID.fromString(request.getContractId()));
if (contract.isEmpty())
return ViewContractMilestonesResponse.builder()
.withErrorMessage("Invalid contract id")
.withStatusCode(HttpStatusCode.BAD_REQUEST)
.build();

List<ContractMilestone> milestones =
contractMilestoneRepository.findByContractId(request.getContractId());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.workup.contracts.repositories.ContractRepository;
import com.workup.contracts.repositories.TerminationRequestRepository;
import java.text.ParseException;
import org.junit.Ignore;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.amqp.core.AmqpTemplate;
Expand Down Expand Up @@ -146,14 +147,14 @@ void EvaluateMilestoneTest2() {
evaluateMilestoneTests.wrongMilestoneState(template);
}

/*@Test
@Ignore
void EvaluateMilestoneTest3() {
try {
evaluateMilestoneTests.successTest(template);
} catch (Exception e) {
ContractsLogger.print("Error Occurred in EvaluateMilestoneTest3", LoggingLevel.TRACE);
}
}*/
}

@Test
void GetContractTest1() {
Expand Down Expand Up @@ -198,10 +199,15 @@ void InitiateContractTest() {
}

@Test
void ViewContractMilestonesTest() {
void ViewContractMilestonesTest1() {
viewContractMilestonesTests.successTest(template);
}

@Test
void ViewContractMilestonesTest2() {
viewContractMilestonesTests.invalidContract(template);
}

@Test
void GetPendingTerminationsTest1() {
getPendingTerminationsTests.invalidContract(template);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,11 @@
import com.workup.contracts.models.ContractMilestone;
import com.workup.contracts.repositories.ContractMilestoneRepository;
import com.workup.shared.commands.contracts.Milestone;
import com.workup.shared.commands.contracts.requests.InitiateContractRequest;
import com.workup.shared.commands.contracts.requests.ViewContractMilestonesRequest;
import com.workup.shared.commands.contracts.responses.InitiateContractResponse;
import com.workup.shared.commands.contracts.responses.ViewContractMilestonesResponse;
import com.workup.shared.enums.HttpStatusCode;
import com.workup.shared.enums.ServiceQueueNames;
import java.util.*;
import org.springframework.amqp.core.AmqpTemplate;
Expand All @@ -17,9 +20,38 @@
public class ViewContractMilestonesTests {
@Autowired ContractMilestoneRepository contractMilestoneRepository;

public void invalidContract(AmqpTemplate template) {
ViewContractMilestonesRequest request =
ViewContractMilestonesRequest.builder()
.withContractId(String.valueOf(UUID.randomUUID()))
.build();

ViewContractMilestonesResponse response =
(ViewContractMilestonesResponse)
template.convertSendAndReceive(ServiceQueueNames.CONTRACTS, request);

assertNotNull(response);
assertEquals(HttpStatusCode.BAD_REQUEST, response.getStatusCode());
}

public void successTest(AmqpTemplate template) {
String contractId = UUID.randomUUID().toString();
Random rand = new Random();

InitiateContractRequest initiateContractRequest =
InitiateContractRequest.builder()
.withClientId(UUID.randomUUID().toString())
.withFreelancerId(UUID.randomUUID().toString())
.withJobId("789")
.withProposalId("bruh")
.withJobTitle("very happy guc worker :)")
.withJobMilestones(new ArrayList<>())
.build();
InitiateContractResponse contractResponse =
(InitiateContractResponse)
template.convertSendAndReceive(ServiceQueueNames.CONTRACTS, initiateContractRequest);
assertNotNull(contractResponse);
String contractId = contractResponse.getContractId();

// create some milestones to be added to the db with same contractId
ArrayList<ContractMilestone> milestones = new ArrayList<>();
for (int i = 0; i < 10; ++i)
Expand All @@ -33,7 +65,7 @@ public void successTest(AmqpTemplate template) {
.build());

contractMilestoneRepository.saveAll(milestones);

// initiate contract with this
ViewContractMilestonesRequest request =
ViewContractMilestonesRequest.builder().withContractId(contractId).build();

Expand Down

0 comments on commit 6db364e

Please sign in to comment.