@@ -651,6 +651,21 @@ public void testDeleteFieldIndexRemovesEntryFromCollectionGroup() {
651
651
assertEquals ("coll2" , collectionGroup );
652
652
}
653
653
654
+ @ Test
655
+ public void testDeleteFieldIndexRemovesAllMetadata () {
656
+ indexManager .addFieldIndex (
657
+ fieldIndex ("coll" , 1 , IndexState .create (1 , IndexOffset .NONE ), "value" , Kind .ASCENDING ));
658
+ addDoc ("coll/doc" , map ("value" , 1 ));
659
+ indexManager .updateCollectionGroup ("coll" , IndexOffset .NONE );
660
+
661
+ validateRowCount (1 );
662
+
663
+ FieldIndex existingIndex = indexManager .getFieldIndexes ("coll" ).iterator ().next ();
664
+ indexManager .deleteFieldIndex (existingIndex );
665
+
666
+ validateRowCount (0 );
667
+ }
668
+
654
669
@ Test
655
670
public void testChangeUser () {
656
671
IndexManager indexManager = persistence .getIndexManager (User .UNAUTHENTICATED );
@@ -714,4 +729,21 @@ private void verifyResults(Query query, String... documents) {
714
729
List <DocumentKey > keys = Arrays .stream (documents ).map (s -> key (s )).collect (Collectors .toList ());
715
730
assertWithMessage ("Result for %s" , query ).that (results ).containsExactlyElementsIn (keys );
716
731
}
732
+
733
+ /** Validates the row count in the SQLite tables that are used for indexing. */
734
+ private void validateRowCount (int expectedRows ) {
735
+ SQLitePersistence persistence = (SQLitePersistence ) this .persistence ;
736
+ persistence
737
+ .query (
738
+ "SELECT "
739
+ + "(SELECT COUNT(*) FROM index_state) AS index_state_count, "
740
+ + "(SELECT COUNT(*) FROM index_entries) AS index_entries_count, "
741
+ + "(SELECT COUNT(*) FROM index_configuration) AS index_configuration_count" )
742
+ .first (
743
+ value -> {
744
+ assertEquals (value .getInt (0 ), expectedRows );
745
+ assertEquals (value .getInt (1 ), expectedRows );
746
+ assertEquals (value .getInt (2 ), expectedRows );
747
+ });
748
+ }
717
749
}
0 commit comments