• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

decentraland / marketplace-server / 32253422318
62%

Build:
DEFAULT BRANCH: main
Ran 19 Aug 2026 12:49PM UTC
Jobs 1
Files 162
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

19 Aug 2026 12:35PM UTC coverage: 62.425% (+0.2%) from 62.243%
32253422318

push

github

web-flow
feat: wearableGender filter on /v3/catalog/unified (#391)

The unified feed already reports a per-row `gender` (derived from the item's
body shapes), but never filtered on it: the handler doesn't read
`wearableGender`, so a caller sending it gets an unfiltered page that looks
filtered. /v1/items and /v2/catalog both honour the param, so the difference is
invisible until someone compares results.

That matters to an avatar-driven client: equipping a wearable that only ships
the other body shape leaves that slot naked, and the alternative — dropping
those rows client-side — returns short pages and an overstated total, since the
feed is paginated and reports its own count. Same reasoning the `listingType`
filter already documents.

The WHERE reuses the column, COALESCE and ::text[] cast of `genderExpr`, so
what the filter selects and what the row reports as `gender` cannot disagree.
`@>` is "declares all of these", which makes `wearableGender=male` mean
"wearable BY a male avatar" (male-exclusive plus unisex) rather than
male-exclusive only.

Two prior implementations disagree on the edge cases, so this follows the more
complete one:

- UNISEX asks for both body shapes, as in ports/items (ports/catalog ignores
  it). It is then the same request as MALE + FEMALE, which is exactly the set
  the response labels `unisex`.
- Both encodings are accepted: this feed's comma-separated lists (`rarity`,
  `wearableCategory`) and the repeated `&wearableGender=` form /v1/items takes.
  Reaching for the wrong one is what silently returns an unfiltered page.

Unknown values are dropped rather than passed through, so a typo leaves the
feed unfiltered instead of asking for a body shape no item declares.

1715 of 3149 branches covered (54.46%)

Branch coverage included in aggregate %.

18 of 18 new or added lines in 2 files covered. (100.0%)

3083 of 4537 relevant lines covered (67.95%)

26.82 hits per line

Jobs
ID Job ID Ran Files Coverage
1 32253422318.1 19 Aug 2026 12:49PM UTC 324
64.38
GitHub Action Run
Source Files on build 32253422318
  • Tree
  • List 162
  • Changed 128
  • Source Changed 3
  • Coverage Changed 128
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #32253422318
  • 3e843ee0 on github
  • Prev Build on main (#32249329467)
  • Next Build on main (#32347116777)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc