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

Fix deprovision cache issue #8213

Merged

Conversation

rtibbles
Copy link
Member

@rtibbles rtibbles commented Jul 16, 2021

Summary

  • Add tests for device settings behaviours.
  • Fix device settings cache persistence on deletion.

References

Fixes issue after deprovisoining where device settings would persist in cache

Reviewer guidance

Setup device
Deprovision
Try to set up device again


Testing checklist

  • 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
  • Critical and brittle code paths are covered by unit tests

PR process

  • PR has the correct target branch and milestone
  • PR has 'needs review' or 'work-in-progress' label
  • If PR is ready for review, a reviewer has been added. (Don't use 'Assignees')
  • If this is an important user-facing change, PR or related issue has a 'changelog' label
  • If this includes an internal dependency change, a link to the diff is provided

Reviewer checklist

  • 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

Fix device settings cache persistence on deletion.
@rtibbles rtibbles added the TODO: needs review Waiting for review label Jul 16, 2021
@rtibbles rtibbles added this to the 0.14.8 milestone Jul 16, 2021
@rtibbles rtibbles requested a review from jamalex July 16, 2021 22:13
@@ -93,6 +100,10 @@ def save(self, *args, **kwargs):
super(DeviceSettings, self).save(*args, **kwargs)
cache.set(DEVICE_SETTINGS_CACHE_KEY, self, 600)

def delete(self, *args, **kwargs):
super(DeviceSettings, self).delete(*args, **kwargs)
Copy link
Member

Choose a reason for hiding this comment

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

Parsing the obfuscated Manager code, it seems that perhaps this method isn't necessary? It looks like it should be utilizing the delete method on the QuerySet. Otherwise, it seems like this should return the result of super.delete.

Copy link
Member Author

Choose a reason for hiding this comment

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

Gotcha - can try removing this method and seeing if the tests still pass.

Copy link
Member

Choose a reason for hiding this comment

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

You might add one more test. I see DeviceSettings.objects.all().delete() which I think invokes the QuerySet method, but DeviceSettings.objects.delete() would go through the manager

Copy link
Member Author

@rtibbles rtibbles Jul 27, 2021

Choose a reason for hiding this comment

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

Added the manager test, it passed. Removed the model method, and it failed.

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.

Works for me!

Return output of super calls.
@rtibbles
Copy link
Member Author

Expected checks are only in develop atm. Merging!

@rtibbles rtibbles merged commit 5e2982e into learningequality:release-v0.14.x Jul 27, 2021
@rtibbles rtibbles deleted the clear_device_settings branch July 27, 2021 16:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
TODO: needs review Waiting for review
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants