Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes content_id bug whenever underlying content is changed 🎉 #3803

Merged
merged 7 commits into from
Nov 28, 2022

Conversation

vkWeb
Copy link
Member

@vkWeb vkWeb commented Nov 8, 2022

Summary

This PR fixes a long standing bug on studio wherein copied contentnodes content_id were not changed upon modification of their underlying content.

Particulary, exercises and file contentnodes were affected by this. Both the cases have been resolved by this PR.

Manual verification steps performed

  1. Create a channel and a exercise contentnode with multiple assessment items.
  2. Copy that exercise node.
  3. Make sure the content_id of copied node is same as of the original node.
  4. Now, try adding, editing or deleting any of the assessment items in the copied node, the content_id should be changed!
  5. Repeat the following with the file contentnode type as well. That is, try modifying the uploaded file of a copied file node, you should see content_id updated.

Reviewer guidance

References

Closes #1055
Closes #3112
Unblocks #3725


Contributor's Checklist

PR process:

  • If this is an important user-facing change, PR or related issue the CHANGELOG label been added to this PR. Note: items with this label will be added to the CHANGELOG at a later time
  • If this includes an internal dependency change, a link to the diff is provided
  • The docs label has been added if this introduces a change that needs to be updated in the user docs?
  • If any Python requirements have changed, the updated requirements.txt files also included in this PR
  • Opportunities for using Google Analytics here are noted
  • Migrations are safe for a large db

Studio-specifc:

  • All user-facing strings are translated properly
  • The notranslate class been added to elements that shouldn't be translated by Google Chrome's automatic translation feature (e.g. icons, user-generated text)
  • All UI components are LTR and RTL compliant
  • Views are organized into pages, components, and layouts directories as described in the docs
  • Users' storage used is recalculated properly on any changes to main tree files
  • If there new ways this uses user data that needs to be factored into our Privacy Policy, it has been noted.

Testing:

  • Code is clean and well-commented
  • Contributor has fully tested the PR manually
  • If there are any front-end changes, before/after screenshots are included
  • Critical user journeys are covered by Gherkin stories
  • Any new interactions have been added to the QA Sheet
  • Critical and brittle code paths are covered by unit tests

Reviewer's Checklist

This section is for reviewers to fill out.

  • Automated test coverage is satisfactory
  • PR is fully functional
  • PR has been tested for accessibility regressions
  • External dependency files were updated if necessary (yarn and pip)
  • Documentation is updated
  • Contributor is in AUTHORS.md

Copy link
Member

@rtibbles rtibbles left a comment

Choose a reason for hiding this comment

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

I've laid out a case I think this fails to properly capture - some tests to cover these cases will help to document and validate the assumptions being made here.

contentcuration/contentcuration/models.py Outdated Show resolved Hide resolved
- update content_id only of copied nodes
- update content_id of nodes on channel syncing
- fix sync of assessment items bug wherein assessment items
  were getting synced based on tags attribute
@vkWeb vkWeb requested review from rtibbles and bjester November 21, 2022 12:30
@vkWeb vkWeb marked this pull request as ready for review November 21, 2022 12:30
@vkWeb
Copy link
Member Author

vkWeb commented Nov 21, 2022

@rtibbles I updated the content_id behavior according to the talk we had on slack.

For everyone else here is the summary of our consensus on how content_id should behave:
content_id of original node should not change on modifications to it. Copied node's content_id should change upon modification to its underlying content that is assessment items in case of exercises and files in case of file contentnodes.

@rtibbles @bjester The test cases should cover 100% of the changes I made and they test all possible scenarios I had in mind. I am very confident that this should be ready to merge! 🎉

Copy link
Member

@rtibbles rtibbles left a comment

Choose a reason for hiding this comment

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

This all makes sense to me, and my first read of the tests suggests to me that they are covering everything they should. I'd like to take another look to be sure, or a second pair of eyes would work too!

contentcuration/contentcuration/models.py Outdated Show resolved Hide resolved
@vkWeb vkWeb requested a review from rtibbles November 26, 2022 07:54
@rtibbles rtibbles dismissed their stale review November 28, 2022 18:29

All my comments have been addressed.

Copy link
Member

@bjester bjester left a comment

Choose a reason for hiding this comment

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

Awesome tests! 💯

@bjester bjester merged commit a769404 into learningequality:unstable Nov 28, 2022
@vkWeb vkWeb deleted the fix/content-id-guys branch December 2, 2022 13:10
@vkWeb vkWeb mentioned this pull request Dec 2, 2022
24 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants