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

bleedingdeacons / tsml-for-unity / 33341245684
94%

Build:
DEFAULT BRANCH: main
Ran 30 Aug 2026 11:16PM UTC
Jobs 1
Files 59
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

30 Aug 2026 11:13PM UTC coverage: 94.109% (-0.1%) from 94.257%
33341245684

push

github

web-flow
feat: implement the committee hierarchy over the intergroup-committee taxonomy (#71)

Binds Unity's Committee contracts to the hierarchical taxonomy that
classifies members and service positions. Requires Unity's Committee
interfaces (bleedingdeacons/unity#63) -- CI checks out unity's main, so
this is red until that merges.

Reads term relationships, never the ACF fields that write them. Both
fields are configured with Save Terms on, so wp_term_relationships is
the real record and ACF's parallel meta copy is bookkeeping; reading the
meta would miss every assignment made through Quick Edit, WP-CLI, an
import or wp_set_object_terms().

TsmlCommitteeRepository is typed to the concrete factory rather than
Unity's CommitteeFactory, and builds its own rather than resolving the
binding. It needs createFromTerm(), which takes a WP_Term and so cannot
sit on a Unity interface; a container binding could hand back something
without the method and fail on first use instead of at registration.
Hydrating through createFromSource() instead would re-fetch by ID every
term get_terms() already returned in full.

Descendants come from tax_query's own include_children rather than
expanding the tree here, so a whole branch costs the same query as one
committee. descendantsOf() bails before get_terms() when a committee has
no children: an empty 'include' means "no filter", so passing one through
would answer "this leaf has no children" with the entire taxonomy.

ancestorsOf() hydrates one term at a time rather than through the shared
query helper, which sorts by name -- get_ancestors() returns
nearest-parent-first and that order is the answer.

forMember()/forPosition() check the post type first. Both carry the same
taxonomy, so without it a mixed-up ID returns a plausible, wrong answer.

Adds a WP_Term test stub: wp-mocks' term support stops at
wp_get_object_terms() over WpState and never needed the class, but both
new classes guard on `instanceof WP_Term`.

667 tests, PHP... (continued)

3259 of 3463 relevant lines covered (94.11%)

5.93 hits per line

Coverage Regressions

Lines Coverage ∆ File
22
92.71
0.4% tsml-for-unity/tsml-for-unity/src/Plugin.php
Jobs
ID Job ID Ran Files Coverage
1 33341245684.1 30 Aug 2026 11:16PM UTC 59
94.11
GitHub Action Run
Source Files on build 33341245684
  • Tree
  • List 59
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #33341245684
  • 0bbfd044 on github
  • Prev Build on main (#32901371984)
  • Next Build on main (#33970676088)
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