Skip to content

Commit 005092f

Browse files
Added cancel_shift_for_a_talent unit test
1 parent efbc235 commit 005092f

File tree

4 files changed

+45
-2
lines changed

4 files changed

+45
-2
lines changed

src/main/java/com/zenjob/challenge/repository/ShiftRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.zenjob.challenge.entity.Shift;
44
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.data.jpa.repository.Query;
6+
import org.springframework.data.repository.query.Param;
57
import org.springframework.stereotype.Repository;
68

79
import java.util.List;
@@ -10,4 +12,5 @@
1012
@Repository
1113
public interface ShiftRepository extends JpaRepository<Shift, UUID> {
1214
List<Shift> findAllByJobId(UUID jobId);
15+
List<Shift> findAllByTalentId(UUID talentId);
1316
}

src/main/java/com/zenjob/challenge/service/IJobService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@ public interface IJobService {
1616
Optional<Job> getJob(UUID id);
1717
void cancelShift(UUID companyId, UUID shiftId);
1818
Optional<Shift> getShift(UUID id);
19+
void cancelShiftForTalent(UUID companyId, UUID talentId, UUID shiftId);
1920
}

src/main/java/com/zenjob/challenge/service/JobService.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ public List<Shift> getShifts(UUID id) {
5656
return shiftRepository.findAllByJobId(id);
5757
}
5858

59-
public void bookTalent(UUID talent, UUID shiftId) {
59+
public void bookTalent(UUID talentId, UUID shiftId) {
6060
Optional<Shift> shiftById = shiftRepository.findById(shiftId);
61-
shiftById.map(shift -> shiftRepository.save(shift.setTalentId(talent)));
61+
shiftById.map(shift -> shiftRepository.save(shift.setTalentId(talentId)));
6262
}
6363

6464
@Override
@@ -88,4 +88,20 @@ public void cancelShift(UUID companyId, UUID shiftId) {
8888
public Optional<Shift> getShift(UUID id) {
8989
return shiftRepository.findById(id);
9090
}
91+
92+
@Override
93+
public void cancelShiftForTalent(UUID companyId, UUID talentId, UUID shiftId) {
94+
List<Shift> shifts = getShiftsByTalentIdAndCompanyId(talentId, companyId);
95+
shifts.forEach(shift -> {
96+
shift.setTalentId(null);
97+
shiftRepository.save(shift);
98+
});
99+
}
100+
101+
private List<Shift> getShiftsByTalentIdAndCompanyId(UUID talentId, UUID companyId) {
102+
List<Shift> shifts = shiftRepository.findAllByTalentId(talentId);
103+
return shifts.stream()
104+
.filter(shift -> companyId.equals(shift.getJob().getCompanyId()))
105+
.collect(Collectors.toList());
106+
}
91107
}

src/test/java/com/zenjob/challenge/JobServiceTests.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import java.time.LocalDate;
1616
import java.time.ZoneId;
1717
import java.time.ZonedDateTime;
18+
import java.util.Optional;
1819
import java.util.UUID;
1920

2021
@SpringBootTest
@@ -146,4 +147,26 @@ public void a_company_can_only_cancel_its_own_shifts() {
146147
Assertions.assertThrows(InvalidActionException.class, () ->
147148
jobService.cancelShift(companyId, firstShift.getId()));
148149
}
150+
151+
@Test
152+
public void cancel_shift_for_a_talent() {
153+
// given
154+
LocalDate startDate = LocalDate.now();
155+
LocalDate endDate = LocalDate.now().plusDays(5);
156+
Job job = jobService.createJob(UUID.randomUUID(), startDate, endDate);
157+
Shift firstShift = job.getShifts().get(0);
158+
Shift secondShift = job.getShifts().get(1);
159+
UUID talentId = UUID.randomUUID();
160+
jobService.bookTalent(talentId, firstShift.getId());
161+
jobService.bookTalent(talentId, secondShift.getId());
162+
163+
// when
164+
jobService.cancelShiftForTalent(job.getCompanyId(), talentId, firstShift.getId());
165+
166+
// then
167+
Optional<Shift> firstShiftById = jobService.getShift(firstShift.getId());
168+
Optional<Shift> secondShiftById = jobService.getShift(secondShift.getId());
169+
Assertions.assertNull(firstShiftById.get().getTalentId());
170+
Assertions.assertNull(secondShiftById.get().getTalentId());
171+
}
149172
}

0 commit comments

Comments
 (0)