Handle expected case of empty flux in message deletion
This commit is contained in:
		
							parent
							
								
									c10fda8363
								
							
						
					
					
						commit
						aa829af43b
					
				| 
						 | 
				
			
			@ -175,9 +175,9 @@ public class MessagesDynamoDb extends AbstractDynamoDbStore {
 | 
			
		|||
          }
 | 
			
		||||
          return null;
 | 
			
		||||
        })
 | 
			
		||||
        .last()
 | 
			
		||||
        .toFuture()
 | 
			
		||||
        .thenApply(Optional::ofNullable);
 | 
			
		||||
        .map(Optional::ofNullable)
 | 
			
		||||
        .last(Optional.empty()) // if the flux is empty, last() will throw without a default
 | 
			
		||||
        .toFuture();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public CompletableFuture<Optional<MessageProtos.Envelope>> deleteMessage(final UUID destinationAccountUuid,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,6 +11,7 @@ import com.google.protobuf.ByteString;
 | 
			
		|||
import java.time.Duration;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Optional;
 | 
			
		||||
import java.util.Random;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
import java.util.concurrent.ExecutorService;
 | 
			
		||||
| 
						 | 
				
			
			@ -240,15 +241,25 @@ class MessagesDynamoDbTest {
 | 
			
		|||
    assertThat(load(secondDestinationUuid, 1, MessagesDynamoDb.RESULT_SET_CHUNK_SIZE)).isNotNull()
 | 
			
		||||
        .hasSize(1).element(0).isEqualTo(MESSAGE2);
 | 
			
		||||
 | 
			
		||||
    messagesDynamoDb.deleteMessageByDestinationAndGuid(secondDestinationUuid,
 | 
			
		||||
    final Optional<MessageProtos.Envelope> deletedMessage = messagesDynamoDb.deleteMessageByDestinationAndGuid(
 | 
			
		||||
        secondDestinationUuid,
 | 
			
		||||
        UUID.fromString(MESSAGE2.getServerGuid())).get(5, TimeUnit.SECONDS);
 | 
			
		||||
 | 
			
		||||
    assertThat(deletedMessage).isPresent();
 | 
			
		||||
 | 
			
		||||
    assertThat(load(destinationUuid, 1, MessagesDynamoDb.RESULT_SET_CHUNK_SIZE)).isNotNull().hasSize(1)
 | 
			
		||||
        .element(0).isEqualTo(MESSAGE1);
 | 
			
		||||
    assertThat(load(destinationUuid, 2, MessagesDynamoDb.RESULT_SET_CHUNK_SIZE)).isNotNull().hasSize(1)
 | 
			
		||||
        .element(0).isEqualTo(MESSAGE3);
 | 
			
		||||
    assertThat(load(secondDestinationUuid, 1, MessagesDynamoDb.RESULT_SET_CHUNK_SIZE)).isNotNull()
 | 
			
		||||
        .isEmpty();
 | 
			
		||||
 | 
			
		||||
    final Optional<MessageProtos.Envelope> alreadyDeletedMessage = messagesDynamoDb.deleteMessageByDestinationAndGuid(
 | 
			
		||||
        secondDestinationUuid,
 | 
			
		||||
        UUID.fromString(MESSAGE2.getServerGuid())).get(5, TimeUnit.SECONDS);
 | 
			
		||||
 | 
			
		||||
    assertThat(alreadyDeletedMessage).isNotPresent();
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @Test
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue