@Test
public void returnsModelWithRenamedStringShape() {

    ShapeId fromStringId = ShapeId.from("ns.foo#String");
    ShapeId containerId = ShapeId.from("ns.foo#Container");
    ShapeId keyId = ShapeId.from("ns.foo#Container$key");
    ShapeId valueId = ShapeId.from("ns.foo#Container$value");
    StringShape target = StringShape.builder().id(fromStringId).build();
    MemberShape keyMember = MemberShape.builder().id(keyId).target(fromStringId).build();
    MemberShape valueMember = MemberShape.builder().id(valueId).target(fromStringId).build();
    MapShape container = MapShape.builder().id(containerId).key(keyMember).value(valueMember).build();
    Model model = Model.builder()
            .addShapes(target, keyMember, valueMember, container)
            .build();
    ModelTransformer transformer = ModelTransformer.create();
    ShapeId toStringId = ShapeId.from("ns.bar#String");
    Map<ShapeId, ShapeId> renamed = new HashMap<>();
    renamed.put(fromStringId, toStringId );
    Model result = transformer.renameShapes(model, renamed);
    assertTrue(result.getShape(toStringId).isPresent());
    assertFalse(result.getShape(fromStringId).isPresent());
}