@Test public void pendingOperation() { com.google.longrunning.Operation proto = newBuilder() .setName("op1") .setDone(false) .setMetadata(Any.pack(CreateDatabaseMetadata.newBuilder().setDatabase(NAME).build())) .build(); Operation<Database, String> op = Operation.create(rpc, proto, new ParserImpl()); assertThat(op.getName()).isEqualTo("op1"); assertThat(op.isDone()).isFalse(); assertThat(op.isSuccessful()).isFalse(); assertThat(op.getMetadata()).isEqualTo(NAME); assertThat(op.getResult()).isNull(); }
@Test public void testMetadataTransformer() { MetadataTransformer<Money> transformer = MetadataTransformer.create(Money.class); Money inputMoney = Money.newBuilder().setCurrencyCode("USD").build(); OperationSnapshot operationSnapshot = GrpcOperationSnapshot.create( Operation.newBuilder().setMetadata(Any.pack(inputMoney)).build()); Truth.assertThat(transformer.apply(operationSnapshot)).isEqualTo(inputMoney); }
@Test public void testMetadataTransformer_mismatchedTypes() { thrown.expect(ApiException.class); thrown.expectMessage("Failed to unpack object"); MetadataTransformer<Money> transformer = MetadataTransformer.create(Money.class); Money inputMoney = Money.newBuilder().setCurrencyCode("USD").build(); Status status = Status.newBuilder().setCode(Code.OK.value()).build(); OperationSnapshot operationSnapshot = GrpcOperationSnapshot.create( Operation.newBuilder() .setMetadata(Any.pack(Color.getDefaultInstance())) .setError(status) .build()); Truth.assertThat(transformer.apply(operationSnapshot)).isEqualTo(inputMoney); } }
private Operation getOperation(String name, Message response, Message metadata, boolean done) { Operation.Builder builder = Operation.newBuilder().setName(name).setDone(done); if (response instanceof com.google.rpc.Status) { builder.setError((com.google.rpc.Status) response); } else if (response != null) { builder.setResponse(Any.pack(response)); } if (metadata != null) { builder.setMetadata(Any.pack(metadata)); } return builder.build(); }