bdemers commented on code in PR #448:
URL: https://github.com/apache/directory-scimple/pull/448#discussion_r1424365505


##########
scim-core/src/test/java/org/apache/directory/scim/core/repository/PatchHandlerTest.java:
##########
@@ -465,6 +467,39 @@ public void deleteItemWithComplexFilter() throws 
FilterParseException {
     ));
   }
 
+  @Test
+  public void addItemToCollection() throws FilterParseException {
+    PatchOperation op = new PatchOperation();
+    op.setOperation(ADD);
+    op.setPath(PatchOperationPath.fromString("members"));
+    op.setValue(List.of(
+      Map.of(
+        "value", "9876",
+        "display", "testUser2",
+        "type", "User")
+    ));
+
+    ScimGroup updatedGroup = patchHandler.apply(group(), List.of(op));
+    assertThat(updatedGroup.getMembers().size()).isEqualTo(3);
+  }
+
+  /**
+   * This test covers Azure-style remove member operations, where a value is
+   * specified in the operation body, rather than in the path.
+   * For example: { "op": "remove", "path": "members", "value": [ { "value": 
"1234" } ] }
+   */
+  @Test
+  public void removeItemFromCollection() throws FilterParseException {
+    PatchOperation op = new PatchOperation();
+    op.setOperation(REMOVE);
+    op.setPath(PatchOperationPath.fromString("members"));
+    op.setValue(List.of(Map.of("value", "1234")));
+
+    ScimGroup updatedGroup = patchHandler.apply(group(), List.of(op));
+    assertThat(updatedGroup.getMembers()).isNotNull();
+    assertThat(updatedGroup.getMembers().size()).isEqualTo(1);

Review Comment:
   As an aside, (and not part of this PR, selfishly asking for #435), do you 
think creating custom AssertJ assertions would be helpful? or do you think it's 
more readable to have multiple assertions?
   
   Maybe something, that would read like:
   
   ```java
   assertThat(updatedGroup)
       .hasMemberCount(3)
       .containsMember(<expected>)
   ```
   
   Mostly thinking out loud, we have a util method in PatchGeneratorTest, but 
I've been thinking the messages would be more clear with custom assertions.
   
https://github.com/apache/directory-scimple/blob/ebb01f4d022fda36f9d28315ad0ac1d9427f9ac2/scim-core/src/test/java/org/apache/directory/scim/core/repository/PatchGeneratorTest.java#L754-L762
   
   (I've been using Hamcrest for years, so its taken longer than it should have 
to get comfortable with AssertJ 🤣 )



##########
scim-core/src/test/java/org/apache/directory/scim/core/repository/PatchHandlerTest.java:
##########
@@ -465,6 +467,39 @@ public void deleteItemWithComplexFilter() throws 
FilterParseException {
     ));
   }
 
+  @Test
+  public void addItemToCollection() throws FilterParseException {
+    PatchOperation op = new PatchOperation();
+    op.setOperation(ADD);
+    op.setPath(PatchOperationPath.fromString("members"));
+    op.setValue(List.of(
+      Map.of(
+        "value", "9876",
+        "display", "testUser2",
+        "type", "User")
+    ));
+
+    ScimGroup updatedGroup = patchHandler.apply(group(), List.of(op));
+    assertThat(updatedGroup.getMembers().size()).isEqualTo(3);
+  }
+
+  /**
+   * This test covers Azure-style remove member operations, where a value is
+   * specified in the operation body, rather than in the path.
+   * For example: { "op": "remove", "path": "members", "value": [ { "value": 
"1234" } ] }
+   */
+  @Test
+  public void removeItemFromCollection() throws FilterParseException {
+    PatchOperation op = new PatchOperation();
+    op.setOperation(REMOVE);
+    op.setPath(PatchOperationPath.fromString("members"));
+    op.setValue(List.of(Map.of("value", "1234")));
+
+    ScimGroup updatedGroup = patchHandler.apply(group(), List.of(op));
+    assertThat(updatedGroup.getMembers()).isNotNull();
+    assertThat(updatedGroup.getMembers().size()).isEqualTo(1);

Review Comment:
   As an aside, (and not part of this PR, selfishly asking for #435), do you 
think creating custom AssertJ assertions would be helpful? or do you think it's 
more readable to have multiple assertions?
   
   Maybe something, that would read like:
   
   ```java
   assertThat(updatedGroup)
       .hasMemberCount(3)
       .containsMember(<expected>)
   ```
   
   Mostly thinking out loud, we have a util method in PatchGeneratorTest, but 
I've been thinking the messages would be more clear with custom assertions.
   
https://github.com/apache/directory-scimple/blob/ebb01f4d022fda36f9d28315ad0ac1d9427f9ac2/scim-core/src/test/java/org/apache/directory/scim/core/repository/PatchGeneratorTest.java#L754-L762
   
   (I've been using Hamcrest for years, so its taken longer than it should have 
to get comfortable with AssertJ 🤣 )



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@directory.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@directory.apache.org
For additional commands, e-mail: dev-h...@directory.apache.org

Reply via email to