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

kobotoolbox / kpi / 28177170279
81%
master: 76%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 25 Jun 2026 02:28PM UTC
Jobs 10
Files 890
Run time 3min
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

25 Jun 2026 02:24PM UTC coverage: 81.687%. Remained the same
28177170279

push

github

web-flow
feat(deleteProject): refactor single and multiple project deletion process DEV-1993 (#7159)

### đŸ“Ŗ Summary
This PR enables the delete button quick action for MMO members, refactor
the existing delete prompt modal to use mantine components and adds the
checks and a blocker modal to inform the user if the selected project(s)
cannot be deleted.

### 💭 Notes
- BulkDeleteModal and its usage were refactored to use the `modals.open`
patter used in other places.
- A new blocker modal was implemented to handle deletion permissions and
display information to the user
- Several mock files were changed to include `created_by` as returned
from API now.
- Since this englobes several different scenarios, multiple test cases
were added below for better understanding of the implementation.

### 👀 Preview steps

#### Non-MMO — Single project delete (happy path)

1. â„šī¸ Log in as a non-MMO user with at least one deployed project that
has submissions
2. Go to **My Projects**, select the project
3. Click the trash (đŸ—‘ī¸) quick action button
4. 🔴 [on main] A legacy `KoboPrompt`-styled modal opens
5. đŸŸĸ [on PR] A Mantine modal opens with the title *"Delete project
'Project Name'"* and three checkboxes (data, form, and recovery
confirmation). The red **Delete** button remains disabled until all
three are checked. Note: if the project has no submissions, only two
checkboxes appear — the data checkbox is hidden when there is no data to
warn about.
6. Check all boxes and click **Delete**
7. đŸŸĸ Project is deleted, sidebar refreshes, a toast notification appears
---

#### Non-MMO — No permission to delete (button gate)

1. â„šī¸ Log in as a non-MMO user who is a collaborator with `view_asset`
only on a project they do not own
2. Go to **My Projects**, select that project
3. 🔴 [on main] The trash button is disabled
4. đŸŸĸ [on PR] Same — trash button remains disabled, no modal opens

---

#### Non-MMO — Bulk delete (all deletable)

1. â„šī¸ Log in as a non-MMO user, have two or more projects yo... (continued)

9210 of 12495 branches covered (73.71%)

30109 of 36859 relevant lines covered (81.69%)

5.54 hits per line

Coverage Regressions

Lines Coverage ∆ File
211
26.4
-59.27% kpi/serializers/v2/asset_permission_assignment.py
133
36.93
-43.46% kpi/views/v2/data.py
117
64.3
-18.48% kpi/serializers/v2/asset.py
70
37.21
-40.7% kpi/serializers/current_user.py
60
26.85
-55.56% kpi/serializers/v2/paired_data.py
58
29.29
-41.43% kpi/serializers/v2/asset_file.py
55
31.62
-47.01% kpi/serializers/v2/export_task.py
52
42.86
-49.52% kpi/views/v2/environment.py
40
61.89
-10.81% kpi/views/v2/asset.py
38
49.47
-40.0% kpi/views/v2/asset_permission_assignment.py
25
31.11
-55.56% kpi/serializers/v2/data.py
20
71.43
-23.81% kpi/serializers/v2/service_usage.py
20
43.7
-14.81% kpi/views/v2/asset_snapshot.py
16
59.32
-27.12% kpi/views/v2/export_task.py
16
34.55
-14.55% kpi/views/v2/paired_data.py
15
40.48
-35.71% kpi/serializers/v2/deployment.py
13
33.33
-48.15% kpi/utils/prerequisite_migration_checker.py
12
51.06
-25.53% kpi/views/v2/import_task.py
11
70.18
-19.3% kpi/utils/mailer.py
9
79.17
-18.75% kpi/views/v2/asset_file.py
8
85.71
-11.43% kpi/utils/cache.py
7
79.05
-6.67% kpi/utils/object_permission.py
6
61.9
-14.29% kpi/utils/urls.py
5
77.07
-2.44% kpi/utils/mongo_helper.py
4
20.0
-80.0% kpi/utils/placeholders.py
3
62.07
-3.45% kpi/tasks.py
3
78.57
-10.71% kpi/utils/submission.py
3
30.67
-4.0% kpi/utils/two_database_configuration_checker.py
2
92.73
-3.64% kpi/signals.py
2
42.17
-2.41% kpi/utils/storage.py
2
75.0
-16.67% kpi/views/v2/open_rosa.py
2
88.24
-11.76% kpi/views/v2/service_usage.py
1
62.5
-12.5% kpi/utils/datetime.py
1
93.94
-1.01% kpi/utils/django_orm_helper.py
1
81.25
-6.25% kpi/utils/drf_exceptions.py
1
75.0
-25.0% kpi/utils/gravatar_url.py
1
27.68
-0.89% kpi/utils/models.py
1
94.12
-5.88% kpi/utils/strings.py
1
98.06
-0.97% kpi/utils/usage_calculator.py
1
84.62
-7.69% kpi/versioning.py
1
55.56
-2.22% kpi/views/current_user.py
1
42.5
-2.5% kpi/views/__init__.py
Jobs
ID Job ID Ran Files Coverage
1 28177170279.1 25 Jun 2026 02:28PM UTC 886
44.66
2 28177170279.2 25 Jun 2026 02:29PM UTC 886
53.19
3 28177170279.3 25 Jun 2026 02:29PM UTC 886
49.87
4 28177170279.4 25 Jun 2026 02:30PM UTC 888
51.22
5 28177170279.5 25 Jun 2026 02:30PM UTC 888
54.46
6 28177170279.6 25 Jun 2026 02:30PM UTC 888
46.04
7 28177170279.7 25 Jun 2026 02:31PM UTC 888
66.81
8 28177170279.8 25 Jun 2026 02:32PM UTC 886
59.19
9 28177170279.9 25 Jun 2026 02:33PM UTC 888
60.35
10 28177170279.10 25 Jun 2026 02:34PM UTC 890
69.13
Source Files on build 28177170279
  • Tree
  • List 890
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 74ab7620 on github
  • Prev Build on main (#28167304160)
  • Next Build on main (#28180195832)
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