From a9c75b8e992038e68912db99a7c307ab45e4f2e9 Mon Sep 17 00:00:00 2001 From: ITQ Date: Fri, 22 May 2026 19:57:54 +0300 Subject: [PATCH] tests(contract): fixed sync test --- .../controllers/JellyfinPluginContractTest.kt | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/test/kotlin/com/project/movienight/controllers/JellyfinPluginContractTest.kt b/src/test/kotlin/com/project/movienight/controllers/JellyfinPluginContractTest.kt index d041f0c..0a98a25 100644 --- a/src/test/kotlin/com/project/movienight/controllers/JellyfinPluginContractTest.kt +++ b/src/test/kotlin/com/project/movienight/controllers/JellyfinPluginContractTest.kt @@ -1,6 +1,7 @@ package com.project.movienight.controllers import com.fasterxml.jackson.databind.ObjectMapper +import org.hamcrest.Matchers.hasItem import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc @@ -38,17 +39,18 @@ class JellyfinPluginContractTest { fun `plugin sync payload creates mapped user and film`() { postSyncPayload() + val syncedRecommendationTitlePath = "$[?(@.jellyfinItemId == '$jellyfinItemId')].title" + val syncedRecommendationWatchUrlPath = "$[?(@.jellyfinItemId == '$jellyfinItemId')].watchUrl" + val expectedWatchUrl = "https://jellyfin.example.test/web/#/details?id=$jellyfinItemId" + mockMvc .perform( get("/api/integrations/jellyfin/users/$dashedJellyfinUserId/recommendations") .header("X-MovieNight-Plugin-Token", "test-token"), ).andExpect(status().isOk) - .andExpect(jsonPath("$[0].title").value("Jellyfin Contract Film")) - .andExpect(jsonPath("$[0].jellyfinItemId").value(jellyfinItemId)) - .andExpect( - jsonPath("$[0].watchUrl") - .value("https://jellyfin.example.test/web/#/details?id=$jellyfinItemId"), - ) + .andExpect(jsonPath("$[*].jellyfinItemId").value(hasItem(jellyfinItemId))) + .andExpect(jsonPath(syncedRecommendationTitlePath).value(hasItem("Jellyfin Contract Film"))) + .andExpect(jsonPath(syncedRecommendationWatchUrlPath).value(hasItem(expectedWatchUrl))) mockMvc .perform(