diff --git a/server/src/html/garden/vote.rs b/server/src/html/garden/vote.rs
index 8e6e1a76e1932a43dd3ce06256c1515201ee41b9..9ae2073cdfc89a6a3ced891cb5f3fb5eb41c9aa0 100644
--- a/server/src/html/garden/vote.rs
+++ b/server/src/html/garden/vote.rs
@@ -25,7 +25,7 @@ use crate::{
middleware::canonical_view_url,
path_types::ItemId,
reducer::{ContentState, ScopeId},
- scope_rank::{comparable_items, is_comparable_item, suggest_next_pair_in_pool},
+ scope_rank::{comparable_items, suggest_next_pair_in_pool},
state::AppState,
};
@@ -464,13 +464,6 @@ async fn vote_compare_inner(
let reduced = state.reduced.read().await;
let content = content_for_garden_view(&reduced, &nav.scope());
- if !is_comparable_item(content, &left) || !is_comparable_item(content, &right) {
- return (
- StatusCode::BAD_REQUEST,
- "comparison items must be defined with non-empty bodies; folder paths are scopes, not vote targets",
- )
- .into_response();
- }
let viewer = optional_principal(&headers, &jar, &reduced);
let logged_in = viewer.is_some();
let can_post = match &nav.scope() {
diff --git a/test/integration.clj b/test/integration.clj
index 179e5f6b1f48f06ec074085fade14a61800e1012..933fa3e129a416dca780734af55db59d1bc4dcd9 100644
--- a/test/integration.clj
+++ b/test/integration.clj
@@ -305,20 +305,23 @@
(is (zero? (:exit grank-result)) "cli garden rank exits 0")
(bind grank-resp (json/parse-string (:out grank-result) true))
(is (pos? (:ranked_total grank-resp)) "global rank has ranked items")
- (is (not-empty (:items grank-resp)) "global rank returns items")
- (is (str/ends-with? (:item (first (:items grank-resp))) "languages/rust")
- (str "rust is #1 globally (got " (:item (first (:items grank-resp))) ")"))
+ (bind grank-items (vec (mapcat :ranking (:components grank-resp))))
+ (is (not-empty grank-items) "global rank returns ranked components")
+ (is (str/ends-with? (:item (first grank-items)) "languages/rust")
+ (str "rust is first in its component (got " (:item (first grank-items)) ")"))
(bind grank-pct-result (common/run-cli cli-bin base-url ["public" "garden" "rank" "--percent" "--limit" "2" "--json"]))
(is (zero? (:exit grank-pct-result)) "cli garden rank --percent --limit 2 exits 0")
(bind grank-pct-resp (json/parse-string (:out grank-pct-result) true))
- (is (= 2 (count (:items grank-pct-resp))) "limit=2 returns 2 items")
- (is (= 100.0 (:percent (first (:items grank-pct-resp)))) "top item has 100.0% score")
+ (bind grank-pct-items (vec (mapcat :ranking (:components grank-pct-resp))))
+ (is (= 2 (count grank-pct-items)) "limit=2 returns 2 items")
+ (is (= 100.0 (:percent (first grank-pct-items))) "top item has 100.0% score")
(bind grank-off-result (common/run-cli cli-bin base-url ["public" "garden" "rank" "--limit" "1" "--offset" "1" "--json"]))
(is (zero? (:exit grank-off-result)) "cli garden rank --offset 1 exits 0")
(bind grank-off-resp (json/parse-string (:out grank-off-result) true))
- (is (= (:item (second (:items grank-pct-resp))) (:item (first (:items grank-off-resp))))
+ (bind grank-off-items (vec (mapcat :ranking (:components grank-off-resp))))
+ (is (= (:item (second grank-pct-items)) (:item (first grank-off-items)))
"offset=1 aligns with page 0 item index 1")
;; 10. rank history endpoint