Lock the Krea catalog at ages 6-11 and keep SDXL ids when a living save has no models list.

This commit is contained in:
Leonid Pershin
2026-08-21 02:40:08 +03:00
parent 560b48ebea
commit 1002aeb680
@@ -233,6 +233,25 @@ public class SwarmUiSettingsStoreTests
var child = Assert.Single(config.Presets, preset => preset.Id == "child"); var child = Assert.Single(config.Presets, preset => preset.Id == "child");
Assert.Equal(SwarmUiModelDefinition.RealismV25Id, child.Model); Assert.Equal(SwarmUiModelDefinition.RealismV25Id, child.Model);
var ageRule = Assert.Single(config.AgeRules);
Assert.Equal(6, ageRule.MinAge);
Assert.Equal(11, ageRule.MaxAge);
Assert.Equal("child", ageRule.PresetId);
}
[Theory]
[InlineData(6, "child")]
[InlineData(11, "child")]
[InlineData(5, "default")]
[InlineData(12, "default")]
public void Resolve_AgeRuleCoversSixThroughElevenInclusive(int age, string presetId)
{
var config = SwarmUiConfigFile.CreateDefault();
var profile = config.Resolve(age, PortraitKind.Avatar);
Assert.Equal(presetId, profile.PresetId);
Assert.Equal(SwarmUiModelDefinition.RealismV25Id, profile.Model);
} }
[Fact] [Fact]
@@ -288,6 +307,8 @@ public class SwarmUiSettingsStoreTests
Assert.Equal(expected.Presets[1].Model, loaded.Presets[1].Model); Assert.Equal(expected.Presets[1].Model, loaded.Presets[1].Model);
Assert.Equal(expected.Presets[1].Style, loaded.Presets[1].Style); Assert.Equal(expected.Presets[1].Style, loaded.Presets[1].Style);
Assert.Equal(expected.Presets[1].Negative, loaded.Presets[1].Negative); Assert.Equal(expected.Presets[1].Negative, loaded.Presets[1].Negative);
Assert.Equal(expected.Presets[1].Avatar?.ShotType, loaded.Presets[1].Avatar?.ShotType);
Assert.Equal(expected.Presets[1].FullBody?.ShotType, loaded.Presets[1].FullBody?.ShotType);
} }
[Fact] [Fact]
@@ -354,6 +375,48 @@ public class SwarmUiSettingsStoreTests
Assert.Equal(SwarmUiModelDefinition.DreamShaperId, living.Resolve(8, PortraitKind.Avatar).Model); Assert.Equal(SwarmUiModelDefinition.DreamShaperId, living.Resolve(8, PortraitKind.Avatar).Model);
} }
[Fact]
public void NormalizeAfterLoad_EmptyModelsKeepSdxlPresetIdsInsteadOfKreaCatalog()
{
var living = new SwarmUiConfigFile
{
ActivePresetId = "default",
Presets =
[
new SwarmUiPresetDefinition
{
Id = "default",
Label = "Default",
Model = SwarmUiModelDefinition.BabesId,
Avatar = new SwarmUiKindPreset { Width = 1024, Height = 1024 },
Custom = new SwarmUiKindPreset { Width = 896, Height = 1152 },
FullBody = new SwarmUiKindPreset { Width = 896, Height = 1152 },
},
new SwarmUiPresetDefinition
{
Id = "child",
Label = "Children",
Model = SwarmUiModelDefinition.DreamShaperId,
Avatar = new SwarmUiKindPreset { Width = 1024, Height = 1024 },
Custom = new SwarmUiKindPreset { Width = 896, Height = 1152 },
FullBody = new SwarmUiKindPreset { Width = 896, Height = 1152 },
},
],
AgeRules = [new SwarmUiAgeRule { MinAge = 6, MaxAge = 11, PresetId = "child" }],
};
living.NormalizeAfterLoad();
Assert.Equal(
[SwarmUiModelDefinition.BabesId, SwarmUiModelDefinition.DreamShaperId],
living.Models.Select(model => model.Id));
Assert.DoesNotContain(living.Models, model => model.Id == SwarmUiModelDefinition.MuseId);
Assert.DoesNotContain(living.Models, model => model.Id == SwarmUiModelDefinition.RealismV25Id);
Assert.Equal(SwarmUiModelDefinition.BabesId, living.Presets[0].Model);
Assert.Equal(SwarmUiModelDefinition.DreamShaperId, living.Presets[1].Model);
Assert.Equal(SwarmUiModelDefinition.DreamShaperId, living.Resolve(8, PortraitKind.Avatar).Model);
}
[Fact] [Fact]
public void Clone_DoesNotInjectKreaModelsIntoAnExistingSchoolCopy() public void Clone_DoesNotInjectKreaModelsIntoAnExistingSchoolCopy()
{ {