diff --git a/libcockatrice_card/libcockatrice/card/set/card_set_list.cpp b/libcockatrice_card/libcockatrice/card/set/card_set_list.cpp index 6a541bc16..b11d6deb5 100644 --- a/libcockatrice_card/libcockatrice/card/set/card_set_list.cpp +++ b/libcockatrice_card/libcockatrice/card/set/card_set_list.cpp @@ -128,9 +128,9 @@ void CardSetList::markAllAsKnownBatched(ICardSetPriorityController *controller) continue; } - if (!set->getIsKnown() && !set->getIsKnownIgnored()) { + if (!set->getIsKnown()) { set->setIsKnownInMemory(true); - set->setEnabledInMemory(false); + set->setEnabledInMemory(set->getIsKnownIgnored()); saveData.append({set->getShortName(), static_cast(set->getSortKey()), set->getEnabled(), set->getIsKnown()}); } diff --git a/tests/carddatabase/carddatabase_test.cpp b/tests/carddatabase/carddatabase_test.cpp index 350d9be7e..0a99edaa1 100644 --- a/tests/carddatabase/carddatabase_test.cpp +++ b/tests/carddatabase/carddatabase_test.cpp @@ -663,6 +663,24 @@ TEST_F(CardDatabaseCacheInvalidationTest, MarkAllSetsAsKnownIsBatched) EXPECT_TRUE(controller.isEnabled("XXX")); } +TEST_F(CardDatabaseCacheInvalidationTest, MarkAllSetsAsKnownDoesNotOverwriteSettings) +{ + SeededSetPriorityController controller; + CardSetList sets; + sets.append(CardSet::newInstance(&controller, "XXX")); // no metadata: ignored + + // Ignored sets keep their known state but are enabled. + sets.markAllAsKnownBatched(&controller); + EXPECT_TRUE(controller.isEnabled("XXX")) << "unnamed set starts enabled"; + + // disable the set + controller.setEnabled("XXX", false); + + // set should still be disabled after batching + sets.markAllAsKnownBatched(&controller); + EXPECT_FALSE(controller.isEnabled("XXX")) << "unnamed set should still be disabled after marking"; +} + TEST_F(CardDatabaseCacheInvalidationTest, ReloadReleasesPreviousSnapshot) { NoopCardPreferenceProvider prefs;