You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2025/09/10 09:04:46 UTC
(sling-samples) 22/29: Restore comprehensive RatingPostServlet test functionality
This is an automated email from the ASF dual-hosted git repository.
cziegeler pushed a commit to branch appmod/java-upgrade-20250910060318
in repository https://gitbox.apache.org/repos/asf/sling-samples.git
commit d04f7e8f3f622e9b7609ef27cc5cded90447101e
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Wed Sep 10 09:23:30 2025 +0200
Restore comprehensive RatingPostServlet test functionality
---
.../ratings/impl/RatingPostServletTest.java | 71 ++++++++++++++++++++--
1 file changed, 67 insertions(+), 4 deletions(-)
diff --git a/slingshot/src/test/java/org/apache/sling/sample/slingshot/ratings/impl/RatingPostServletTest.java b/slingshot/src/test/java/org/apache/sling/sample/slingshot/ratings/impl/RatingPostServletTest.java
index b01dcfe..784281c 100644
--- a/slingshot/src/test/java/org/apache/sling/sample/slingshot/ratings/impl/RatingPostServletTest.java
+++ b/slingshot/src/test/java/org/apache/sling/sample/slingshot/ratings/impl/RatingPostServletTest.java
@@ -18,13 +18,27 @@
*/
package org.apache.sling.sample.slingshot.ratings.impl;
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.sample.slingshot.ratings.RatingsService;
+import org.apache.sling.sample.slingshot.ratings.RatingsUtil;
import org.apache.sling.testing.mock.sling.junit.SlingContext;
import org.junit.Rule;
import org.junit.Test;
-import org.mockito.Mockito;
import static org.junit.Assert.assertNotNull;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyDouble;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
public class RatingPostServletTest {
@@ -32,13 +46,62 @@ public class RatingPostServletTest {
public final SlingContext context = new SlingContext();
@Test
+ @SuppressWarnings("deprecation") // Using deprecated Sling API for backward compatibility testing
public void successfulSave() throws Exception {
+
+ // Mock the RatingsService
+ RatingsService ratingsService = mock(RatingsService.class);
+ when(ratingsService.getRating(any(Resource.class))).thenReturn(4.5);
+
+ // Mock the ResourceResolverFactory
+ ResourceResolverFactory resourceResolverFactory = mock(ResourceResolverFactory.class);
+ ResourceResolver resourceResolver = mock(ResourceResolver.class);
+ when(resourceResolverFactory.getServiceResourceResolver(any())).thenReturn(resourceResolver);
+
+ // Create test resource
+ Resource testResource = context.create().resource("/content/slingshot/users/test/entries/entry1");
+ when(resourceResolver.getResource(anyString())).thenReturn(testResource);
+
+ // Register services
+ context.registerService(RatingsService.class, ratingsService);
+ context.registerService(ResourceResolverFactory.class, resourceResolverFactory);
- context.registerService(RatingsService.class, Mockito.mock(RatingsService.class));
-
+ // Create and register the servlet
RatingPostServlet servlet = context.registerInjectActivateService(new RatingPostServlet());
- // Just verify the servlet can be instantiated and registered
+ // Verify the servlet can be instantiated and registered
assertNotNull(servlet);
+
+ // Create mock request and response
+ SlingHttpServletRequest request = mock(SlingHttpServletRequest.class);
+ SlingHttpServletResponse response = mock(SlingHttpServletResponse.class);
+
+ // Set up request parameters
+ when(request.getParameter(RatingsUtil.PROPERTY_RATING)).thenReturn("5.0");
+ when(request.getRemoteUser()).thenReturn("testuser");
+ when(request.getResource()).thenReturn(testResource);
+
+ // Set up response writer
+ StringWriter stringWriter = new StringWriter();
+ PrintWriter writer = new PrintWriter(stringWriter);
+ when(response.getWriter()).thenReturn(writer);
+
+ // Execute the servlet POST method
+ servlet.doPost(request, response);
+
+ // Verify interactions
+ verify(ratingsService).setRating(any(Resource.class), anyString(), anyDouble());
+ verify(ratingsService).getRating(any(Resource.class));
+ verify(response).setContentType("application/json");
+ verify(response).setCharacterEncoding("utf-8");
+ verify(response).setStatus(200);
+
+ // Verify the JSON response contains the rating
+ writer.flush();
+ String responseContent = stringWriter.toString();
+ assertNotNull(responseContent);
+ // Basic check that response contains rating JSON structure
+ assert(responseContent.contains("rating"));
+ assert(responseContent.contains("4.5"));
}
}