@@ -2528,6 +2528,16 @@ class TestAbstractHeadingBlurbModel(AbstractHeadingBlurbModel):
25282528class TaxiFormTests (TestCase ):
25292529 """ Tests for the `TaxiForm` model. """
25302530
2531+ @classmethod
2532+ def setUpClass (cls ):
2533+ super ().setUpClass ()
2534+ disconnect_course_data_modified_timestamp_related_models ()
2535+
2536+ @classmethod
2537+ def tearDownClass (cls ):
2538+ connect_course_data_modified_timestamp_related_models ()
2539+ super ().tearDownClass ()
2540+
25312541 def setUp (self ):
25322542 super ().setUp ()
25332543 self .taxi_form = factories .TaxiFormFactory ()
@@ -2548,6 +2558,53 @@ def test_no_subtitle(self):
25482558 self .taxi_form = factories .TaxiFormFactory (subtitle = None )
25492559 assert self .taxi_form .subtitle is None
25502560
2561+ def test_update_product_data_modified_timestamp (self ):
2562+ """ Verify updating TaxiForm updates data_modified_timestamp of related courses """
2563+ taxi_form = factories .TaxiFormFactory ()
2564+ additional_metadata = AdditionalMetadataFactory (taxi_form = taxi_form )
2565+ course1 = CourseFactory (additional_metadata = additional_metadata )
2566+ course2 = CourseFactory (additional_metadata = additional_metadata )
2567+
2568+ course1_timestamp = course1 .data_modified_timestamp
2569+ course2_timestamp = course2 .data_modified_timestamp
2570+
2571+ taxi_form .title = "Updated Title"
2572+ taxi_form .update_product_data_modified_timestamp ()
2573+ taxi_form .save ()
2574+
2575+ course1 .refresh_from_db ()
2576+ course2 .refresh_from_db ()
2577+
2578+ assert course1_timestamp < course1 .data_modified_timestamp
2579+ assert course2_timestamp < course2 .data_modified_timestamp
2580+
2581+ def test_update_product_data_modified_timestamp_no_change (self ):
2582+ """ Verify TaxiForm update doesn't change data_modified_timestamp if no fields changed """
2583+ taxi_form = factories .TaxiFormFactory ()
2584+ additional_metadata = AdditionalMetadataFactory (taxi_form = taxi_form )
2585+ course = CourseFactory (additional_metadata = additional_metadata )
2586+
2587+ course_timestamp = course .data_modified_timestamp
2588+
2589+ taxi_form .update_product_data_modified_timestamp ()
2590+ taxi_form .save ()
2591+
2592+ course .refresh_from_db ()
2593+
2594+ assert course .data_modified_timestamp == course_timestamp
2595+
2596+ def test_update_product_data_modified_timestamp_no_related_courses (self ):
2597+ """ Verify TaxiForm update doesn't cause issues when there are no related courses """
2598+ taxi_form = factories .TaxiFormFactory ()
2599+ AdditionalMetadataFactory (taxi_form = taxi_form )
2600+
2601+ taxi_form .title = "Updated Title"
2602+
2603+ taxi_form .update_product_data_modified_timestamp ()
2604+ taxi_form .save ()
2605+
2606+ assert Course .objects .filter (additional_metadata__taxi_form = taxi_form ).count () == 0
2607+
25512608
25522609@ddt .ddt
25532610@pytest .mark .django_db
0 commit comments