Skip to content

Comments

chore: Clean hash urls#919

Merged
ashwin1111 merged 2 commits intomasterfrom
remove-hash-urls-to-web-app-final
Feb 24, 2026
Merged

chore: Clean hash urls#919
ashwin1111 merged 2 commits intomasterfrom
remove-hash-urls-to-web-app-final

Conversation

@shubham-fyle
Copy link
Contributor

@shubham-fyle shubham-fyle commented Feb 19, 2026

Clickup
https://app.clickup.com/

Summary by CodeRabbit

  • Bug Fixes

    • Normalized URL construction for expense links in the NetSuite connector.
  • Tests

    • Updated test fixtures for expense-related URLs and custom record identifiers.

@github-actions github-actions bot added the size/S Small PR label Feb 19, 2026
@github-actions
Copy link

Coverage

Coverage Report
FileStmtsMissCoverMissing
apps
   exceptions.py431467%23, 29, 35–40, 46, 52–57, 63, 69, 75–76, 88–90
apps/fyle
   actions.py132993%32–35, 280, 328–332
   constants.py10100% 
   helpers.py2645081%112–114, 123, 134–138, 176–184, 271, 329, 332–348, 373–379, 382, 385, 458–482
   models.py3221197%298–300, 304–306, 321, 360–364, 537, 556
   queue.py48394%90–99
   serializers.py340100% 
   signals.py33391%30–32
   tasks.py5059182%169–170, 177–179, 209–210, 237–238, 265–266, 280–285, 310, 320, 330–333, 342, 352–381, 392–428, 476–478, 933–934, 983–986, 993–994, 1015–1016, 1057–1058, 1065–1066, 1068–1069, 1072–1073, 1075–1076, 1088–1096
   views.py1981393%80, 93, 96, 180, 399, 436–444, 460–464
apps/internal
   actions.py22291%15–16
   tasks.py52787%41–46, 73
   views.py390100% 
apps/mappings
   constants.py30100% 
   exceptions.py1257441%58, 61–62, 65–66, 69–74, 99–178
   helpers.py42783%65–69, 76–78
   models.py460100% 
   schedules.py120100% 
   serializers.py36197%38
   signals.py100991%156–158, 162–163, 190–196
   tasks.py1921692%33, 56, 126–127, 225–226, 237, 345–349, 402–405, 466–472
   views.py43198%104
apps/netsuite
   actions.py34391%45, 56–57
   connector.py94911588%82–87, 127, 143, 146, 149, 155, 236, 248, 259, 452, 469, 473, 503, 520, 524, 607, 622, 626–627, 646, 719, 722–726, 783, 836, 876, 902, 1007, 1012–1015, 1026–1029, 1038–1039, 1091–1092, 1132, 1325–1339, 1362–1364, 1565, 1567, 1570, 1582, 1585, 1730–1733, 1762–1768, 1818, 1947–1948, 1954, 2070, 2108–2137, 2155–2158, 2373, 2673, 2828, 2839, 2853–2854, 2858–2860
   errors.py624429%21–26, 46–70, 76–84, 103–113, 119, 134–147
   errors_reference.py40100% 
   exceptions.py1392979%85, 95–96, 138, 151–152, 187–209, 212–235
   helpers.py804248%20–29, 60–61, 92–114, 119–143, 153–159
   models.py6682596%66, 99, 127, 164, 197, 252, 254, 258, 299, 320, 553, 557, 580–581, 770, 774, 797–798, 1004, 1008, 1026–1027, 1206, 1228, 1232
   queue.py141994%52, 102–106, 162–166, 227–231, 286–290
   serializers.py160100% 
   signals.py46589%31–32, 41, 66–67
   tasks.py86213085%189, 198, 245–246, 253, 259, 476–480, 488–489, 542–543, 573–577, 585–586, 658–659, 680–684, 692–693, 741–742, 772–776, 784–785, 833–834, 1035–1041, 1164, 1193–1195, 1202–1207, 1246, 1316–1339, 1365–1367, 1389, 1404, 1408–1414, 1476–1484, 1568–1589, 1632–1637, 1646–1672
   views.py110595%120, 198–199, 258–259
apps/tasks
   helpers.py100100% 
   models.py670100% 
   serializers.py60100% 
   views.py190100% 
apps/users
   helpers.py120100% 
   models.py140100% 
   views.py160100% 
apps/workspaces
   actions.py463720%16–121
   enums.py50100% 
   helpers.py6267%7, 15
   models.py1560100% 
   permissions.py33973%24, 43–51
   serializers.py490100% 
   signals.py330100% 
   tasks.py1842089%74–78, 101, 119–120, 198, 229–230, 345–348, 369–370, 384–388
   utils.py13562%24–33
   views.py2601594%103–106, 503–518
apps/workspaces/apis/advanced_settings
   serializers.py88397%203, 206, 209
   triggers.py120100% 
   views.py70100% 
apps/workspaces/apis/errors
   serializers.py200100% 
   views.py110100% 
apps/workspaces/apis/export_settings
   helpers.py71396%133–135
   serializers.py95397%202, 205, 208
   triggers.py36489%41, 56–57, 66
   views.py110100% 
apps/workspaces/apis/import_settings
   serializers.py74199%172
   triggers.py792272%26–41, 44–62
   views.py110100% 
apps/workspaces/apis/map_employees
   serializers.py37295%23, 58
   triggers.py6183%10
   views.py11464%11, 18–20
workers
   actions.py410100% 
   helpers.py460100% 
   worker.py56395%77–78, 125
TOTAL704485288% 

Tests Skipped Failures Errors Time
396 0 💤 0 ❌ 0 🔥 39.526s ⏱️

@github-actions
Copy link


Diff Coverage
Diff: origin/master..HEAD, staged and unstaged changes

No lines with coverage information in this diff.

@coderabbitai
Copy link

coderabbitai bot commented Feb 24, 2026

Walkthrough

The pull request removes the "#/" hash fragment from expense-related URLs in the NetSuite connector code and its corresponding test fixtures. Additionally, custom record identifiers are updated in fixtures (Type B from '2' to '22', Type C from '3' to '33'), maintaining test data consistency.

Changes

Cohort / File(s) Summary
URL Normalization
apps/netsuite/connector.py, tests/test_netsuite/fixtures.py
Removed "#/" hash fragment from expense URL constructions and customFieldList entries across multiple test fixtures, normalizing URL paths.
Custom Record Identifiers
tests/test_netsuite/fixtures.py
Updated internalId values for custom record types in fixtures: Type B ('2' → '22') and Type C ('3' → '33').

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • chore: Clean hash urls #916: Makes identical URL normalization changes by removing "#/" hash fragments from expense-related app URLs in both connector code and test fixtures.

Suggested reviewers

  • Dimple16

Poem

🐰 URLs need tidying, hashes must go,
"#/" fragments swept like winter snow,
IDs refreshed from two to twenty-two,
NetSuite connectors run bright and new! ✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Description check ⚠️ Warning The pull request description is incomplete, containing only a Clickup link without the required 'Description' section or detailed explanation of changes. Add a detailed description section explaining why the hash fragments were removed and how these changes impact the application's functionality.
Title check ❓ Inconclusive The title 'chore: Clean hash urls' is vague and uses non-descriptive terminology that doesn't clearly convey what is being changed or why. Consider a more descriptive title such as 'chore: Remove hash fragments from custom expense URLs' to provide clearer context about the specific changes.
✅ Passed checks (1 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch remove-hash-urls-to-web-app-final

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link

Coverage

Coverage Report
FileStmtsMissCoverMissing
apps
   exceptions.py431467%23, 29, 35–40, 46, 52–57, 63, 69, 75–76, 88–90
apps/fyle
   actions.py132993%32–35, 280, 328–332
   constants.py10100% 
   helpers.py2645081%112–114, 123, 134–138, 176–184, 271, 329, 332–348, 373–379, 382, 385, 458–482
   models.py3221197%298–300, 304–306, 321, 360–364, 537, 556
   queue.py48394%90–99
   serializers.py340100% 
   signals.py33391%30–32
   tasks.py5059182%169–170, 177–179, 209–210, 237–238, 265–266, 280–285, 310, 320, 330–333, 342, 352–381, 392–428, 476–478, 933–934, 983–986, 993–994, 1015–1016, 1057–1058, 1065–1066, 1068–1069, 1072–1073, 1075–1076, 1088–1096
   views.py1981393%80, 93, 96, 180, 399, 436–444, 460–464
apps/internal
   actions.py22291%15–16
   tasks.py52787%41–46, 73
   views.py390100% 
apps/mappings
   constants.py30100% 
   exceptions.py1257441%58, 61–62, 65–66, 69–74, 99–178
   helpers.py42783%65–69, 76–78
   models.py460100% 
   schedules.py120100% 
   serializers.py36197%38
   signals.py100991%156–158, 162–163, 190–196
   tasks.py1921692%33, 56, 126–127, 225–226, 237, 345–349, 402–405, 466–472
   views.py43198%104
apps/netsuite
   actions.py34391%45, 56–57
   connector.py94911588%82–87, 127, 143, 146, 149, 155, 236, 248, 259, 452, 469, 473, 503, 520, 524, 607, 622, 626–627, 646, 719, 722–726, 783, 836, 876, 902, 1007, 1012–1015, 1026–1029, 1038–1039, 1091–1092, 1132, 1325–1339, 1362–1364, 1565, 1567, 1570, 1582, 1585, 1730–1733, 1762–1768, 1818, 1947–1948, 1954, 2070, 2108–2137, 2155–2158, 2373, 2673, 2828, 2839, 2853–2854, 2858–2860
   errors.py624429%21–26, 46–70, 76–84, 103–113, 119, 134–147
   errors_reference.py40100% 
   exceptions.py1392979%85, 95–96, 138, 151–152, 187–209, 212–235
   helpers.py804248%20–29, 60–61, 92–114, 119–143, 153–159
   models.py6682596%66, 99, 127, 164, 197, 252, 254, 258, 299, 320, 553, 557, 580–581, 770, 774, 797–798, 1004, 1008, 1026–1027, 1206, 1228, 1232
   queue.py141994%52, 102–106, 162–166, 227–231, 286–290
   serializers.py160100% 
   signals.py46589%31–32, 41, 66–67
   tasks.py87113085%199, 208, 255–256, 263, 269, 486–490, 498–499, 552–553, 583–587, 595–596, 668–669, 690–694, 702–703, 751–752, 782–786, 794–795, 843–844, 1045–1051, 1174, 1203–1205, 1212–1217, 1256, 1326–1349, 1375–1377, 1399, 1414, 1418–1424, 1486–1494, 1578–1599, 1642–1647, 1656–1682
   views.py110595%120, 198–199, 258–259
apps/tasks
   helpers.py100100% 
   models.py670100% 
   serializers.py60100% 
   views.py190100% 
apps/users
   helpers.py120100% 
   models.py140100% 
   views.py160100% 
apps/workspaces
   actions.py463720%16–121
   enums.py50100% 
   helpers.py6267%7, 15
   models.py1560100% 
   permissions.py33973%24, 43–51
   serializers.py490100% 
   signals.py330100% 
   tasks.py1842089%74–78, 101, 119–120, 198, 229–230, 345–348, 369–370, 384–388
   utils.py13562%24–33
   views.py2601594%103–106, 503–518
apps/workspaces/apis/advanced_settings
   serializers.py88397%203, 206, 209
   triggers.py120100% 
   views.py70100% 
apps/workspaces/apis/errors
   serializers.py200100% 
   views.py110100% 
apps/workspaces/apis/export_settings
   helpers.py71396%133–135
   serializers.py95397%202, 205, 208
   triggers.py36489%41, 56–57, 66
   views.py110100% 
apps/workspaces/apis/import_settings
   serializers.py74199%172
   triggers.py792272%26–41, 44–62
   views.py110100% 
apps/workspaces/apis/map_employees
   serializers.py37295%23, 58
   triggers.py6183%10
   views.py11464%11, 18–20
workers
   actions.py410100% 
   helpers.py460100% 
   worker.py56395%77–78, 125
TOTAL705385288% 

Tests Skipped Failures Errors Time
396 0 💤 0 ❌ 0 🔥 42.032s ⏱️

@github-actions
Copy link


Diff Coverage
Diff: origin/master..HEAD, staged and unstaged changes

No lines with coverage information in this diff.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
tests/test_netsuite/fixtures.py (1)

1800-1806: ⚠️ Potential issue | 🟠 Major

Update destination_id values for Type B/C in custom_segment_destination_attributes fixture.

The internalId changes (2→22, 3→33) at lines 1800 and 1806 require matching updates at lines 1851 and 1861. The test assertions in test_connector.py (lines 1018-1020) explicitly expect destination_id == '22' for Type B and destination_id == '33' for Type C. Update the fixture destination_id values from '2'/'3' to '22'/'33' to prevent test failures and maintain consistency.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/test_netsuite/fixtures.py` around lines 1800 - 1806, The fixture
custom_segment_destination_attributes has internalId values for Type B/Type C
updated from '2'/'3' to '22'/'33' but the corresponding destination_id entries
in that same fixture still use '2'/'3'; update the destination_id for Type B to
'22' and for Type C to '33' (match the internalId changes) so the fixture aligns
with the test assertions that expect destination_id == '22' and destination_id
== '33'.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@tests/test_netsuite/fixtures.py`:
- Around line 1800-1806: The fixture custom_segment_destination_attributes has
internalId values for Type B/Type C updated from '2'/'3' to '22'/'33' but the
corresponding destination_id entries in that same fixture still use '2'/'3';
update the destination_id for Type B to '22' and for Type C to '33' (match the
internalId changes) so the fixture aligns with the test assertions that expect
destination_id == '22' and destination_id == '33'.

ℹ️ Review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f0d661b and 9f6bd42.

📒 Files selected for processing (2)
  • apps/netsuite/connector.py
  • tests/test_netsuite/fixtures.py

@Dimple16 Dimple16 requested a review from ashwin1111 February 24, 2026 06:46
@ashwin1111 ashwin1111 merged commit ac12f6d into master Feb 24, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/S Small PR

Development

Successfully merging this pull request may close these issues.

3 participants