diff --git a/addons/onboarding/models/onboarding_step.py b/addons/onboarding/models/onboarding_step.py index b4f93d52cc6..ca687719c94 100644 --- a/addons/onboarding/models/onboarding_step.py +++ b/addons/onboarding/models/onboarding_step.py @@ -61,7 +61,14 @@ class OnboardingStep(models.Model): # Make sure progress records exist for the current context (company) steps_without_progress = self.filtered(lambda step: not step.current_progress_step_id) steps_without_progress._create_progress_steps() - return self.current_progress_step_id.action_set_just_done() + return self.current_progress_step_id.action_set_just_done().step_id + + @api.model + def action_validate_step(self, xml_id): + step = self.env.ref(xml_id, raise_if_not_found=False) + if not step: + return "NOT_FOUND" + return "JUST_DONE" if step.action_set_just_done() else "WAS_DONE" def _create_progress_steps(self): onboarding_progress_records = self.env['onboarding.progress'].search([ diff --git a/addons/onboarding/tests/test_onboarding.py b/addons/onboarding/tests/test_onboarding.py index 94491e49dd8..f3c08ea76a3 100644 --- a/addons/onboarding/tests/test_onboarding.py +++ b/addons/onboarding/tests/test_onboarding.py @@ -15,7 +15,8 @@ class TestOnboarding(TestOnboardingCommon): self.onboarding_1.current_progress_id._get_and_update_onboarding_state(), {self.onboarding_1_step_1.id: 'not_done', self.onboarding_1_step_2.id: 'not_done'}) - self.onboarding_1_step_1.action_set_just_done() + self.assertEqual(self.onboarding_1_step_1.action_set_just_done(), self.onboarding_1_step_1, + "The onboarding step just validated should have been returned.") # Test completed step state consolidation from `just_done` to `done` self.assertDictEqual( self.onboarding_1.current_progress_id._get_and_update_onboarding_state(), @@ -24,6 +25,8 @@ class TestOnboarding(TestOnboardingCommon): self.onboarding_1.current_progress_id._get_and_update_onboarding_state(), {self.onboarding_1_step_1.id: 'done', self.onboarding_1_step_2.id: 'not_done'}) self.assert_step_is_done(self.onboarding_1_step_1, self.company_2) + self.assertFalse(self.onboarding_1_step_1.action_set_just_done(), + "The onboarding step already validated should not have been returned.") self.assert_onboarding_is_not_done(self.onboarding_1, self.company_2) self.onboarding_1_step_2.action_set_just_done()