@@ -608,22 +608,22 @@ def test_index_xblock_tags(self, mock_meilisearch) -> None:
608608
609609 # Build expected docs with tags at each stage
610610 doc_sequential_with_tags1 = {
611- "id" : self .doc_sequential [ "id" ] ,
611+ ** copy . deepcopy ( self .doc_sequential ) ,
612612 "tags" : {
613613 'taxonomy' : ['A' ],
614614 'level0' : ['A > one' , 'A > two' ]
615- }
615+ },
616616 }
617617 doc_sequential_with_tags2 = {
618- "id" : self .doc_sequential [ "id" ] ,
618+ ** copy . deepcopy ( self .doc_sequential ) ,
619619 "tags" : {
620620 'taxonomy' : ['A' , 'B' ],
621621 'level0' : ['A > one' , 'A > two' , 'B > four' , 'B > three' ]
622- }
622+ },
623623 }
624624
625- assert mock_meilisearch .return_value .index .return_value .update_documents .call_count == 2
626- mock_meilisearch .return_value .index .return_value .update_documents .assert_has_calls (
625+ assert mock_meilisearch .return_value .index .return_value .add_documents .call_count == 2
626+ mock_meilisearch .return_value .index .return_value .add_documents .assert_has_calls (
627627 [
628628 call ([doc_sequential_with_tags1 ]),
629629 call ([doc_sequential_with_tags2 ]),
@@ -667,22 +667,22 @@ def test_index_library_block_tags(self, mock_meilisearch) -> None:
667667
668668 # Build expected docs with tags at each stage
669669 doc_problem_with_tags1 = {
670- "id" : self .doc_problem1 [ "id" ] ,
670+ ** copy . deepcopy ( self .doc_problem1 ) ,
671671 "tags" : {
672672 'taxonomy' : ['A' ],
673673 'level0' : ['A > one' , 'A > two' ]
674- }
674+ },
675675 }
676676 doc_problem_with_tags2 = {
677- "id" : self .doc_problem1 [ "id" ] ,
677+ ** copy . deepcopy ( self .doc_problem1 ) ,
678678 "tags" : {
679679 'taxonomy' : ['A' , 'B' ],
680680 'level0' : ['A > one' , 'A > two' , 'B > four' , 'B > three' ]
681- }
681+ },
682682 }
683683
684- assert mock_meilisearch .return_value .index .return_value .update_documents .call_count == 2
685- mock_meilisearch .return_value .index .return_value .update_documents .assert_has_calls (
684+ assert mock_meilisearch .return_value .index .return_value .add_documents .call_count == 2
685+ mock_meilisearch .return_value .index .return_value .add_documents .assert_has_calls (
686686 [
687687 call ([doc_problem_with_tags1 ]),
688688 call ([doc_problem_with_tags2 ]),
@@ -873,22 +873,22 @@ def test_index_tags_in_collections(self, mock_meilisearch) -> None:
873873
874874 # Build expected docs with tags at each stage
875875 doc_collection_with_tags1 = {
876- "id" : "lib-collectionorg1libmycol-5b647617" ,
876+ ** copy . deepcopy ( self . collection_dict ) ,
877877 "tags" : {
878878 'taxonomy' : ['A' ],
879879 'level0' : ['A > one' , 'A > two' ]
880- }
880+ },
881881 }
882882 doc_collection_with_tags2 = {
883- "id" : "lib-collectionorg1libmycol-5b647617" ,
883+ ** copy . deepcopy ( self . collection_dict ) ,
884884 "tags" : {
885885 'taxonomy' : ['A' , 'B' ],
886886 'level0' : ['A > one' , 'A > two' , 'B > four' , 'B > three' ]
887- }
887+ },
888888 }
889889
890- assert mock_meilisearch .return_value .index .return_value .update_documents .call_count == 2
891- mock_meilisearch .return_value .index .return_value .update_documents .assert_has_calls (
890+ assert mock_meilisearch .return_value .index .return_value .add_documents .call_count == 2
891+ mock_meilisearch .return_value .index .return_value .add_documents .assert_has_calls (
892892 [
893893 call ([doc_collection_with_tags1 ]),
894894 call ([doc_collection_with_tags2 ]),
@@ -1144,30 +1144,57 @@ def test_index_tags_in_containers(self, container_type, container_id, mock_meili
11441144 tagging_api .tag_object (container_key , self .taxonomyB , ["three" , "four" ])
11451145
11461146 # Build expected docs with tags at each stage
1147+ container_doc = copy .deepcopy (getattr (self , f"{ container_type } _dict" ))
1148+ if container_type == "unit" :
1149+ container_doc ["subsections" ] = {
1150+ "display_name" : [self .subsection_dict ["display_name" ]],
1151+ "key" : [self .subsection_key ],
1152+ }
1153+ elif container_type == "subsection" :
1154+ container_doc ["sections" ] = {
1155+ "display_name" : [self .section_dict ["display_name" ]],
1156+ "key" : [self .section_key ],
1157+ }
1158+
11471159 doc_unit_with_tags1 = {
1160+ ** container_doc ,
11481161 "id" : container_id ,
11491162 "tags" : {
11501163 'taxonomy' : ['A' ],
11511164 'level0' : ['A > one' , 'A > two' ]
1152- }
1165+ },
11531166 }
11541167 doc_unit_with_tags2 = {
1168+ ** copy .deepcopy (container_doc ),
11551169 "id" : container_id ,
11561170 "tags" : {
11571171 'taxonomy' : ['A' , 'B' ],
11581172 'level0' : ['A > one' , 'A > two' , 'B > four' , 'B > three' ]
1159- }
1173+ },
11601174 }
11611175
1162- assert mock_meilisearch .return_value .index .return_value .update_documents .call_count == 2
1163- mock_meilisearch .return_value .index .return_value .update_documents .assert_has_calls (
1176+ assert mock_meilisearch .return_value .index .return_value .add_documents .call_count == 2
1177+ mock_meilisearch .return_value .index .return_value .add_documents .assert_has_calls (
11641178 [
11651179 call ([doc_unit_with_tags1 ]),
11661180 call ([doc_unit_with_tags2 ]),
11671181 ],
11681182 any_order = True ,
11691183 )
11701184
1185+ @override_settings (MEILISEARCH_ENABLED = True )
1186+ def test_replace_full_doc_when_container_tags_are_cleared (self , mock_meilisearch ) -> None :
1187+ expected_doc = copy .deepcopy (self .unit_dict )
1188+ expected_doc ["subsections" ] = {
1189+ "display_name" : [self .subsection_dict ["display_name" ]],
1190+ "key" : [self .subsection_key ],
1191+ }
1192+ expected_doc ["tags" ] = {}
1193+
1194+ api .upsert_content_object_tags_index_doc (self .unit .container_key )
1195+
1196+ mock_meilisearch .return_value .index .return_value .add_documents .assert_called_once_with ([expected_doc ])
1197+
11711198 @override_settings (MEILISEARCH_ENABLED = True )
11721199 def test_block_in_units (self , mock_meilisearch ) -> None :
11731200 """Test that search index is updated correctly when we add a problem block to a unit"""
0 commit comments