Repository navigation
Conversation
…d, and enhance support info modal with improved accessibility and styling.
Cover department lookup success/failure shaping used by BuildingsApi room updates, and ensure Sentry metric failures are swallowed so jobs/rake keep running. Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: rsmoke <rsmoke@umich.edu>
…463) Cover the success path that hides rooms via visible=false while keeping contacts, characteristics, and Active Storage panoramas/images, plus the already-hidden fail-closed invariant in BuildingsApi and ClassroomApi. Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: rsmoke <rsmoke@umich.edu>
Cover structured phase/run reporting and runner early-exit when auth token acquisition fails, so nightly classroom sync failures stay visible in ApiUpdateLog without continuing later phases. Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: rsmoke <rsmoke@umich.edu>
…ory (#465) Bumps the bundler group with 1 update in the / directory: [rubyzip](https://github.com/rubyzip/rubyzip). Updates `rubyzip` from 3.2.2 to 3.4.0 - [Release notes](https://github.com/rubyzip/rubyzip/releases) - [Changelog](https://github.com/rubyzip/rubyzip/blob/main/Changelog.md) - [Commits](rubyzip/rubyzip@v3.2.2...v3.4.0) --- updated-dependencies: - dependency-name: rubyzip dependency-version: 3.4.0 dependency-type: indirect dependency-group: bundler ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: rsmokeUM <rsmoke@umich.edu>
…#467) * Add TaskResultLog, TokenStore, and Okta display_name regression specs Cover nightly API update logging status/payload persistence, token cache expiry and failure paths, and Okta SAML display_name mapping on omniauth callback so auth/name regressions are caught early. Co-authored-by: rsmoke <rsmoke@umich.edu> * Improve error logging in ApiUpdateLog by including detailed error messages when save fails. --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: rsmoke <rsmoke@umich.edu>
* Add ApplicationHelper api_status and api_log_text regression specs. Cover the admin header banner signals for missing nightly runs, error vs success recency, and blank log fallback so false-positive or missed API failure alerts are less likely to regress. Co-authored-by: rsmoke <rsmoke@umich.edu> * Potential fix for pull request finding 'Test does not verify log recency filtering' Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: rsmoke <rsmoke@umich.edu> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Add FloorPolicy authorization regression specs. Lock viewer show vs admin mutation permissions and deny show when membership groups are empty outside production. Co-authored-by: rsmoke <rsmoke@umich.edu> * Improve error logging in TaskResultLog specs by including specific error messages for invalid records --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: rsmoke <rsmoke@umich.edu>
Lock admin-only index/show/refresh gates so non-admin viewers cannot access API update logs or refresh the analytics dashboard. Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: rsmoke <rsmoke@umich.edu>
Co-authored-by: rsmokeUM <rsmoke@umich.edu>
A stale classroom that was already hidden aborted the rooms phase and skipped the rest of the update. Co-authored-by: Cursor <cursoragent@cursor.com>
… ClassroomApi Introduce a locking mechanism to ensure that rooms are locked before counting hidden rooms during the deactivation process. This change is accompanied by new tests to verify that the locking occurs correctly before any updates are made to room visibility.
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
Static review found no blocking issues in the focused logic changes or regression specs; tests were not executed.
No open issues 🎉
What changed in this PR
Improves stale-room deactivation in both APIs so already-hidden rooms no longer cause failure.
Changes:
- Locks room rows before counting and updating.
- Accepts already-hidden rooms and hides rooms with true or unset visibility.
- Adds regression specs for mixed visibility, rollback, and lock ordering.
| File | Description |
|---|---|
| spec/lib/classroom_api_spec.rb | Adds classroom deactivation regression coverage. |
| spec/lib/buildings_api_spec.rb | Adds building-room deactivation regression coverage. |
| lib/classroom_api.rb | Updates classroom locking and visibility handling. |
| lib/buildings_api.rb | Updates building-room locking and visibility handling. |
Review effort: Balanced
Comment on lines
+127
to
+129
| lock_index = queries.index { |sql| sql.include?("FOR UPDATE") } | ||
| update_index = queries.index { |sql| sql.match?(/UPDATE "rooms"/) } | ||
| expect(lock_index).to be < update_index |
Comment on lines
+135
to
+137
| lock_index = queries.index { |sql| sql.include?("FOR UPDATE") } | ||
| update_index = queries.index { |sql| sql.match?(/UPDATE "rooms"/) } | ||
| expect(lock_index).to be < update_index |
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

This pull request updates the logic for deactivating (hiding) rooms in both the
BuildingsApiandClassroomApi, ensuring that rooms already hidden are correctly counted as "deactivated" and improving the safety and clarity of the deactivation process. The test suites for both APIs are expanded to cover these new behaviors, including concurrency safety.Key changes:
Core logic improvements
deactivate_stale_roomsmethod in bothlib/buildings_api.rbandlib/classroom_api.rbnow counts rooms that are already hidden as successfully deactivated, and only updates rooms that are visible or have unset visibility. The method also acquires a lock on the relevant room rows before performing updates to ensure data consistency. [1] [2]Test coverage enhancements
spec/lib/buildings_api_spec.rbandspec/lib/classroom_api_spec.rb) have been expanded:nil). [1] [2]