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

MushroomObserver / mushroom-observer / 26919107422
98%

Build:
DEFAULT BRANCH: main
Ran 03 Jun 2026 11:21PM UTC
Jobs 1
Files 1370
Run time 2min
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

03 Jun 2026 11:17PM UTC coverage: 96.98% (+0.001%) from 96.979%
26919107422

push

github

web-flow
Tab POROs: project members Collections + relocate tabs/projects_helper (#4433)

Three complementary changes that together delete
`tabs/projects_helper.rb`:

**Project members Tab Collections**

`project_members_form_new_tabs` and `project_member_form_edit_tabs`
migrate to PORO Collections:

- `Tab::Project::Members::FormNew` — single `Tab::Object::Return`.
- `Tab::Project::Members::FormEdit` — `Tab::Project::Index` +
  `Tab::Object::Return` + `Tab::Project::ChangeMemberStatus` when
  the caller passes `permission: true`; empty array otherwise. The
  pre-conversion helper returned nil on the no-permission branch;
  preserved as an empty tab list (controllers gate access upstream,
  so the branch is defensive).

Swept both callers (`Views::Controllers::Projects::Members::New`
and `::Edit`) to instantiate the POROs directly; the Edit view
passes `permission: permission?(@project)`.

**Inline the species-list buttons cluster into the Phlex view**

`project_species_list_buttons` + its 5 `*_button` siblings were
called only from `Views::Controllers::SpeciesLists::Show`. Helper
methods that only serve one Phlex caller don't belong in
`app/helpers/*`; inline them as private methods on the consuming
view (each button now renders directly, with `render_locations_button`
/ `render_images_button` carrying the `Query.related?` guard).

**Components::ProjectButton extracts the shared styling**

The species-list buttons row and the observation-index buttons row
both wrap `Components::CrudButton::Get` with the same `btn btn-default`
+ `btn-lg my-3 mr-3` styling. Extract a tiny
`Components::ProjectButton` Phlex component and have both callers
use it — no more duplicated CrudButton + class-list args.

**Relocate non-tab helpers**

The remaining methods in `tabs/projects_helper.rb` — `projects_index_sorts`,
`add_project_banner`, `project_observation_buttons` (still called
from `observations/index.html.erb`) + its sub-helpers `base_observation_buttons`
and `related_obser... (continued)

59 of 59 new or added lines in 7 files covered. (100.0%)

42163 of 43476 relevant lines covered (96.98%)

681.77 hits per line

Jobs
ID Job ID Ran Files Coverage
1 26919107422.1 03 Jun 2026 11:21PM UTC 1370
96.98
GitHub Action Run
Source Files on build 26919107422
  • Tree
  • List 1370
  • Changed 4
  • Source Changed 4
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26919107422
  • 2840f195 on github
  • Prev Build on main (#26915850694)
  • Next Build on main (#26921827875)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc