private List<RequestEntity> applyUserActionsToRequests(List<RequestEntity> requests) { List<UserActionEntity> userActions = mUserActionsRetriever.getAllUserActions(); if (userActions.isEmpty() || requests.isEmpty()) return requests; Collections.sort(requests, mComparator); // sort in order to be able to use binary search List<RequestEntity> updatedRequests = new ArrayList<>(requests); RequestEntity updatedRequest; for (UserActionEntity userAction : userActions) { if (mUserActionsToRequestsApplier.isUserActionAffectingRequest(userAction)) { // find the request affected by user action, and if it is found - apply the action to it int affectedEntityPos = Collections.binarySearch( requests, RequestEntity.getBuilder().setId(userAction.getEntityId()).build(), mComparator); if (affectedEntityPos >= 0) { updatedRequest = mUserActionsToRequestsApplier.applyUserActionToRequest( userAction, requests.get(affectedEntityPos)); updatedRequests.set(affectedEntityPos, updatedRequest); } } } return updatedRequests; }
private RequestEntity closeRequest(CloseRequestUserActionEntity closeRequestUserAction, RequestEntity requestEntity) { if (requestEntity.getClosedBy() != null && !requestEntity.getClosedBy().isEmpty()) { throw new IllegalArgumentException("request already closed"); } if (requestEntity.getPickedUpBy() == null || requestEntity.getPickedUpBy().isEmpty()) { throw new IllegalArgumentException("request is not picked up"); } if (!requestEntity.getPickedUpBy().equals(closeRequestUserAction.getClosedByUserId())) { throw new IllegalArgumentException("closing user must be the same who picked up"); } return RequestEntity.getBuilder(requestEntity) .setClosedBy(closeRequestUserAction.getClosedByUserId()) .setClosedAt(String.valueOf(closeRequestUserAction.getDatetime())) .setClosedComment(closeRequestUserAction.getClosedComment()) .setClosedPictures(closeRequestUserAction.getClosedPictures()) .build(); }
private RequestEntity pickUpRequest(@NonNull PickUpRequestUserActionEntity pickUpRequestUserAction, @NonNull RequestEntity requestEntity) { if (requestEntity.isPickedUp()) { throw new IllegalArgumentException("request already picked up"); } String pickedUpByUserId = pickUpRequestUserAction.getPickedUpByUserId(); return RequestEntity.getBuilder(requestEntity) .setPickedUpBy(pickedUpByUserId) .setPickedUpAt(String.valueOf(pickUpRequestUserAction.getDatetime())) .build(); }
RequestEntity initiallyPickedUpRequest = RequestEntity .getBuilder(RequestEntityProvider.getPickedUpRequestEntity()) .setPickedUpBy(TEST_USER_ID) .build(); assertNotNull(updatedInitiallyNewRequest); assertRequestsEqual(updatedInitiallyNewRequest, RequestEntity.getBuilder(initiallyNewRequest) .setPickedUpBy(pickUpNew.getPickedUpByUserId()) .setPickedUpAt(pickUpNew.getPickedUpAt()) .build()); .setClosedBy(closePickedUp.getClosedByUserId()) .setClosedAt(closePickedUp.getClosedAt()) .setClosedComment(closePickedUp.getClosedComment()) .setClosedPictures(closePickedUp.getClosedPictures()) .setClosedVotes(0) .build()); .setClosedVotes(initiallyClosedRequest.getClosedVotes() + 1) .build());
.setId(tempId) .setCreatedBy(createdBy) .setCreatedAt(IdcDateTimeUtils.getCurrentDateTimeLocalized()) .setCreatedComment(createdComment) .setCreatedPictures(createdPictures) .setLongitude(longitude) .setLatitude(latitude) .build();
@Test public void fetchRequestsAssignedToUser_listenersNotified() { // Arrange RequestEntity pickedUpRequest = RequestEntity.getBuilder(RequestEntityProvider.getPickedUpRequestEntity()) .setPickedUpBy(TEST_USER_ID) .build(); RequestEntity closedRequest = RequestEntity.getBuilder(RequestEntityProvider.getClosedRequestEntity()) .setPickedUpBy(TEST_USER_ID) .build(); List<RequestEntity> assignedToTestUserRequests = Arrays.asList(pickedUpRequest, closedRequest); when(mRequestsRetrieverMock.getRequestsAssignedToUser(TEST_USER_ID)) .thenReturn(assignedToTestUserRequests); // Act SUT.registerListener(mRequestsManagerListenerMock1); SUT.registerListener(mRequestsManagerListenerMock2); SUT.fetchRequestsAssignedToUserAndNotify(TEST_USER_ID); // Assert mThreadPostersTestDouble.join(); verify(mRequestsManagerListenerMock1, times(1)).onRequestsFetched(mRequestsListCaptor.capture()); verify(mRequestsManagerListenerMock2, times(1)).onRequestsFetched(mRequestsListCaptor.capture()); assertEquals(assignedToTestUserRequests, mRequestsListCaptor.getValue()); // param for listener1 assertEquals(assignedToTestUserRequests, mRequestsListCaptor.getValue()); // param for listener2 }
@Test public void fetchAllRequests_listenersNotified() { // Arrange RequestEntity pickedUpRequest = RequestEntity.getBuilder(RequestEntityProvider.getPickedUpRequestEntity()) .setPickedUpBy(TEST_USER_ID) .build(); RequestEntity closedRequest = RequestEntity.getBuilder(RequestEntityProvider.getClosedRequestEntity()) .setPickedUpBy(TEST_USER_ID_2) .build(); List<RequestEntity> allRequests = Arrays.asList(pickedUpRequest, closedRequest); when(mRequestsRetrieverMock.getAllRequests()).thenReturn(allRequests); // Act SUT.registerListener(mRequestsManagerListenerMock1); SUT.registerListener(mRequestsManagerListenerMock2); SUT.fetchAllRequestsAndNotify(); // Assert mThreadPostersTestDouble.join(); verify(mRequestsManagerListenerMock1, times(1)).onRequestsFetched(mRequestsListCaptor.capture()); verify(mRequestsManagerListenerMock2, times(1)).onRequestsFetched(mRequestsListCaptor.capture()); assertEquals(allRequests, mRequestsListCaptor.getValue()); // param for listener1 assertEquals(allRequests, mRequestsListCaptor.getValue()); // param for listener2 }
requestEntityBuilder.setCreatedVotes(requestEntity.getCreatedVotes() + 1); break; case VoteForRequestUserActionEntity.VOTE_DOWN_CREATED: requestEntityBuilder.setCreatedVotes(requestEntity.getCreatedVotes() - 1); break; case VoteForRequestUserActionEntity.VOTE_UP_CLOSED: requestEntityBuilder.setClosedVotes(requestEntity.getClosedVotes() + 1); break; case VoteForRequestUserActionEntity.VOTE_DOWN_CLOSED: requestEntityBuilder.setClosedVotes(requestEntity.getClosedVotes() - 1); break; default: return requestEntityBuilder.build();
@Test public void compare_returnsCorrectValues() throws Exception { // Arrange RequestEntity entity1 = RequestEntity.getBuilder().setId("10").build(); RequestEntity entity2 = RequestEntity.getBuilder().setId("20").build(); RequestEntity entity3 = RequestEntity.getBuilder().setId("30").build(); // Act int result1 = SUT.compare(entity1, entity2); int result2 = SUT.compare(entity2, entity3); int result3 = SUT.compare(entity3, entity1); int result4 = SUT.compare(entity1, entity1); // Assert assertTrue(result1 < 0); assertTrue(result2 < 0); assertTrue(result3 > 0); assertTrue(result4 == 0); } }
public static RequestEntityBuilder getBuilder() { return new RequestEntityBuilder(); }
public static RequestEntityBuilder getBuilder(@NonNull RequestEntity requestEntity) { return new RequestEntityBuilder(requestEntity); }
private RequestEntity addReverseGeocodedLocation(RequestEntity request) { String location = mReverseGeocoder.getFromLocation( request.getLatitude(), request.getLongitude(), Locale.getDefault()); if (location != null) { return RequestEntity.getBuilder(request).setLocation(location).build(); } else { return request; } }