public void Combine_ShouldHasRightOrder() { // normal: B->A var normalA = new MiCakeModuleDescriptor(typeof(DepencyModuleA), (MiCakeModule)Activator.CreateInstance(typeof(DepencyModuleA))); var normalB = new MiCakeModuleDescriptor(typeof(DepencyModuleB), (MiCakeModule)Activator.CreateInstance(typeof(DepencyModuleB))); normalB.AddDependency(normalA); IMiCakeModuleCollection normalModules = new MiCakeModuleCollection() { normalA, normalB }; // feature: B(before) -> A(after) var featureA = new MiCakeModuleDescriptor(typeof(FeatureModuleA), (MiCakeModule)Activator.CreateInstance(typeof(FeatureModuleA))); var featureB = new MiCakeModuleDescriptor(typeof(FeatureModuleBDepencyModuleA), (MiCakeModule)Activator.CreateInstance(typeof(FeatureModuleBDepencyModuleA))); featureB.AddDependency(featureA); IMiCakeModuleCollection featureModules = new MiCakeModuleCollection() { featureA, featureB }; // expected: normalA <- normalB <- featureA <- featureB // Although the order of B shows the flag to start at the beginning, the A it depends on starts later, so it must start after A var modules = MiCakeModuleHelper.CombineNormalAndFeatureModules(normalModules, featureModules); var first = modules[0]; Assert.Equal(typeof(DepencyModuleA), first.ModuleType); var last = modules[^ 1];
public MiCakeDDDTestsBase() { //ADD Current MiCakeModule var testModuleType = typeof(MiCakeDDDTestModule); var currentModule = new MiCakeModuleDescriptor(testModuleType, (MiCakeModule)Activator.CreateInstance(testModuleType)); var moduleContext = new MiCakeModuleContext(); moduleContext.AllModules.Add(currentModule); moduleContext.MiCakeModules.Add(currentModule); MiCakeModuleContext = moduleContext; //ServiceCollection Services = new ServiceCollection(); Services.AddSingleton <IMiCakeModuleContext>(moduleContext); //AppOptions Services.AddOptions <MiCakeApplicationOptions>(); }