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

RoundingWell / care-ops-frontend / c8db7f44-c7fd-4a3e-8b98-d394b6031a7d

21 May 2026 06:16PM UTC coverage: 80.537% (-19.4%) from 99.963%
c8db7f44-c7fd-4a3e-8b98-d394b6031a7d

Pull #1697

circleci

paulfalgout
fix(work): include program chain on action and flow fetches that honor it

Centralize ACTION_INCLUDE / FLOW_INCLUDE in the entity service and apply
them everywhere the backend actually reads the include parameter:

- /actions/{id} (fetchAction, fetchActionWithResponses, manage:add refetch)
- /flows/{id} (fetchFlow, manage:add refetch)
- /flows/{id}/relationships/actions (fetchActionsByFlow on the flow page)

The patient-relationship list endpoints
(/patients/{id}/relationships/actions, /patients/{id}/relationships/flows)
silently drop include today, so fetchActionsByPatient and
fetchFlowsByPatient keep their original data shape. Once the backend's
ListPatientActionsResponder / ListPatientFlowsResponder learn to honor
Includes::fromRequest, those call sites can pass ACTION_INCLUDE /
FLOW_INCLUDE the same way.
Pull Request #1697: fix(work): include program relationships on action and flow fetches

1394 of 1875 branches covered (74.35%)

Branch coverage included in aggregate %.

11 of 11 new or added lines in 5 files covered. (100.0%)

1071 existing lines in 100 files now uncovered.

5028 of 6099 relevant lines covered (82.44%)

139.21 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

58.33
/src/js/apps/programs/sidebar/program-sidebar_app.js
1
import Radio from 'backbone.radio';
2

3
import App from 'js/base/app';
4

5
import { SidebarView, TimestampsView, headingText } from 'js/views/programs/sidebar/program/programs-sidebar_views';
6

7
export default App.extend({
8
  onBeforeStart({ program }) {
9
    this.program = program;
2✔
10

11
    this.showHeading();
2✔
12

13
    const contentView = new SidebarView({
2✔
14
      program: this.program,
15
    });
16

17
    this.listenTo(contentView, {
2✔
18
      'save': this.onSave,
19
      'close': this.stop,
20
    });
21

22
    this.showChildView('content', contentView);
2✔
23
    this.showTimestamps();
2✔
24
  },
25
  onSave({ model }) {
26
    const isNew = this.program.isNew();
2✔
27
    this.program.save(model.pick('name', 'details'))
2✔
28
      .then(() => {
29
        if (isNew) Radio.request('sidebar', 'stop');
2!
30
      }, ({ responseData }) => {
UNCOV
31
        const errors = this.program.parseErrors(responseData);
×
UNCOV
32
        this.getChildView('content').showErrors(errors);
×
33
      });
34
  },
35
  onClose() {
UNCOV
36
    this.stop();
×
37
  },
38
  onStop() {
UNCOV
39
    if (this.program && this.program.isNew()) this.program.destroy();
×
40
  },
41
  showHeading() {
42
    this.showChildView('heading', headingText);
2✔
43
  },
44
  showTimestamps() {
45
    if (this.program.isNew()) return;
2!
46
    this.showChildView('footer', new TimestampsView({ model: this.program }));
2✔
47
  },
48
});
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