diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index e898fcc1..d7f91d0f 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -29,7 +29,7 @@ jobs: - name: Remove unused imports run: > - dotnet format style src/c-sharp/Archlens.sln --severity warn --no-restore --verbosity diagnostic + dotnet format style src/c-sharp/Archlens.sln --severity warn --no-restore --verbosity diagnostic --exclude "src/ArchlensTests/TestRepo" # To exclude files or folders, append e.g.: # --exclude "src/c-sharp/SomeFolder/**/*.cs" # --exclude "src/c-sharp/SomeFolder/**" diff --git a/src/ArchlensTests/Application/DependencyGraphBuilderTests.cs b/src/ArchlensTests/Application/DependencyGraphBuilderTests.cs index c6c9b6ec..9056ab81 100644 --- a/src/ArchlensTests/Application/DependencyGraphBuilderTests.cs +++ b/src/ArchlensTests/Application/DependencyGraphBuilderTests.cs @@ -1,4 +1,4 @@ -using System.Collections.Concurrent; +using System.Collections.Concurrent; using System.Text; using Archlens.Application; using Archlens.Domain.Interfaces; @@ -21,13 +21,13 @@ public sealed class DependencyGraphBuilderTests : IDisposable private void SetupMockProject() { - Directory.CreateDirectory(Path.Combine(_fs.Root, "Application")); + Directory.CreateDirectory(Path.Combine(_fs.Root, "Shop")); - Directory.CreateDirectory(Path.Combine(_fs.Root, "Domain", "Factories")); - Directory.CreateDirectory(Path.Combine(_fs.Root, "Domain", "Interfaces")); - Directory.CreateDirectory(Path.Combine(_fs.Root, "Domain", "Models", "Enums")); - Directory.CreateDirectory(Path.Combine(_fs.Root, "Domain", "Models", "Records")); - Directory.CreateDirectory(Path.Combine(_fs.Root, "Domain", "Utils")); + Directory.CreateDirectory(Path.Combine(_fs.Root, "Inventory", "Suppliers")); + Directory.CreateDirectory(Path.Combine(_fs.Root, "Inventory", "Ports")); + Directory.CreateDirectory(Path.Combine(_fs.Root, "Inventory", "Stock", "Tags")); + Directory.CreateDirectory(Path.Combine(_fs.Root, "Inventory", "Stock", "Labels")); + Directory.CreateDirectory(Path.Combine(_fs.Root, "Inventory", "Tools")); } private static ProjectChanges CreateProjectChanges(IReadOnlyDictionary> changedFilesByDirectory, @@ -77,43 +77,43 @@ public async Task BuildGraph_BuildsExpectedTreeStructure_ForHappyPath() { SetupMockProject(); - _fs.File("Domain/Factories/DependencyParserFactory.cs", "/* */"); - _fs.File("Domain/Factories/RendererFactory.cs", "/* */"); - _fs.File("Domain/Models/Records/Options.cs", "/* */"); - _fs.File("Domain/Models/DependencyGraph.cs", "/* */"); + _fs.File("Inventory/Suppliers/StockSupplier.cs", "/* */"); + _fs.File("Inventory/Suppliers/ShipmentSupplier.cs", "/* */"); + _fs.File("Inventory/Stock/Labels/PriceTag.cs", "/* */"); + _fs.File("Inventory/Stock/Catalogue.cs", "/* */"); - var depFactoryFile = RelativePath.File(_fs.Root, "./Domain/Factories/DependencyParserFactory.cs"); - var rendFactoryFile = RelativePath.File(_fs.Root, "./Domain/Factories/RendererFactory.cs"); - var optionsFile = RelativePath.File(_fs.Root, "./Domain/Models/Records/Options.cs"); - var depGraphFile = RelativePath.File(_fs.Root, "./Domain/Models/DependencyGraph.cs"); + var stockSupplierFile = RelativePath.File(_fs.Root, "./Inventory/Suppliers/StockSupplier.cs"); + var shipmentSupplierFile = RelativePath.File(_fs.Root, "./Inventory/Suppliers/ShipmentSupplier.cs"); + var priceTagFile = RelativePath.File(_fs.Root, "./Inventory/Stock/Labels/PriceTag.cs"); + var catalogueFile = RelativePath.File(_fs.Root, "./Inventory/Stock/Catalogue.cs"); var rootDir = RelativePath.Directory(_fs.Root, _fs.Root); - var domainDir = RelativePath.Directory(_fs.Root, "./Domain"); - var factoriesDir = RelativePath.Directory(_fs.Root, "./Domain/Factories"); - var modelsDir = RelativePath.Directory(_fs.Root, "./Domain/Models"); - var recordsDir = RelativePath.Directory(_fs.Root, "./Domain/Models/Records"); - var enumsDir = RelativePath.Directory(_fs.Root, "./Domain/Models/Enums"); - var interfacesDir = RelativePath.Directory(_fs.Root, "./Domain/Interfaces"); - var utilsDir = RelativePath.Directory(_fs.Root, "./Domain/Utils"); - var infraDir = RelativePath.Directory(_fs.Root, "./Infra"); + var inventoryDir = RelativePath.Directory(_fs.Root, "./Inventory"); + var suppliersDir = RelativePath.Directory(_fs.Root, "./Inventory/Suppliers"); + var stockDir = RelativePath.Directory(_fs.Root, "./Inventory/Stock"); + var labelsDir = RelativePath.Directory(_fs.Root, "./Inventory/Stock/Labels"); + var tagsDir = RelativePath.Directory(_fs.Root, "./Inventory/Stock/Tags"); + var portsDir = RelativePath.Directory(_fs.Root, "./Inventory/Ports"); + var toolsDir = RelativePath.Directory(_fs.Root, "./Inventory/Tools"); + var warehouseDir = RelativePath.Directory(_fs.Root, "./Warehouse"); var changedModules = new Dictionary>() { - [rootDir] = [domainDir], - [domainDir] = [factoriesDir, interfacesDir, modelsDir, utilsDir], - [factoriesDir] = [depFactoryFile, rendFactoryFile], - [modelsDir] = [enumsDir, recordsDir, depGraphFile], - [recordsDir] = [optionsFile], + [rootDir] = [inventoryDir], + [inventoryDir] = [suppliersDir, portsDir, stockDir, toolsDir], + [suppliersDir] = [stockSupplierFile, shipmentSupplierFile], + [stockDir] = [tagsDir, labelsDir, catalogueFile], + [labelsDir] = [priceTagFile], }; var changes = CreateProjectChanges(changedModules, [], []); var parseMap = new Dictionary>() { - [depFactoryFile] = [interfacesDir, enumsDir, recordsDir, infraDir], - [rendFactoryFile] = [interfacesDir, enumsDir, infraDir], - [optionsFile] = [enumsDir], - [depGraphFile] = [utilsDir] + [stockSupplierFile] = [portsDir, tagsDir, labelsDir, warehouseDir], + [shipmentSupplierFile] = [portsDir, tagsDir, warehouseDir], + [priceTagFile] = [tagsDir], + [catalogueFile] = [toolsDir] }; var parser = new DependencyParserSpy(_fs.Root, parseMap); @@ -122,23 +122,23 @@ public async Task BuildGraph_BuildsExpectedTreeStructure_ForHappyPath() var graph = await builder.GetGraphAsync(changes, null); var root = RequireItem(graph, rootDir); - var domain = RequireItem(graph, domainDir); - var factories = RequireItem(graph, factoriesDir); - var models = RequireItem(graph, modelsDir); - var depFactItem = RequireItem(graph, depFactoryFile); - var rendFactItem = RequireItem(graph, rendFactoryFile); - var optionsItem = RequireItem(graph, optionsFile); - var depGraphItem = RequireItem(graph, depGraphFile); - - Assert.Contains(domain.Path, graph.ChildrenOf(rootDir)); - Assert.Contains(factories.Path, graph.ChildrenOf(domainDir)); - Assert.Contains(models.Path, graph.ChildrenOf(domainDir)); + var inventory = RequireItem(graph, inventoryDir); + var suppliers = RequireItem(graph, suppliersDir); + var stock = RequireItem(graph, stockDir); + var stockSupplierItem = RequireItem(graph, stockSupplierFile); + var shipmentSupplierItem = RequireItem(graph, shipmentSupplierFile); + var priceTagItem = RequireItem(graph, priceTagFile); + var catalogueItem = RequireItem(graph, catalogueFile); + + Assert.Contains(inventory.Path, graph.ChildrenOf(rootDir)); + Assert.Contains(suppliers.Path, graph.ChildrenOf(inventoryDir)); + Assert.Contains(stock.Path, graph.ChildrenOf(inventoryDir)); Assert.Equal(4, parser.Calls.Count); - Assert.Contains(depFactItem.Path, parser.Calls); - Assert.Contains(rendFactItem.Path, parser.Calls); - Assert.Contains(optionsItem.Path, parser.Calls); - Assert.Contains(depGraphItem.Path, parser.Calls); + Assert.Contains(stockSupplierItem.Path, parser.Calls); + Assert.Contains(shipmentSupplierItem.Path, parser.Calls); + Assert.Contains(priceTagItem.Path, parser.Calls); + Assert.Contains(catalogueItem.Path, parser.Calls); } [Fact] @@ -146,10 +146,10 @@ public async Task BuildGraph_DeduplicatesDuplicateFileEntries() { SetupMockProject(); - _fs.File("Domain/Factories/Duplicate.cs", "/* */"); + _fs.File("Inventory/Suppliers/Duplicate.cs", "/* */"); - var factoryDirPath = RelativePath.Directory(_fs.Root, "./Domain/Factories/"); - var csPath = RelativePath.File(_fs.Root, "./Domain/Factories/Duplicate.cs"); + var suppliersDirPath = RelativePath.Directory(_fs.Root, "./Inventory/Suppliers/"); + var csPath = RelativePath.File(_fs.Root, "./Inventory/Suppliers/Duplicate.cs"); var depPath = RelativePath.Directory(_fs.Root, "./Dep/"); var parseMap = new Dictionary>() @@ -161,14 +161,14 @@ public async Task BuildGraph_DeduplicatesDuplicateFileEntries() var builder = CreateBuilder([parser]); var changedModules = ChangedModules( - (factoryDirPath, new[] { csPath, csPath, csPath }) + (suppliersDirPath, new[] { csPath, csPath, csPath }) ); var changes = CreateProjectChanges(changedModules, [], []); var graph = await builder.GetGraphAsync(changes, null); - var dirItem = RequireItem(graph, factoryDirPath); + var dirItem = RequireItem(graph, suppliersDirPath); var dirItemChildren = graph.ChildrenOf(dirItem.Path); Assert.Single(dirItemChildren); @@ -182,10 +182,10 @@ public async Task ContainsPath_AcceptsRelativeVariants_ForSameFile() { SetupMockProject(); - _fs.File("Domain/Factories/Variant.cs", "/* */"); + _fs.File("Inventory/Suppliers/Variant.cs", "/* */"); - var factoryDirPath = RelativePath.Directory(_fs.Root, "./Domain/Factories/"); - var csPath = RelativePath.File(_fs.Root, "./Domain/Factories/Variant.cs"); + var suppliersDirPath = RelativePath.Directory(_fs.Root, "./Inventory/Suppliers/"); + var csPath = RelativePath.File(_fs.Root, "./Inventory/Suppliers/Variant.cs"); var parser = new DependencyParserSpy(_fs.Root, new Dictionary>() { @@ -195,7 +195,7 @@ public async Task ContainsPath_AcceptsRelativeVariants_ForSameFile() var builder = CreateBuilder([parser]); var changedModules = ChangedModules( - (factoryDirPath, new[] { csPath }) + (suppliersDirPath, new[] { csPath }) ); var changes = CreateProjectChanges(changedModules, [], []); @@ -203,8 +203,8 @@ public async Task ContainsPath_AcceptsRelativeVariants_ForSameFile() Assert.True(graph.ContainsProjectItem(csPath)); - var rel1 = RelativePath.File(_fs.Root, "./Domain/Factories/Variant.cs"); - var rel2 = RelativePath.File(_fs.Root, "Domain/Factories/Variant.cs"); + var rel1 = RelativePath.File(_fs.Root, "./Inventory/Suppliers/Variant.cs"); + var rel2 = RelativePath.File(_fs.Root, "Inventory/Suppliers/Variant.cs"); Assert.True(graph.ContainsProjectItem(rel1)); Assert.True(graph.ContainsProjectItem(rel2)); } @@ -214,26 +214,26 @@ public async Task BuildGraph_CreatesNodesForDirectoriesMentionedInContents_EvenI { SetupMockProject(); var rootDirPath = RelativePath.Directory(_fs.Root, _fs.Root); - var domainDirPath = RelativePath.Directory(_fs.Root, "./Domain/"); - var modelsDirPath = RelativePath.Directory(_fs.Root, "./Domain/Models/"); + var inventoryDirPath = RelativePath.Directory(_fs.Root, "./Inventory/"); + var stockDirPath = RelativePath.Directory(_fs.Root, "./Inventory/Stock/"); var parser = new DependencyParserSpy(_fs.Root, new Dictionary>()); var builder = CreateBuilder([parser]); var changedModules = ChangedModules( - (rootDirPath, new[] { domainDirPath }), - (domainDirPath, new[] { modelsDirPath }) + (rootDirPath, new[] { inventoryDirPath }), + (inventoryDirPath, new[] { stockDirPath }) ); var changes = CreateProjectChanges(changedModules, [], []); var graph = await builder.GetGraphAsync(changes, null); - Assert.True(graph.ContainsProjectItem(domainDirPath)); - Assert.True(graph.ContainsProjectItem(modelsDirPath)); + Assert.True(graph.ContainsProjectItem(inventoryDirPath)); + Assert.True(graph.ContainsProjectItem(stockDirPath)); - var _ = RequireItem(graph, domainDirPath); - var modelsNode = RequireItem(graph, modelsDirPath); - Assert.Contains(modelsNode.Path, graph.ChildrenOf(domainDirPath)); + var _ = RequireItem(graph, inventoryDirPath); + var stockNode = RequireItem(graph, stockDirPath); + Assert.Contains(stockNode.Path, graph.ChildrenOf(inventoryDirPath)); } [Fact] @@ -241,75 +241,75 @@ public async Task Merge_PrefersChangedLeafDependencies_OverLastSaved() { SetupMockProject(); - _fs.File("Domain/Factories/DependencyParserFactory.cs", "/* */"); + _fs.File("Inventory/Suppliers/StockSupplier.cs", "/* */"); - var depFactoryDirPath = RelativePath.Directory(_fs.Root, "./Domain/Factories/"); - var depFactoryFilePath = RelativePath.File(_fs.Root, "./Domain/Factories/DependencyParserFactory.cs"); + var suppliersDirPath = RelativePath.Directory(_fs.Root, "./Inventory/Suppliers/"); + var stockSupplierFilePath = RelativePath.File(_fs.Root, "./Inventory/Suppliers/StockSupplier.cs"); var newDepPath = RelativePath.Directory(_fs.Root, "./New/Dep/"); - var enumsPath = RelativePath.Directory(_fs.Root, "./Domain/Models/Enums/"); + var tagsPath = RelativePath.Directory(_fs.Root, "./Inventory/Stock/Tags/"); var lastSavedGraph = TestDependencyGraph.MakeDependencyGraph(_fs.Root); var parser = new DependencyParserSpy(_fs.Root, new Dictionary>() { - [depFactoryFilePath] = [newDepPath, enumsPath] + [stockSupplierFilePath] = [newDepPath, tagsPath] }); var builder = CreateBuilder([parser]); var changedModules = ChangedModules( - (depFactoryDirPath, new[] { depFactoryFilePath }), + (suppliersDirPath, new[] { stockSupplierFilePath }), (newDepPath, []) ); var changes = CreateProjectChanges(changedModules, [], []); var graph = await builder.GetGraphAsync(changes, lastSavedGraph); - var depFactoryProjectItem = RequireItem(graph, depFactoryFilePath); + var stockSupplierItem = RequireItem(graph, stockSupplierFilePath); - var infraPath = RelativePath.Directory(_fs.Root, "./Infra/"); - Assert.Contains(newDepPath, graph.DependenciesFrom(depFactoryProjectItem.Path).Keys); - Assert.Contains(enumsPath, graph.DependenciesFrom(depFactoryProjectItem.Path).Keys); - Assert.DoesNotContain(infraPath, graph.DependenciesFrom(depFactoryProjectItem.Path).Keys); + var warehousePath = RelativePath.Directory(_fs.Root, "./Warehouse/"); + Assert.Contains(newDepPath, graph.DependenciesFrom(stockSupplierItem.Path).Keys); + Assert.Contains(tagsPath, graph.DependenciesFrom(stockSupplierItem.Path).Keys); + Assert.DoesNotContain(warehousePath, graph.DependenciesFrom(stockSupplierItem.Path).Keys); } [Fact] public async Task Merge_RetainsUnchangedSubtrees_FromLastSaved() { SetupMockProject(); - _fs.File("Domain/Models/Records/Options.cs", "/* */"); - _fs.File("./Domain/Factories/RendererFactory.cs", "/* */"); + _fs.File("Inventory/Stock/Labels/PriceTag.cs", "/* */"); + _fs.File("./Inventory/Suppliers/ShipmentSupplier.cs", "/* */"); var root = _fs.Root; - var recordDirPath = RelativePath.Directory(root, "./Domain/Models/Records/"); - var optionsPath = RelativePath.File(root, "./Domain/Models/Records/Options.cs"); + var labelsDirPath = RelativePath.Directory(root, "./Inventory/Stock/Labels/"); + var priceTagPath = RelativePath.File(root, "./Inventory/Stock/Labels/PriceTag.cs"); var changedDep = RelativePath.Directory(root, "./Changed/Dep/"); - var renderFactoryPath = RelativePath.File(root, "./Infra/Factories/RendererFactory.cs"); - var dependencyGraphPath = RelativePath.File(root, "./Domain/Models/DependencyGraph.cs"); + var shipmentSupplierPath = RelativePath.File(root, "./Warehouse/Suppliers/ShipmentSupplier.cs"); + var cataloguePath = RelativePath.File(root, "./Inventory/Stock/Catalogue.cs"); var lastSavedGraph = TestDependencyGraph.MakeDependencyGraph(root); var parser = new DependencyParserSpy(root, new Dictionary>() { - [optionsPath] = [changedDep] + [priceTagPath] = [changedDep] }); var builder = CreateBuilder([parser]); var changedModules = ChangedModules( - (recordDirPath, new[] { optionsPath }) + (labelsDirPath, new[] { priceTagPath }) ); var changes = CreateProjectChanges(changedModules, [], []); var graph = await builder.GetGraphAsync(changes, lastSavedGraph); - Assert.True(graph.ContainsProjectItem(renderFactoryPath)); - Assert.True(graph.ContainsProjectItem(dependencyGraphPath)); + Assert.True(graph.ContainsProjectItem(shipmentSupplierPath)); + Assert.True(graph.ContainsProjectItem(cataloguePath)); - var optionsItem = RequireItem(graph, optionsPath); - Assert.Contains(changedDep, graph.DependenciesFrom(optionsItem.Path).Keys); + var priceTagItem = RequireItem(graph, priceTagPath); + Assert.Contains(changedDep, graph.DependenciesFrom(priceTagItem.Path).Keys); } [Fact] @@ -317,10 +317,10 @@ public async Task Merge_AddsNewFiles_ThatDidNotExistInLastSaved() { SetupMockProject(); - _fs.File("Domain/Utils/NewUtil.cs", "/* */"); + _fs.File("Inventory/Tools/NewUtil.cs", "/* */"); - var utilsDirPath = RelativePath.Directory(_fs.Root, "./Domain/Utils/"); - var newPath = RelativePath.File(_fs.Root, "./Domain/Utils/NewUtil.cs"); + var toolsDirPath = RelativePath.Directory(_fs.Root, "./Inventory/Tools/"); + var newPath = RelativePath.File(_fs.Root, "./Inventory/Tools/NewUtil.cs"); var lastSavedGraph = TestDependencyGraph.MakeDependencyGraph(_fs.Root); @@ -333,7 +333,7 @@ public async Task Merge_AddsNewFiles_ThatDidNotExistInLastSaved() var builder = CreateBuilder([parser]); var changedModules = ChangedModules( - (utilsDirPath, new[] { newPath }) + (toolsDirPath, new[] { newPath }) ); var changes = CreateProjectChanges(changedModules, [], []); @@ -350,10 +350,10 @@ public async Task Cancellation_StopsParsing_AndThrows() { SetupMockProject(); - var cs = _fs.File("Domain/Factories/Cancellable.cs", "/* */"); + var cs = _fs.File("Inventory/Suppliers/Cancellable.cs", "/* */"); - var factoryDirPath = RelativePath.Directory(_fs.Root, "./Domain/Factories/"); - var csPath = RelativePath.File(_fs.Root, "./Domain/Factories/Variant.cs"); + var suppliersDirPath = RelativePath.Directory(_fs.Root, "./Inventory/Suppliers/"); + var csPath = RelativePath.File(_fs.Root, "./Inventory/Suppliers/Variant.cs"); var newDepPath = RelativePath.Directory(_fs.Root, "./New/Dep/"); var parser = new DependencyParserSpy(_fs.Root, new Dictionary>() @@ -364,7 +364,7 @@ public async Task Cancellation_StopsParsing_AndThrows() var builder = CreateBuilder([parser]); var changedModules = ChangedModules( - (factoryDirPath, new[] { csPath }) + (suppliersDirPath, new[] { csPath }) ); var changes = CreateProjectChanges(changedModules, [], []); @@ -380,37 +380,37 @@ public async Task BuildGraph_CreatesCorrectParentChain_ForDeepDirectory() { SetupMockProject(); - var depGraph = _fs.File("Domain/Models/DependencyGraph.cs", "/* */"); + var depGraph = _fs.File("Inventory/Stock/Catalogue.cs", "/* */"); var rootPath = RelativePath.Directory(_fs.Root, _fs.Root); - var domainDirPath = RelativePath.Directory(_fs.Root, "./Domain/"); - var modelsDirPath = RelativePath.Directory(_fs.Root, "./Domain/Models/"); + var inventoryDirPath = RelativePath.Directory(_fs.Root, "./Inventory/"); + var stockDirPath = RelativePath.Directory(_fs.Root, "./Inventory/Stock/"); - var depGraphPath = RelativePath.File(_fs.Root, "./Domain/Models/DependencyGraph.cs"); + var cataloguePath = RelativePath.File(_fs.Root, "./Inventory/Stock/Catalogue.cs"); var xPath = RelativePath.File(_fs.Root, "./X/"); var parser = new DependencyParserSpy(_fs.Root, new Dictionary>() { - [depGraphPath] = [xPath] + [cataloguePath] = [xPath] }); var builder = CreateBuilder([parser]); var changedModules = ChangedModules( - (rootPath, new[] { domainDirPath }), - (domainDirPath, new[] { modelsDirPath }), - (modelsDirPath, new[] { depGraphPath }) + (rootPath, new[] { inventoryDirPath }), + (inventoryDirPath, new[] { stockDirPath }), + (stockDirPath, new[] { cataloguePath }) ); var changes = CreateProjectChanges(changedModules, [], []); var graph = await builder.GetGraphAsync(changes, null); var _ = RequireItem(graph, rootPath); - var domain = RequireItem(graph, domainDirPath); - var models = RequireItem(graph, modelsDirPath); + var inventory = RequireItem(graph, inventoryDirPath); + var stock = RequireItem(graph, stockDirPath); - Assert.Contains(domain.Path, graph.ChildrenOf(rootPath)); - Assert.Contains(models.Path, graph.ChildrenOf(domainDirPath)); + Assert.Contains(inventory.Path, graph.ChildrenOf(rootPath)); + Assert.Contains(stock.Path, graph.ChildrenOf(inventoryDirPath)); } [Fact] @@ -420,27 +420,27 @@ public async Task BuildGraph_DoesNotDuplicateDirectoryNodes_WhenPathsVary() var srcPath = RelativePath.Directory(_fs.Root, _fs.Root); - var domain1 = RelativePath.Directory(_fs.Root, Path.Combine(_fs.Root, "Domain")); - var domain2 = RelativePath.Directory(_fs.Root, $"{domain1}{Path.DirectorySeparatorChar}"); - var domain3 = RelativePath.Directory(_fs.Root, Path.Combine(_fs.Root, "./Domain")); - var domain4 = RelativePath.Directory(_fs.Root, "./Domain"); + var dir1 = RelativePath.Directory(_fs.Root, Path.Combine(_fs.Root, "Inventory")); + var dir2 = RelativePath.Directory(_fs.Root, $"{dir1}{Path.DirectorySeparatorChar}"); + var dir3 = RelativePath.Directory(_fs.Root, Path.Combine(_fs.Root, "./Inventory")); + var dir4 = RelativePath.Directory(_fs.Root, "./Inventory"); var parser = new DependencyParserSpy(_fs.Root, new Dictionary>()); var builder = CreateBuilder([parser]); var changedModules = new Dictionary>() { - [srcPath] = [domain1], - [domain1] = [domain2, domain3, domain4] + [srcPath] = [dir1], + [dir1] = [dir2, dir3, dir4] }; var changes = CreateProjectChanges(changedModules, [], []); var graph = await builder.GetGraphAsync(changes, null); - var n1 = RequireItem(graph, domain1); - var n2 = RequireItem(graph, domain2); - var n3 = RequireItem(graph, domain3); - var n4 = RequireItem(graph, domain4); + var n1 = RequireItem(graph, dir1); + var n2 = RequireItem(graph, dir2); + var n3 = RequireItem(graph, dir3); + var n4 = RequireItem(graph, dir4); Assert.True(ReferenceEquals(n1, n2)); Assert.True(ReferenceEquals(n1, n3)); @@ -455,32 +455,32 @@ public async Task Merge_PrefersChangedNodeStructure_AndDependencies() { SetupMockProject(); - var _ = _fs.File("Domain/Models/DependencyGraph.cs", "/* */"); + var _ = _fs.File("Inventory/Stock/Catalogue.cs", "/* */"); - var modelsDirPath = RelativePath.Directory(_fs.Root, "./Domain/Models/"); - var depGraphPath = RelativePath.File(_fs.Root, "./Domain/Models/DependencyGraph.cs"); + var stockDirPath = RelativePath.Directory(_fs.Root, "./Inventory/Stock/"); + var cataloguePath = RelativePath.File(_fs.Root, "./Inventory/Stock/Catalogue.cs"); var changedFilePath = RelativePath.Directory(_fs.Root, "./Changed/Node/Dep/"); - var domainUtilPath = RelativePath.Directory(_fs.Root, "./Domain/Utils/"); + var toolsPath = RelativePath.Directory(_fs.Root, "./Inventory/Tools/"); var lastSaved = TestDependencyGraph.MakeDependencyGraph(_fs.Root); - lastSaved.AddDependency(depGraphPath, domainUtilPath, DependencyType.Uses); + lastSaved.AddDependency(cataloguePath, toolsPath, DependencyType.Uses); var parser = new DependencyParserSpy(_fs.Root, new Dictionary>() { - [depGraphPath] = [changedFilePath] + [cataloguePath] = [changedFilePath] }); var builder = CreateBuilder([parser]); var changedModules = ChangedModules( - (modelsDirPath, new[] { depGraphPath }) + (stockDirPath, new[] { cataloguePath }) ); var changes = CreateProjectChanges(changedModules, [], []); var graph = await builder.GetGraphAsync(changes, lastSaved); - RequireItem(graph, modelsDirPath); - RequireItem(graph, depGraphPath); - Assert.Contains(changedFilePath, graph.DependenciesFrom(depGraphPath).Keys); - Assert.DoesNotContain(domainUtilPath, graph.DependenciesFrom(depGraphPath).Keys); + RequireItem(graph, stockDirPath); + RequireItem(graph, cataloguePath); + Assert.Contains(changedFilePath, graph.DependenciesFrom(cataloguePath).Keys); + Assert.DoesNotContain(toolsPath, graph.DependenciesFrom(cataloguePath).Keys); } [Fact] @@ -492,34 +492,34 @@ public async Task Merge_WhenTypeConflicts_IncomingReplacesExisting() var lastSaved = TestDependencyGraph.MakeDependencyGraph(rootPath); var oldFile = RelativePath.Directory(rootPath, "./Old/Dep/"); - var bogusPath = RelativePath.Directory(rootPath, "./Domain/Models/"); + var bogusPath = RelativePath.Directory(rootPath, "./Inventory/Stock/"); var bogusItem = TestGraphs.AddProjectItem(lastSaved, bogusPath, ProjectItemType.Directory, [oldFile]); - var domainPath = RelativePath.Directory(rootPath, "./Domain/"); - lastSaved.AddChild(domainPath, bogusItem); + var inventoryPath = RelativePath.Directory(rootPath, "./Inventory/"); + lastSaved.AddChild(inventoryPath, bogusItem); - var modelsDirPath = RelativePath.Directory(rootPath, "./Domain/Models/"); + var stockDirPath = RelativePath.Directory(rootPath, "./Inventory/Stock/"); - var depGraph = _fs.File("Domain/Models/DependencyGraph.cs", "/* */"); - var depGraphPath = RelativePath.File(rootPath, "Domain/Models/DependencyGraph.cs"); + var depGraph = _fs.File("Inventory/Stock/Catalogue.cs", "/* */"); + var cataloguePath = RelativePath.File(rootPath, "Inventory/Stock/Catalogue.cs"); var newDepPath = RelativePath.Directory(_fs.Root, "./New/Dep/"); var parser = new DependencyParserSpy(_fs.Root, new Dictionary>() { - [depGraphPath] = [newDepPath] + [cataloguePath] = [newDepPath] }); var builder = CreateBuilder([parser]); var changedModules = ChangedModules( - (modelsDirPath, new[] { depGraphPath }) + (stockDirPath, new[] { cataloguePath }) ); var changes = CreateProjectChanges(changedModules, [], []); var graph = await builder.GetGraphAsync(changes, lastSaved); - var models = graph.GetProjectItem(modelsDirPath); - Assert.NotNull(models); - Assert.IsType(models); + var stock = graph.GetProjectItem(stockDirPath); + Assert.NotNull(stock); + Assert.IsType(stock); } [Fact] @@ -527,7 +527,7 @@ public async Task BuildGraph_IgnoresNullOrWhitespaceItems_InContents() { SetupMockProject(); - var modelsDirPath = RelativePath.Directory(_fs.Root, "./Domain/"); + var parentDir = RelativePath.Directory(_fs.Root, "./Shop/"); var emptyPath = RelativePath.Directory(_fs.Root, ""); var spacesPath = RelativePath.Directory(_fs.Root, " "); @@ -539,7 +539,7 @@ public async Task BuildGraph_IgnoresNullOrWhitespaceItems_InContents() var changedModules = new Dictionary>() { - [modelsDirPath] = [emptyPath, spacesPath, tabsPath, newlinePath] + [parentDir] = [emptyPath, spacesPath, tabsPath, newlinePath] }; var changes = CreateProjectChanges(changedModules, [], []); @@ -567,12 +567,12 @@ public async Task BuildGraph_IsDeterministic_ForSameInputs() { SetupMockProject(); - var f1 = _fs.File("Domain/Factories/A.cs", "/* */"); - var f1Path = RelativePath.File(_fs.Root, "./Domain/Factories/A.cs"); - var factoriesDirPath = RelativePath.Directory(_fs.Root, "./Domain/Factories/"); + var f1 = _fs.File("Inventory/Suppliers/A.cs", "/* */"); + var f1Path = RelativePath.File(_fs.Root, "./Inventory/Suppliers/A.cs"); + var suppliersDirPath = RelativePath.Directory(_fs.Root, "./Inventory/Suppliers/"); var changedModules = ChangedModules( - (factoriesDirPath, [f1Path]) + (suppliersDirPath, [f1Path]) ); var changes = CreateProjectChanges(changedModules, [], []); @@ -649,7 +649,7 @@ public async Task GetGraphAsync_AppliesDeletedFiles_RemovingItemsFromMergedGraph var lastSaved = TestDependencyGraph.MakeDependencyGraph(_fs.Root); - var deleted = RelativePath.File(_fs.Root, "./Infra/Factories/RendererFactory.cs"); + var deleted = RelativePath.File(_fs.Root, "./Warehouse/Suppliers/ShipmentSupplier.cs"); Assert.True(lastSaved.ContainsProjectItem(deleted)); var changes = CreateProjectChanges( @@ -675,13 +675,13 @@ public async Task GetGraphAsync_AppliesDeletedDirectories_RemovingSubtree() var lastSaved = TestDependencyGraph.MakeDependencyGraph(_fs.Root); - var deletedDir = RelativePath.Directory(_fs.Root, "./Domain/Models/"); + var deletedDir = RelativePath.Directory(_fs.Root, "./Inventory/Stock/"); Assert.True(lastSaved.ContainsProjectItem(deletedDir)); - var deletedChild1 = RelativePath.Directory(_fs.Root, "./Domain/Models/Records/"); - var deletedChild2 = RelativePath.Directory(_fs.Root, "./Domain/Models/Enums/"); - var deletedLeaf1 = RelativePath.File(_fs.Root, "./Domain/Models/Records/Options.cs"); - var deletedLeaf2 = RelativePath.File(_fs.Root, "./Domain/Models/DependencyGraph.cs"); + var deletedChild1 = RelativePath.Directory(_fs.Root, "./Inventory/Stock/Labels/"); + var deletedChild2 = RelativePath.Directory(_fs.Root, "./Inventory/Stock/Tags/"); + var deletedLeaf1 = RelativePath.File(_fs.Root, "./Inventory/Stock/Labels/PriceTag.cs"); + var deletedLeaf2 = RelativePath.File(_fs.Root, "./Inventory/Stock/Catalogue.cs"); var changes = CreateProjectChanges( changedFilesByDirectory: new Dictionary>(), @@ -706,11 +706,11 @@ public async Task BuildGraph_DoesNotCallParser_ForDirectoriesOnlyForFiles() { SetupMockProject(); - _fs.File("Domain/Utils/U.cs", "/* */"); + _fs.File("Inventory/Tools/U.cs", "/* */"); - var domainDir = RelativePath.Directory(_fs.Root, "./Domain/"); - var utilsDir = RelativePath.Directory(_fs.Root, "./Domain/Utils/"); - var uFile = RelativePath.File(_fs.Root, "./Domain/Utils/U.cs"); + var inventoryDir = RelativePath.Directory(_fs.Root, "./Inventory/"); + var toolsDir = RelativePath.Directory(_fs.Root, "./Inventory/Tools/"); + var uFile = RelativePath.File(_fs.Root, "./Inventory/Tools/U.cs"); var parser = new FixedMapParser(_fs.Root, new Dictionary> { @@ -720,8 +720,8 @@ public async Task BuildGraph_DoesNotCallParser_ForDirectoriesOnlyForFiles() var builder = CreateBuilder([parser]); var changedModules = ChangedModules( - (domainDir, new[] { utilsDir, utilsDir, utilsDir }), - (utilsDir, new[] { uFile }) + (inventoryDir, new[] { toolsDir, toolsDir, toolsDir }), + (toolsDir, new[] { uFile }) ); var changes = CreateProjectChanges(changedModules, [], []); @@ -731,8 +731,8 @@ public async Task BuildGraph_DoesNotCallParser_ForDirectoriesOnlyForFiles() Assert.Single(parser.Calls); Assert.Equal(uFile, parser.Calls[0]); - var domainChildren = graph.ChildrenOf(domainDir); - Assert.Single(domainChildren, x => x.Equals(utilsDir)); + var inventoryChildren = graph.ChildrenOf(inventoryDir); + Assert.Single(inventoryChildren, x => x.Equals(toolsDir)); } [Fact] @@ -740,12 +740,12 @@ public async Task ParserException_IsLogged_AndProcessingContinues_ForOtherItems( { SetupMockProject(); - _fs.File("Domain/Factories/Bad.cs", "/* */"); - _fs.File("Domain/Factories/Good.cs", "/* */"); + _fs.File("Inventory/Suppliers/Bad.cs", "/* */"); + _fs.File("Inventory/Suppliers/Good.cs", "/* */"); - var dir = RelativePath.Directory(_fs.Root, "./Domain/Factories/"); - var bad = RelativePath.File(_fs.Root, "./Domain/Factories/Bad.cs"); - var good = RelativePath.File(_fs.Root, "./Domain/Factories/Good.cs"); + var dir = RelativePath.Directory(_fs.Root, "./Inventory/Suppliers/"); + var bad = RelativePath.File(_fs.Root, "./Inventory/Suppliers/Bad.cs"); + var good = RelativePath.File(_fs.Root, "./Inventory/Suppliers/Good.cs"); var parser = new ThrowingParser("Bad.cs", new InvalidOperationException("Contains Bad.cs")); var builder = CreateBuilder([parser]); @@ -783,26 +783,26 @@ public async Task ParserException_DoesNotWipeExistingNode_WhenMergingWithLastSav var lastSaved = TestDependencyGraph.MakeDependencyGraph(_fs.Root); - var depGraph = RelativePath.File(_fs.Root, "./Domain/Models/DependencyGraph.cs"); - var utilsDir = RelativePath.Directory(_fs.Root, "./Domain/Utils/"); - Assert.Contains(utilsDir, lastSaved.DependenciesFrom(depGraph).Keys); + var catalogue = RelativePath.File(_fs.Root, "./Inventory/Stock/Catalogue.cs"); + var toolsDir = RelativePath.Directory(_fs.Root, "./Inventory/Tools/"); + Assert.Contains(toolsDir, lastSaved.DependenciesFrom(catalogue).Keys); - _fs.File("Domain/Models/DependencyGraph.cs", "/* */"); + _fs.File("Inventory/Stock/Catalogue.cs", "/* */"); - var modelsDir = RelativePath.Directory(_fs.Root, "./Domain/Models/"); + var stockDir = RelativePath.Directory(_fs.Root, "./Inventory/Stock/"); var changes = CreateProjectChanges( - ChangedModules((modelsDir, new[] { depGraph })), + ChangedModules((stockDir, new[] { catalogue })), deletedFiles: [], deletedDirectories: [] ); - var parser = new ThrowingParser("DependencyGraph.cs", new Exception("parse failed")); + var parser = new ThrowingParser("Catalogue.cs", new Exception("parse failed")); var builder = CreateBuilder([parser]); var merged = await builder.GetGraphAsync(changes, lastSaved); - Assert.True(merged.ContainsProjectItem(depGraph)); - Assert.Contains(utilsDir, merged.DependenciesFrom(depGraph).Keys); + Assert.True(merged.ContainsProjectItem(catalogue)); + Assert.Contains(toolsDir, merged.DependenciesFrom(catalogue).Keys); } [Fact] @@ -810,16 +810,16 @@ public async Task OperationCanceledException_FromParser_IsNotSwallowed() { SetupMockProject(); - _fs.File("Domain/Utils/C.cs", "/* */"); + _fs.File("Inventory/Tools/C.cs", "/* */"); - var utilsDir = RelativePath.Directory(_fs.Root, "./Domain/Utils/"); - var cFile = RelativePath.File(_fs.Root, "./Domain/Utils/C.cs"); + var toolsDir = RelativePath.Directory(_fs.Root, "./Inventory/Tools/"); + var cFile = RelativePath.File(_fs.Root, "./Inventory/Tools/C.cs"); var blocking = new BlockingUntilCancelledParser(_fs.Root); var builder = CreateBuilder([blocking]); var changes = CreateProjectChanges( - ChangedModules((utilsDir, new[] { cFile })), + ChangedModules((toolsDir, new[] { cFile })), deletedFiles: [], deletedDirectories: [] ); @@ -862,10 +862,10 @@ public async Task MultipleParsers_ShouldAggregateDependencies() { SetupMockProject(); - _fs.File("Domain/Factories/Multi.cs", "/* */"); + _fs.File("Inventory/Suppliers/Multi.cs", "/* */"); - var dir = RelativePath.Directory(_fs.Root, "./Domain/Factories/"); - var file = RelativePath.File(_fs.Root, "./Domain/Factories/Multi.cs"); + var dir = RelativePath.Directory(_fs.Root, "./Inventory/Suppliers/"); + var file = RelativePath.File(_fs.Root, "./Inventory/Suppliers/Multi.cs"); var depA = RelativePath.Directory(_fs.Root, "./Dep/A/"); var depB = RelativePath.Directory(_fs.Root, "./Dep/B/"); diff --git a/src/ArchlensTests/Domain/RendererBaseTests.cs b/src/ArchlensTests/Domain/RendererBaseTests.cs index acd88f3c..ceb884ef 100644 --- a/src/ArchlensTests/Domain/RendererBaseTests.cs +++ b/src/ArchlensTests/Domain/RendererBaseTests.cs @@ -18,7 +18,7 @@ public sealed partial class RendererBaseTests : IDisposable FullRootPath: _fs.Root ), Format: default, - Views: [new View("completeView", [], []), new View("ignoringView", [], ["./Infra/"])], + Views: [new View("completeView", [], []), new View("ignoringView", [], ["./Warehouse/"])], SaveLocation: $"{_fs.Root}/diagrams" ); @@ -67,8 +67,8 @@ public void PlantUMLRendererRendersCorrectly() Assert.NotEmpty(result); Assert.StartsWith("@startuml", result); Assert.Contains("title completeView", result); - Assert.Contains("package \"Domain\" as Domain", result); - Assert.Contains("Infra", result); + Assert.Contains("package \"Inventory\" as Inventory", result); + Assert.Contains("Warehouse", result); Assert.EndsWith("@enduml", result.TrimEnd()); } @@ -84,8 +84,8 @@ public void PlantUMLRendererIgnoresPackages() Assert.NotEmpty(result); Assert.StartsWith("@startuml", result); Assert.Contains("title ignoringView", result); - Assert.Contains("package \"Domain\" as Domain", result); - Assert.DoesNotContain("Infra", result); + Assert.Contains("package \"Inventory\" as Inventory", result); + Assert.DoesNotContain("Warehouse", result); Assert.EndsWith("@enduml", result.TrimEnd()); } @@ -99,26 +99,26 @@ public void JsonRendererRendersDiffCorrectly() var remoteGraph = TestDependencyGraph.MakeDependencyGraph(opts.BaseOptions.ProjectRoot); var localGraph = TestDependencyGraph.MakeDependencyGraph(opts.BaseOptions.ProjectRoot); - var records = RelativePath.Directory(rootPath, "./Domain/Models/Records/"); - var dependencyParserFactory = RelativePath.File(rootPath, "./Infra/Factories/DependencyParserFactory.cs"); + var labels = RelativePath.Directory(rootPath, "./Inventory/Stock/Labels/"); + var stockSupplier = RelativePath.File(rootPath, "./Warehouse/Suppliers/StockSupplier.cs"); - localGraph.RemoveDependency(dependencyParserFactory, records); // local removes one Infra -> Domain - localGraph.AddDependency(records, dependencyParserFactory); - localGraph.AddDependency(records, dependencyParserFactory); + localGraph.RemoveDependency(stockSupplier, labels); // local removes one Warehouse -> Inventory + localGraph.AddDependency(labels, stockSupplier); + localGraph.AddDependency(labels, stockSupplier); var result = renderer.RenderDiffView(localGraph, remoteGraph, opts.Views[0], opts); var newEdge = $$""" "state": "CREATED", - "fromPackage": "Domain", - "toPackage": "Infra", + "fromPackage": "Inventory", + "toPackage": "Warehouse", "label": "2 (+2)", """; var deletedEdge = $$""" "state": "DELETED", - "fromPackage": "Infra", - "toPackage": "Domain", + "fromPackage": "Warehouse", + "toPackage": "Inventory", "label": "4 (-1)", """; @@ -149,22 +149,22 @@ public void PlantUMLRendererRendersDiffCorrectly() var remoteGraph = TestDependencyGraph.MakeDependencyGraph(opts.BaseOptions.ProjectRoot); var localGraph = TestDependencyGraph.MakeDependencyGraph(opts.BaseOptions.ProjectRoot); - var records = RelativePath.Directory(rootPath, "./Domain/Models/Records/"); - var dependencyParserFactory = RelativePath.File(rootPath, "./Infra/Factories/DependencyParserFactory.cs"); + var labels = RelativePath.Directory(rootPath, "./Inventory/Stock/Labels/"); + var stockSupplier = RelativePath.File(rootPath, "./Warehouse/Suppliers/StockSupplier.cs"); - localGraph.AddDependency(records, dependencyParserFactory); - localGraph.RemoveDependency(dependencyParserFactory, records); + localGraph.AddDependency(labels, stockSupplier); + localGraph.RemoveDependency(stockSupplier, labels); string result = renderer.RenderDiffView(localGraph, remoteGraph, opts.Views[0], opts); - var newEdge = "Domain --> Infra #Green : 1 (+1)"; - var deletedEdge = "Infra --> Domain #Red : 4 (-1)"; + var newEdge = "Inventory --> Warehouse #Green : 1 (+1)"; + var deletedEdge = "Warehouse --> Inventory #Red : 4 (-1)"; Assert.NotEmpty(result); Assert.StartsWith("@startuml", result); Assert.Contains("title completeView", result); - Assert.Contains("package \"Domain\" as Domain", result); - Assert.Contains("Infra", result); + Assert.Contains("package \"Inventory\" as Inventory", result); + Assert.Contains("Warehouse", result); Assert.EndsWith("@enduml", result.TrimEnd()); Assert.Contains(newEdge, result); @@ -188,11 +188,11 @@ public void EdgesAreOrderedByFromThenTo() [Fact] public void IgnoredPackageAbsentFromOutput() { - var opts = MakeOptions(ignore: ["./Infra/"]); + var opts = MakeOptions(ignore: ["./Warehouse/"]); var result = new PlantUMLRenderer().RenderView( TestDependencyGraph.MakeDependencyGraph(_fs.Root), opts.Views[0], opts); - Assert.DoesNotContain("Infra", result); + Assert.DoesNotContain("Warehouse", result); } [Fact] @@ -202,41 +202,41 @@ public void NonIgnoredPackagesPresentInOutput() var result = new PlantUMLRenderer().RenderView( TestDependencyGraph.MakeDependencyGraph(_fs.Root), opts.Views[0], opts); - Assert.Contains("Domain", result); - Assert.Contains("Infra", result); + Assert.Contains("Inventory", result); + Assert.Contains("Warehouse", result); } [Fact] public void NoEdgesReferenceIgnoredPackage() { - var opts = MakeOptions(ignore: ["./Infra/"]); + var opts = MakeOptions(ignore: ["./Warehouse/"]); var result = new JsonRenderer().RenderView( TestDependencyGraph.MakeDependencyGraph(_fs.Root), opts.Views[0], opts); var edgeSection = result.Contains("\"edges\"") ? result[result.IndexOf("\"edges\"")..] : ""; - Assert.DoesNotContain("\"Infra\"", edgeSection); + Assert.DoesNotContain("\"Warehouse\"", edgeSection); } [Fact] public void DepthOneHidesSubPackages() { - var opts = MakeOptions(packages: [new Package("./Domain/", 1)]); + var opts = MakeOptions(packages: [new Package("./Inventory/", 1)]); var result = new JsonRenderer().RenderView( TestDependencyGraph.MakeDependencyGraph(_fs.Root), opts.Views[0], opts); - Assert.DoesNotContain("Models", result); + Assert.DoesNotContain("Stock", result); } [Fact] public void DepthTwoShowsDirectChildren() { - var opts = MakeOptions(packages: [new Package("./Domain/", 2)]); + var opts = MakeOptions(packages: [new Package("./Inventory/", 2)]); var result = new JsonRenderer().RenderView( TestDependencyGraph.MakeDependencyGraph(_fs.Root), opts.Views[0], opts); - Assert.Contains("Models", result); + Assert.Contains("Stock", result); } [Fact] @@ -256,7 +256,7 @@ public void NodeOnlyInLocalIsMarkedCreated() var opts = MakeOptions(); var remote = TestDependencyGraph.MakeDependencyGraph(_fs.Root); var local = TestDependencyGraph.MakeDependencyGraph(_fs.Root); - remote.RemoveProjectItemRecursive(RelativePath.Directory(_fs.Root, "./Infra/")); + remote.RemoveProjectItemRecursive(RelativePath.Directory(_fs.Root, "./Warehouse/")); var result = Minify(new JsonRenderer().RenderDiffView(local, remote, opts.Views[0], opts)); @@ -269,7 +269,7 @@ public void NodeOnlyInRemoteIsMarkedDeleted() var opts = MakeOptions(); var remote = TestDependencyGraph.MakeDependencyGraph(_fs.Root); var local = TestDependencyGraph.MakeDependencyGraph(_fs.Root); - local.RemoveProjectItemRecursive(RelativePath.Directory(_fs.Root, "./Infra/")); + local.RemoveProjectItemRecursive(RelativePath.Directory(_fs.Root, "./Warehouse/")); var result = Minify(new JsonRenderer().RenderDiffView(local, remote, opts.Views[0], opts)); @@ -293,8 +293,8 @@ public void NewEdgeIsMarkedCreated() var remote = TestDependencyGraph.MakeDependencyGraph(_fs.Root); var local = TestDependencyGraph.MakeDependencyGraph(_fs.Root); local.AddDependency( - RelativePath.Directory(_fs.Root, "./Domain/Models/Records/"), - RelativePath.File(_fs.Root, "./Infra/Factories/DependencyParserFactory.cs")); + RelativePath.Directory(_fs.Root, "./Inventory/Stock/Labels/"), + RelativePath.File(_fs.Root, "./Warehouse/Suppliers/StockSupplier.cs")); var result = Minify(new JsonRenderer().RenderDiffView(local, remote, opts.Views[0], opts)); @@ -308,8 +308,8 @@ public void IncreasedEdgeCountShowsGreenLabelInPlantUML() var remote = TestDependencyGraph.MakeDependencyGraph(_fs.Root); var local = TestDependencyGraph.MakeDependencyGraph(_fs.Root); local.AddDependency( - RelativePath.Directory(_fs.Root, "./Domain/Models/Records/"), - RelativePath.File(_fs.Root, "./Infra/Factories/DependencyParserFactory.cs")); + RelativePath.Directory(_fs.Root, "./Inventory/Stock/Labels/"), + RelativePath.File(_fs.Root, "./Warehouse/Suppliers/StockSupplier.cs")); var result = new PlantUMLRenderer().RenderDiffView(local, remote, opts.Views[0], opts); @@ -324,8 +324,8 @@ public void DecreasedEdgeCountShowsRedLabelInPlantUML() var remote = TestDependencyGraph.MakeDependencyGraph(_fs.Root); var local = TestDependencyGraph.MakeDependencyGraph(_fs.Root); local.RemoveDependency( - RelativePath.File(_fs.Root, "./Infra/Factories/DependencyParserFactory.cs"), - RelativePath.Directory(_fs.Root, "./Domain/Models/Records/")); + RelativePath.File(_fs.Root, "./Warehouse/Suppliers/StockSupplier.cs"), + RelativePath.Directory(_fs.Root, "./Inventory/Stock/Labels/")); var result = new PlantUMLRenderer().RenderDiffView(local, remote, opts.Views[0], opts); @@ -338,18 +338,18 @@ public void IntraPackageDependencyProducesNoSelfLoopEdge() { var opts = MakeOptions(); var graph = TestDependencyGraph.MakeDependencyGraph(_fs.Root); - var recordA = RelativePath.File(_fs.Root, "./Domain/Models/RecordA.cs"); - var recordB = RelativePath.File(_fs.Root, "./Domain/Models/RecordB.cs"); + var itemA = RelativePath.File(_fs.Root, "./Inventory/Stock/ItemA.cs"); + var itemB = RelativePath.File(_fs.Root, "./Inventory/Stock/ItemB.cs"); - graph.UpsertProjectItem(recordA, ProjectItemType.File); - graph.UpsertProjectItem(recordB, ProjectItemType.File); + graph.UpsertProjectItem(itemA, ProjectItemType.File); + graph.UpsertProjectItem(itemB, ProjectItemType.File); graph.AddDependency( - RelativePath.File(_fs.Root, "./Domain/Models/RecordA.cs"), - RelativePath.File(_fs.Root, "./Domain/Models/RecordB.cs")); + RelativePath.File(_fs.Root, "./Inventory/Stock/ItemA.cs"), + RelativePath.File(_fs.Root, "./Inventory/Stock/ItemB.cs")); var result = Minify(new JsonRenderer().RenderView(graph, opts.Views[0], opts)); - Assert.DoesNotContain(@"""fromPackage"":""Domain"",""toPackage"":""Domain""", result); + Assert.DoesNotContain(@"""fromPackage"":""Inventory"",""toPackage"":""Inventory""", result); } [Fact] @@ -517,8 +517,8 @@ public void DiffRenderIsDeterministic() var local = TestDependencyGraph.MakeDependencyGraph(_fs.Root); var remote = TestDependencyGraph.MakeDependencyGraph(_fs.Root); local.AddDependency( - RelativePath.Directory(_fs.Root, "./Domain/Models/Records/"), - RelativePath.File(_fs.Root, "./Infra/Factories/DependencyParserFactory.cs")); + RelativePath.Directory(_fs.Root, "./Inventory/Stock/Labels/"), + RelativePath.File(_fs.Root, "./Warehouse/Suppliers/StockSupplier.cs")); Assert.Equal( new JsonRenderer().RenderDiffView(local, remote, opts.Views[0], opts), diff --git a/src/ArchlensTests/Infra/ConfigManagerTests.cs b/src/ArchlensTests/Infra/ConfigManagerTests.cs index 2d9fe9bc..af4b9110 100644 --- a/src/ArchlensTests/Infra/ConfigManagerTests.cs +++ b/src/ArchlensTests/Infra/ConfigManagerTests.cs @@ -325,7 +325,7 @@ public async Task RenderOptions_View_LoadsPackagesWithPathAndDepth() Views: """ { "v": { - "packages": [{ "path": "./Domain/", "depth": 2 }], + "packages": [{ "path": "./Inventory/", "depth": 2 }], "ignorePackages": [] } } @@ -334,7 +334,7 @@ public async Task RenderOptions_View_LoadsPackagesWithPathAndDepth() var (_, _, renderOptions, _) = await Manager(path).LoadAsync(); var pkg = Assert.Single(renderOptions.Views[0].Packages); - Assert.Equal("./Domain/", pkg.Path); + Assert.Equal("./Inventory/", pkg.Path); Assert.Equal(2, pkg.Depth); } @@ -345,7 +345,7 @@ public async Task RenderOptions_View_PackageDepth_DefaultsToZero_WhenOmitted() Views: """ { "v": { - "packages": [{ "path": "./Domain/" }], + "packages": [{ "path": "./Inventory/" }], "ignorePackages": [] } } @@ -364,15 +364,15 @@ public async Task RenderOptions_View_LoadsIgnorePackages() { "v": { "packages": [], - "ignorePackages": ["./Infra/", "./Application/"] + "ignorePackages": ["./Warehouse/", "./Shop/"] } } """)); var (_, _, renderOptions, _) = await Manager(path).LoadAsync(); var view = Assert.Single(renderOptions.Views); - Assert.Contains("./Infra/", view.IgnorePackages); - Assert.Contains("./Application/", view.IgnorePackages); + Assert.Contains("./Warehouse/", view.IgnorePackages); + Assert.Contains("./Shop/", view.IgnorePackages); } [Fact] diff --git a/src/ArchlensTests/Infra/Parsers/JavaDependencyParserTests.cs b/src/ArchlensTests/Infra/Parsers/JavaDependencyParserTests.cs index b99d5566..3bed4cb7 100644 --- a/src/ArchlensTests/Infra/Parsers/JavaDependencyParserTests.cs +++ b/src/ArchlensTests/Infra/Parsers/JavaDependencyParserTests.cs @@ -36,7 +36,7 @@ public async Task Returns_Empty_ForFileWithNoImports() [Fact] public async Task Captures_BasicImport() { - var path = Write("A.java", "import com.example.Domain;"); + var path = Write("A.java", "import com.example.Inventory;"); var result = await new JavaDependencyParser(Opts()).ParseFileDependencies(path); Assert.Single(result); } @@ -44,7 +44,7 @@ public async Task Captures_BasicImport() [Fact] public async Task Captures_StaticImport() { - var path = Write("A.java", "import static com.example.Domain.Utils;"); + var path = Write("A.java", "import static com.example.Inventory.Tools;"); var result = await new JavaDependencyParser(Opts()).ParseFileDependencies(path); Assert.Single(result); } @@ -55,7 +55,7 @@ public async Task Filters_NonProjectImports() var path = Write("A.java", """ import java.util.List; import org.springframework.Component; - import com.example.Domain; + import com.example.Inventory; """); var result = await new JavaDependencyParser(Opts()).ParseFileDependencies(path); Assert.Single(result); @@ -65,8 +65,8 @@ public async Task Filters_NonProjectImports() public async Task Captures_MultipleImports() { var path = Write("A.java", """ - import com.example.Domain; - import com.example.Infra; + import com.example.Inventory; + import com.example.Warehouse; """); var result = await new JavaDependencyParser(Opts()).ParseFileDependencies(path); Assert.Equal(2, result.Count); @@ -75,42 +75,42 @@ public async Task Captures_MultipleImports() [Fact] public async Task SingleLevelImport_PathUsesSlashes_NotDots() { - var path = Write("A.java", "import com.example.Domain;"); + var path = Write("A.java", "import com.example.Inventory;"); var result = await new JavaDependencyParser(Opts()).ParseFileDependencies(path); Assert.Single(result); - Assert.Equal(Dir("./Domain/"), result[0]); + Assert.Equal(Dir("./Inventory/"), result[0]); Assert.DoesNotContain('.', result[0].Value.Replace("./", "")); } [Fact] public async Task MultiLevelImport_PathUsesSlashes_NotDots() { - var path = Write("A.java", "import com.example.Domain.Models.Records;"); + var path = Write("A.java", "import com.example.Inventory.Stock.Labels;"); var result = await new JavaDependencyParser(Opts()).ParseFileDependencies(path); Assert.Single(result); - Assert.Equal(Dir("./Domain/Models/Records/"), result[0]); + Assert.Equal(Dir("./Inventory/Stock/Labels/"), result[0]); } [Fact] public async Task StaticImport_PathUsesSlashes_NotDots() { - var path = Write("A.java", "import static com.example.Domain.Utils.PathHelper;"); + var path = Write("A.java", "import static com.example.Inventory.Tools.PathHelper;"); var result = await new JavaDependencyParser(Opts()).ParseFileDependencies(path); Assert.Single(result); - Assert.Equal(Dir("./Domain/Utils/PathHelper/"), result[0]); + Assert.Equal(Dir("./Inventory/Tools/PathHelper/"), result[0]); } [Fact] public async Task WildcardImport_MapsToParentDirectory() { - var path = Write("A.java", "import com.example.Domain.Models.*;"); + var path = Write("A.java", "import com.example.Inventory.Stock.*;"); var result = await new JavaDependencyParser(Opts()).ParseFileDependencies(path); Assert.Single(result); - Assert.Equal(Dir("./Domain/Models/"), result[0]); + Assert.Equal(Dir("./Inventory/Stock/"), result[0]); Assert.DoesNotContain('*', result[0].Value); } @@ -118,8 +118,8 @@ public async Task WildcardImport_MapsToParentDirectory() public async Task CancellationToken_Propagates_WhenPreCancelled() { var path = Write("A.java", """ - import com.example.Domain; - import com.example.Infra; + import com.example.Inventory; + import com.example.Warehouse; """); var cts = new CancellationTokenSource(); cts.Cancel(); diff --git a/src/ArchlensTests/Infra/Parsers/KotlinDependencyParserTests.cs b/src/ArchlensTests/Infra/Parsers/KotlinDependencyParserTests.cs index 296c2489..87e00710 100644 --- a/src/ArchlensTests/Infra/Parsers/KotlinDependencyParserTests.cs +++ b/src/ArchlensTests/Infra/Parsers/KotlinDependencyParserTests.cs @@ -28,7 +28,7 @@ private RelativePath Dir(string path) => [Fact] public async Task Returns_Empty_WhenRootPackageIsEmpty() { - var path = Write("A.kt", "import com.example.Domain"); + var path = Write("A.kt", "import com.example.Inventory"); var result = await new KotlinDependencyParser(Opts("")).ParseFileDependencies(path); Assert.Empty(result); } @@ -36,7 +36,7 @@ public async Task Returns_Empty_WhenRootPackageIsEmpty() [Fact] public async Task Returns_Empty_WhenRootPackageIsWhitespace() { - var path = Write("A.kt", "import com.example.Domain"); + var path = Write("A.kt", "import com.example.Inventory"); var result = await new KotlinDependencyParser(Opts(" ")).ParseFileDependencies(path); Assert.Empty(result); } @@ -52,7 +52,7 @@ public async Task Returns_Empty_ForFileWithNoImports() [Fact] public async Task Captures_BasicImport() { - var path = Write("A.kt", "import com.example.Domain"); + var path = Write("A.kt", "import com.example.Inventory"); var result = await new KotlinDependencyParser(Opts()).ParseFileDependencies(path); Assert.Single(result); } @@ -60,7 +60,7 @@ public async Task Captures_BasicImport() [Fact] public async Task Handles_ImportWithAlias() { - var path = Write("A.kt", "import com.example.Domain.Models as M"); + var path = Write("A.kt", "import com.example.Inventory.Stock as S"); var result = await new KotlinDependencyParser(Opts()).ParseFileDependencies(path); Assert.Single(result); } @@ -71,7 +71,7 @@ public async Task Filters_NonProjectImports() var path = Write("A.kt", """ import kotlin.collections.List import java.io.File - import com.example.Domain + import com.example.Inventory """); var result = await new KotlinDependencyParser(Opts()).ParseFileDependencies(path); Assert.Single(result); @@ -81,8 +81,8 @@ import com.example.Domain public async Task Captures_MultipleImports() { var path = Write("A.kt", """ - import com.example.Domain - import com.example.Infra + import com.example.Inventory + import com.example.Warehouse """); var result = await new KotlinDependencyParser(Opts()).ParseFileDependencies(path); Assert.Equal(2, result.Count); @@ -91,7 +91,7 @@ import com.example.Infra [Fact] public async Task Handles_LeadingWhitespace_InImportLine() { - var path = Write("A.kt", " import com.example.Domain"); + var path = Write("A.kt", " import com.example.Inventory"); var result = await new KotlinDependencyParser(Opts()).ParseFileDependencies(path); Assert.Single(result); } @@ -99,53 +99,53 @@ public async Task Handles_LeadingWhitespace_InImportLine() [Fact] public async Task AliasImport_DoesNotInclude_AliasInPath() { - var path = Write("A.kt", "import com.example.Domain as MyDomain"); + var path = Write("A.kt", "import com.example.Inventory as MyInventory"); var result = await new KotlinDependencyParser(Opts()).ParseFileDependencies(path); Assert.Single(result); - Assert.DoesNotContain("MyDomain", result[0].Value); + Assert.DoesNotContain("MyInventory", result[0].Value); Assert.DoesNotContain("as", result[0].Value); } [Fact] public async Task SingleLevelImport_PathUsesSlashes_NotDots() { - var path = Write("A.kt", "import com.example.Domain"); + var path = Write("A.kt", "import com.example.Inventory"); var result = await new KotlinDependencyParser(Opts()).ParseFileDependencies(path); Assert.Single(result); - Assert.Equal(Dir("./Domain/"), result[0]); + Assert.Equal(Dir("./Inventory/"), result[0]); Assert.DoesNotContain('.', result[0].Value.Replace("./", "")); } [Fact] public async Task MultiLevelImport_PathUsesSlashes_NotDots() { - var path = Write("A.kt", "import com.example.Domain.Models.Records"); + var path = Write("A.kt", "import com.example.Inventory.Stock.Labels"); var result = await new KotlinDependencyParser(Opts()).ParseFileDependencies(path); Assert.Single(result); - Assert.Equal(Dir("./Domain/Models/Records/"), result[0]); + Assert.Equal(Dir("./Inventory/Stock/Labels/"), result[0]); } [Fact] public async Task AliasImport_PathUsesSlashes_NotDots() { - var path = Write("A.kt", "import com.example.Domain.Models as M"); + var path = Write("A.kt", "import com.example.Inventory.Stock as S"); var result = await new KotlinDependencyParser(Opts()).ParseFileDependencies(path); Assert.Single(result); - Assert.Equal(Dir("./Domain/Models/"), result[0]); + Assert.Equal(Dir("./Inventory/Stock/"), result[0]); } [Fact] public async Task WildcardImport_MapsToParentDirectory() { - var path = Write("A.kt", "import com.example.Domain.Models.*"); + var path = Write("A.kt", "import com.example.Inventory.Stock.*"); var result = await new KotlinDependencyParser(Opts()).ParseFileDependencies(path); Assert.Single(result); - Assert.Equal(Dir("./Domain/Models/"), result[0]); + Assert.Equal(Dir("./Inventory/Stock/"), result[0]); Assert.DoesNotContain('*', result[0].Value); } @@ -153,8 +153,8 @@ public async Task WildcardImport_MapsToParentDirectory() public async Task CancellationToken_Propagates_WhenPreCancelled() { var path = Write("A.kt", """ - import com.example.Domain - import com.example.Infra + import com.example.Inventory + import com.example.Warehouse """); var cts = new CancellationTokenSource(); cts.Cancel(); diff --git a/src/ArchlensTests/Infra/Renderers/JsonRendererTests.cs b/src/ArchlensTests/Infra/Renderers/JsonRendererTests.cs index 9e1409cd..35827efd 100644 --- a/src/ArchlensTests/Infra/Renderers/JsonRendererTests.cs +++ b/src/ArchlensTests/Infra/Renderers/JsonRendererTests.cs @@ -1,4 +1,4 @@ -using System.Text.Json; +using System.Text.Json; using System.Text.Json.Nodes; using Archlens.Domain.Models; using Archlens.Domain.Models.Records; @@ -84,8 +84,8 @@ public void Packages_ContainExpectedNodes() var packages = Packages(ParseJson(Render(DefaultGraph(), Opts()))); var names = packages.Select(p => p!["name"]!.GetValue()).ToList(); - Assert.Contains("Domain", names); - Assert.Contains("Infra", names); + Assert.Contains("Inventory", names); + Assert.Contains("Warehouse", names); } [Fact] @@ -130,7 +130,7 @@ public void Package_StateField_IsNeutral_ForUnchangedGraph() [Fact] public void Packages_EmptyList_WhenAllIgnored() { - var opts = Opts(ignore: ["./Domain/", "./Infra/", "./Application/"]); + var opts = Opts(ignore: ["./Inventory/", "./Warehouse/", "./Shop/"]); var packages = Packages(ParseJson(Render(DefaultGraph(), opts))); Assert.Empty(packages); } @@ -138,33 +138,33 @@ public void Packages_EmptyList_WhenAllIgnored() [Fact] public void Packages_DoNotIncludeIgnoredPackage() { - var opts = Opts(ignore: ["./Infra/"]); + var opts = Opts(ignore: ["./Warehouse/"]); var packages = Packages(ParseJson(Render(DefaultGraph(), opts))); var names = packages.Select(p => p!["name"]!.GetValue()).ToList(); - Assert.DoesNotContain("Infra", names); + Assert.DoesNotContain("Warehouse", names); } [Fact] public void Packages_DepthOne_HidesSubPackages() { - var opts = Opts(packages: [new Package("./Domain/", 1)]); + var opts = Opts(packages: [new Package("./Inventory/", 1)]); var packages = Packages(ParseJson(Render(DefaultGraph(), opts))); var names = packages.Select(p => p!["name"]!.GetValue()).ToList(); - Assert.Contains("Domain", names); - Assert.DoesNotContain("Models", names); - Assert.DoesNotContain("Records", names); + Assert.Contains("Inventory", names); + Assert.DoesNotContain("Stock", names); + Assert.DoesNotContain("Labels", names); } [Fact] public void Packages_DepthTwo_ShowsDirectChildren() { - var opts = Opts(packages: [new Package("./Domain/", 2)]); + var opts = Opts(packages: [new Package("./Inventory/", 2)]); var packages = Packages(ParseJson(Render(DefaultGraph(), opts))); var names = packages.Select(p => p!["name"]!.GetValue()).ToList(); - Assert.Contains("Domain", names); - Assert.Contains("Models", names); + Assert.Contains("Inventory", names); + Assert.Contains("Stock", names); } [Fact] @@ -253,7 +253,7 @@ public void Edge_NoSelfEdges() [Fact] public void Edges_EmptyList_WhenAllPackagesIgnored() { - var opts = Opts(ignore: ["./Domain/", "./Infra/", "./Application/"]); + var opts = Opts(ignore: ["./Inventory/", "./Warehouse/", "./Shop/"]); var edges = Edges(ParseJson(Render(DefaultGraph(), opts))); Assert.Empty(edges); } @@ -276,15 +276,15 @@ public void EdgeLabel_IncludesPositiveDelta_WhenEdgeCreated() var remote = DefaultGraph(); var local = DefaultGraph(); - var records = RelativePath.Directory(_fs.Root, "./Domain/Models/Records/"); - var factory = RelativePath.File(_fs.Root, "./Infra/Factories/DependencyParserFactory.cs"); - local.AddDependency(records, factory); - local.AddDependency(records, factory); + var labels = RelativePath.Directory(_fs.Root, "./Inventory/Stock/Labels/"); + var stockSupplier = RelativePath.File(_fs.Root, "./Warehouse/Suppliers/StockSupplier.cs"); + local.AddDependency(labels, stockSupplier); + local.AddDependency(labels, stockSupplier); var edges = Edges(ParseJson(RenderDiff(local, remote, opts))); var created = edges.FirstOrDefault(e => - e!["fromPackage"]!.GetValue() == "Domain" && - e!["toPackage"]!.GetValue() == "Infra" && + e!["fromPackage"]!.GetValue() == "Inventory" && + e!["toPackage"]!.GetValue() == "Warehouse" && e!["state"]!.GetValue() == "CREATED"); Assert.NotNull(created); @@ -299,9 +299,9 @@ public void EdgeLabel_IncludesNegativeDelta_WhenEdgeDeleted() var remote = DefaultGraph(); var local = DefaultGraph(); - var factory = RelativePath.File(_fs.Root, "./Infra/Factories/DependencyParserFactory.cs"); - var records = RelativePath.Directory(_fs.Root, "./Domain/Models/Records/"); - local.RemoveDependency(factory, records); + var stockSupplier = RelativePath.File(_fs.Root, "./Warehouse/Suppliers/StockSupplier.cs"); + var labels = RelativePath.Directory(_fs.Root, "./Inventory/Stock/Labels/"); + local.RemoveDependency(stockSupplier, labels); var edges = Edges(ParseJson(RenderDiff(local, remote, opts))); var deleted = edges.FirstOrDefault(e => e!["state"]!.GetValue() == "DELETED"); @@ -348,13 +348,13 @@ public void Diff_NodeOnlyInLocal_IsMarkedCreated() { var local = DefaultGraph(); var remote = DefaultGraph(); - remote.RemoveProjectItemRecursive(RelativePath.Directory(_fs.Root, "./Infra/")); + remote.RemoveProjectItemRecursive(RelativePath.Directory(_fs.Root, "./Warehouse/")); var packages = Packages(ParseJson(RenderDiff(local, remote, Opts()))); - var infra = packages.FirstOrDefault(p => p!["name"]!.GetValue() == "Infra"); + var warehouse = packages.FirstOrDefault(p => p!["name"]!.GetValue() == "Warehouse"); - Assert.NotNull(infra); - Assert.Equal("CREATED", infra!["state"]!.GetValue()); + Assert.NotNull(warehouse); + Assert.Equal("CREATED", warehouse!["state"]!.GetValue()); } [Fact] @@ -362,13 +362,13 @@ public void Diff_NodeOnlyInRemote_IsMarkedDeleted() { var local = DefaultGraph(); var remote = DefaultGraph(); - local.RemoveProjectItemRecursive(RelativePath.Directory(_fs.Root, "./Infra/")); + local.RemoveProjectItemRecursive(RelativePath.Directory(_fs.Root, "./Warehouse/")); var packages = Packages(ParseJson(RenderDiff(local, remote, Opts()))); - var infra = packages.FirstOrDefault(p => p!["name"]!.GetValue() == "Infra"); + var warehouse = packages.FirstOrDefault(p => p!["name"]!.GetValue() == "Warehouse"); - Assert.NotNull(infra); - Assert.Equal("DELETED", infra!["state"]!.GetValue()); + Assert.NotNull(warehouse); + Assert.Equal("DELETED", warehouse!["state"]!.GetValue()); } [Fact] @@ -376,9 +376,9 @@ public void Diff_NewEdge_IsMarkedCreated() { var remote = DefaultGraph(); var local = DefaultGraph(); - var records = RelativePath.Directory(_fs.Root, "./Domain/Models/Records/"); - var factory = RelativePath.File(_fs.Root, "./Infra/Factories/DependencyParserFactory.cs"); - local.AddDependency(records, factory); + var labels = RelativePath.Directory(_fs.Root, "./Inventory/Stock/Labels/"); + var stockSupplier = RelativePath.File(_fs.Root, "./Warehouse/Suppliers/StockSupplier.cs"); + local.AddDependency(labels, stockSupplier); var edges = Edges(ParseJson(RenderDiff(local, remote, Opts()))); var created = edges.Where(e => e!["state"]!.GetValue() == "CREATED").ToList(); @@ -390,9 +390,9 @@ public void Diff_RemovedEdge_IsMarkedDeleted() { var remote = DefaultGraph(); var local = DefaultGraph(); - var factory = RelativePath.File(_fs.Root, "./Infra/Factories/DependencyParserFactory.cs"); - var records = RelativePath.Directory(_fs.Root, "./Domain/Models/Records/"); - local.RemoveDependency(factory, records); + var stockSupplier = RelativePath.File(_fs.Root, "./Warehouse/Suppliers/StockSupplier.cs"); + var labels = RelativePath.Directory(_fs.Root, "./Inventory/Stock/Labels/"); + local.RemoveDependency(stockSupplier, labels); var edges = Edges(ParseJson(RenderDiff(local, remote, Opts()))); var deleted = edges.Where(e => e!["state"]!.GetValue() == "DELETED").ToList(); @@ -435,4 +435,4 @@ public void Output_IsWrittenWithIndentation() var result = Render(DefaultGraph(), Opts()); Assert.Contains("\n", result); } -} \ No newline at end of file +} diff --git a/src/ArchlensTests/Infra/Renderers/PlantUMLRendererTests.cs b/src/ArchlensTests/Infra/Renderers/PlantUMLRendererTests.cs index 05ae67aa..66b9bc08 100644 --- a/src/ArchlensTests/Infra/Renderers/PlantUMLRendererTests.cs +++ b/src/ArchlensTests/Infra/Renderers/PlantUMLRendererTests.cs @@ -1,4 +1,4 @@ -using Archlens.Domain.Models; +using Archlens.Domain.Models; using Archlens.Domain.Models.Records; using Archlens.Infra.Renderers; using ArchlensTests.Utils; @@ -118,11 +118,11 @@ public void Title_AppearsBeforeAnyPackageDeclaration() } [Fact] - public void Packages_ContainDomainAndInfra() + public void Packages_ContainInventoryAndWarehouse() { var result = Render(DefaultGraph(), Opts()); - Assert.Contains("package \"Domain\"", result); - Assert.Contains("package \"Infra\"", result); + Assert.Contains("package \"Inventory\"", result); + Assert.Contains("package \"Warehouse\"", result); } [Fact] @@ -145,43 +145,43 @@ public void Package_BlocksAreClosed() [Fact] public void Package_ChildIsIndentedRelativeToParent() { - var opts = Opts(packages: [new Package("./Domain/", 2)]); + var opts = Opts(packages: [new Package("./Inventory/", 2)]); var result = Render(DefaultGraph(), opts); - var domainLine = result.Split('\n') - .First(l => l.Contains("package \"Domain\"")); - var modelsLine = result.Split('\n') - .First(l => l.Contains("package \"Models\"")); + var inventoryLine = result.Split('\n') + .First(l => l.Contains("package \"Inventory\"")); + var stockLine = result.Split('\n') + .First(l => l.Contains("package \"Stock\"")); - var domainIndent = domainLine.Length - domainLine.TrimStart().Length; - var modelsIndent = modelsLine.Length - modelsLine.TrimStart().Length; + var inventoryIndent = inventoryLine.Length - inventoryLine.TrimStart().Length; + var stockIndent = stockLine.Length - stockLine.TrimStart().Length; - Assert.True(modelsIndent > domainIndent, "Child package should be indented deeper than its parent"); + Assert.True(stockIndent > inventoryIndent, "Child package should be indented deeper than its parent"); } [Fact] public void Packages_EachIndentLevelIs4Spaces() { - var opts = Opts(packages: [new Package("./Domain/", 2)]); + var opts = Opts(packages: [new Package("./Inventory/", 2)]); var result = Render(DefaultGraph(), opts); - var modelsLine = result.Split('\n').First(l => l.Contains("package \"Models\"")); - var indent = modelsLine.Length - modelsLine.TrimStart().Length; + var stockLine = result.Split('\n').First(l => l.Contains("package \"Stock\"")); + var indent = stockLine.Length - stockLine.TrimStart().Length; Assert.Equal(4, indent); } [Fact] public void Packages_DoNotContainIgnoredPackage() { - var opts = Opts(ignore: ["./Infra/"]); + var opts = Opts(ignore: ["./Warehouse/"]); var result = Render(DefaultGraph(), opts); - Assert.DoesNotContain("package \"Infra\"", result); + Assert.DoesNotContain("package \"Warehouse\"", result); } [Fact] public void Packages_EmptyOutput_WhenAllIgnored() { - var opts = Opts(ignore: ["./Domain/", "./Infra/", "./Application/"]); + var opts = Opts(ignore: ["./Inventory/", "./Warehouse/", "./Shop/"]); var result = Render(DefaultGraph(), opts); Assert.DoesNotContain("package \"", result); } @@ -189,19 +189,19 @@ public void Packages_EmptyOutput_WhenAllIgnored() [Fact] public void Packages_DepthOne_HidesSubPackages() { - var opts = Opts(packages: [new Package("./Domain/", 1)]); + var opts = Opts(packages: [new Package("./Inventory/", 1)]); var result = Render(DefaultGraph(), opts); - Assert.Contains("package \"Domain\"", result); - Assert.DoesNotContain("package \"Models\"", result); + Assert.Contains("package \"Inventory\"", result); + Assert.DoesNotContain("package \"Stock\"", result); } [Fact] public void Packages_DepthTwo_ShowsDirectChildren() { - var opts = Opts(packages: [new Package("./Domain/", 2)]); + var opts = Opts(packages: [new Package("./Inventory/", 2)]); var result = Render(DefaultGraph(), opts); - Assert.Contains("package \"Domain\"", result); - Assert.Contains("package \"Models\"", result); + Assert.Contains("package \"Inventory\"", result); + Assert.Contains("package \"Stock\"", result); } [Fact] @@ -243,7 +243,7 @@ public void Edges_ContainLabelAfterColon() [Fact] public void Edges_NotRendered_WhenAllPackagesIgnored() { - var opts = Opts(ignore: ["./Domain/", "./Infra/", "./Application/"]); + var opts = Opts(ignore: ["./Inventory/", "./Warehouse/", "./Shop/"]); var result = Render(DefaultGraph(), opts); Assert.DoesNotContain("-->", result); } @@ -266,14 +266,14 @@ public void EdgeLabel_IncludesPositiveDelta_WhenEdgeCreated() { var remote = DefaultGraph(); var local = DefaultGraph(); - var records = RelativePath.Directory(_fs.Root, "./Domain/Models/Records/"); - var factory = RelativePath.File(_fs.Root, "./Infra/Factories/DependencyParserFactory.cs"); - local.AddDependency(records, factory); + var labels = RelativePath.Directory(_fs.Root, "./Inventory/Stock/Labels/"); + var stockSupplier = RelativePath.File(_fs.Root, "./Warehouse/Suppliers/StockSupplier.cs"); + local.AddDependency(labels, stockSupplier); var result = RenderDiff(local, remote, Opts()); var createdLine = result.Split('\n') - .FirstOrDefault(l => l.Contains("#Green") && l.Contains("Domain --> Infra")); + .FirstOrDefault(l => l.Contains("#Green") && l.Contains("Inventory --> Warehouse")); Assert.NotNull(createdLine); Assert.Contains("+", createdLine); } @@ -283,9 +283,9 @@ public void EdgeLabel_IncludesNegativeDelta_WhenEdgeDeleted() { var remote = DefaultGraph(); var local = DefaultGraph(); - var factory = RelativePath.File(_fs.Root, "./Infra/Factories/DependencyParserFactory.cs"); - var records = RelativePath.Directory(_fs.Root, "./Domain/Models/Records/"); - local.RemoveDependency(factory, records); + var stockSupplier = RelativePath.File(_fs.Root, "./Warehouse/Suppliers/StockSupplier.cs"); + var labels = RelativePath.Directory(_fs.Root, "./Inventory/Stock/Labels/"); + local.RemoveDependency(stockSupplier, labels); var result = RenderDiff(local, remote, Opts()); @@ -327,14 +327,14 @@ public void Diff_CreatedNode_HasLightGreenColour() { var local = DefaultGraph(); var remote = DefaultGraph(); - remote.RemoveProjectItemRecursive(RelativePath.Directory(_fs.Root, "./Infra/")); + remote.RemoveProjectItemRecursive(RelativePath.Directory(_fs.Root, "./Warehouse/")); var result = RenderDiff(local, remote, Opts()); - var infraLine = result.Split('\n') - .FirstOrDefault(l => l.Contains("package \"Infra\"")); + var warehouseLine = result.Split('\n') + .FirstOrDefault(l => l.Contains("package \"Warehouse\"")); - Assert.NotNull(infraLine); - Assert.Contains("#LightGreen", infraLine); + Assert.NotNull(warehouseLine); + Assert.Contains("#LightGreen", warehouseLine); } [Fact] @@ -342,14 +342,14 @@ public void Diff_DeletedNode_HasLightCoralColour() { var local = DefaultGraph(); var remote = DefaultGraph(); - local.RemoveProjectItemRecursive(RelativePath.Directory(_fs.Root, "./Infra/")); + local.RemoveProjectItemRecursive(RelativePath.Directory(_fs.Root, "./Warehouse/")); var result = RenderDiff(local, remote, Opts()); - var infraLine = result.Split('\n') - .FirstOrDefault(l => l.Contains("package \"Infra\"")); + var warehouseLine = result.Split('\n') + .FirstOrDefault(l => l.Contains("package \"Warehouse\"")); - Assert.NotNull(infraLine); - Assert.Contains("#LightCoral", infraLine); + Assert.NotNull(warehouseLine); + Assert.Contains("#LightCoral", warehouseLine); } [Fact] @@ -371,9 +371,9 @@ public void Diff_CreatedEdge_HasGreenColour() { var remote = DefaultGraph(); var local = DefaultGraph(); - var records = RelativePath.Directory(_fs.Root, "./Domain/Models/Records/"); - var factory = RelativePath.File(_fs.Root, "./Infra/Factories/DependencyParserFactory.cs"); - local.AddDependency(records, factory); + var labels = RelativePath.Directory(_fs.Root, "./Inventory/Stock/Labels/"); + var stockSupplier = RelativePath.File(_fs.Root, "./Warehouse/Suppliers/StockSupplier.cs"); + local.AddDependency(labels, stockSupplier); var result = RenderDiff(local, remote, Opts()); Assert.Contains("#Green", result); @@ -384,9 +384,9 @@ public void Diff_DeletedEdge_HasRedColour() { var remote = DefaultGraph(); var local = DefaultGraph(); - var factory = RelativePath.File(_fs.Root, "./Infra/Factories/DependencyParserFactory.cs"); - var records = RelativePath.Directory(_fs.Root, "./Domain/Models/Records/"); - local.RemoveDependency(factory, records); + var stockSupplier = RelativePath.File(_fs.Root, "./Warehouse/Suppliers/StockSupplier.cs"); + var labels = RelativePath.Directory(_fs.Root, "./Inventory/Stock/Labels/"); + local.RemoveDependency(stockSupplier, labels); var result = RenderDiff(local, remote, Opts()); Assert.Contains("#Red", result); @@ -479,4 +479,4 @@ public void ViewName_WithSpecialChars_DoesNotBreakEnvelope() Assert.StartsWith("@startuml", result); Assert.Contains("@enduml", result); } -} \ No newline at end of file +} diff --git a/src/ArchlensTests/Infra/SnapshotManagers/LocalSnaphotManagerTests.cs b/src/ArchlensTests/Infra/SnapshotManagers/LocalSnaphotManagerTests.cs index 92241638..629b73ad 100644 --- a/src/ArchlensTests/Infra/SnapshotManagers/LocalSnaphotManagerTests.cs +++ b/src/ArchlensTests/Infra/SnapshotManagers/LocalSnaphotManagerTests.cs @@ -1,4 +1,4 @@ -using Archlens.Domain; +using Archlens.Domain; using Archlens.Domain.Models; using Archlens.Domain.Models.Records; using Archlens.Infra.SnapshotManagers; @@ -49,26 +49,26 @@ public async Task SaveGraphAsync_CreatesDirectoryAndFile_AtConfiguredLocation() var loaded = DependencyGraphSerializer.Deserialize(bytes, rootPath); var root = RelativePath.Directory(rootPath, rootPath); - var application = RelativePath.Directory(rootPath, "./Application/"); - var infra = RelativePath.Directory(rootPath, "./Infra/"); - var domain = RelativePath.Directory(rootPath, "./Domain/"); - var interfaces = RelativePath.Directory(rootPath, "./Domain/Interfaces"); - var factory = RelativePath.Directory(rootPath, "./Infra/Factories/"); - var models = RelativePath.Directory(rootPath, "./Domain/Models/"); - var records = RelativePath.Directory(rootPath, "./Domain/Models/Records/"); - var enums = RelativePath.Directory(rootPath, "./Domain/Models/Enums/"); - var utils = RelativePath.Directory(rootPath, "./Domain/Utils/"); + var shop = RelativePath.Directory(rootPath, "./Shop/"); + var warehouse = RelativePath.Directory(rootPath, "./Warehouse/"); + var inventory = RelativePath.Directory(rootPath, "./Inventory/"); + var ports = RelativePath.Directory(rootPath, "./Inventory/Ports"); + var suppliers = RelativePath.Directory(rootPath, "./Warehouse/Suppliers/"); + var stock = RelativePath.Directory(rootPath, "./Inventory/Stock/"); + var labels = RelativePath.Directory(rootPath, "./Inventory/Stock/Labels/"); + var tags = RelativePath.Directory(rootPath, "./Inventory/Stock/Tags/"); + var tools = RelativePath.Directory(rootPath, "./Inventory/Tools/"); Assert.Contains(root, loaded.ProjectItems); - Assert.Contains(application, loaded.ProjectItems); - Assert.Contains(infra, loaded.ProjectItems); - Assert.Contains(domain, loaded.ProjectItems); - Assert.Contains(interfaces, loaded.ProjectItems); - Assert.Contains(factory, loaded.ProjectItems); - Assert.Contains(models, loaded.ProjectItems); - Assert.Contains(records, loaded.ProjectItems); - Assert.Contains(enums, loaded.ProjectItems); - Assert.Contains(utils, loaded.ProjectItems); + Assert.Contains(shop, loaded.ProjectItems); + Assert.Contains(warehouse, loaded.ProjectItems); + Assert.Contains(inventory, loaded.ProjectItems); + Assert.Contains(ports, loaded.ProjectItems); + Assert.Contains(suppliers, loaded.ProjectItems); + Assert.Contains(stock, loaded.ProjectItems); + Assert.Contains(labels, loaded.ProjectItems); + Assert.Contains(tags, loaded.ProjectItems); + Assert.Contains(tools, loaded.ProjectItems); } [Fact] @@ -84,15 +84,15 @@ public async Task SaveThenLoad_Get_Name_And_LastWriteTime() var loaded = await snapshotManager.GetLastSavedDependencyGraphAsync(opts); var root = RelativePath.Directory(rootPath, rootPath); - var application = RelativePath.Directory(rootPath, "./Application/"); - var infra = RelativePath.Directory(rootPath, "./Infra/"); - var domain = RelativePath.Directory(rootPath, "./Domain/"); - var interfaces = RelativePath.Directory(rootPath, "./Domain/Interfaces"); - var factory = RelativePath.Directory(rootPath, "./Infra/Factories/"); - var models = RelativePath.Directory(rootPath, "./Domain/Models/"); - var records = RelativePath.Directory(rootPath, "./Domain/Models/Records/"); - var enums = RelativePath.Directory(rootPath, "./Domain/Models/Enums/"); - var utils = RelativePath.Directory(rootPath, "./Domain/Utils/"); + var shop = RelativePath.Directory(rootPath, "./Shop/"); + var warehouse = RelativePath.Directory(rootPath, "./Warehouse/"); + var inventory = RelativePath.Directory(rootPath, "./Inventory/"); + var ports = RelativePath.Directory(rootPath, "./Inventory/Ports"); + var suppliers = RelativePath.Directory(rootPath, "./Warehouse/Suppliers/"); + var stock = RelativePath.Directory(rootPath, "./Inventory/Stock/"); + var labels = RelativePath.Directory(rootPath, "./Inventory/Stock/Labels/"); + var tags = RelativePath.Directory(rootPath, "./Inventory/Stock/Tags/"); + var tools = RelativePath.Directory(rootPath, "./Inventory/Tools/"); var loadedItems = loaded?.ProjectItems; @@ -100,15 +100,15 @@ public async Task SaveThenLoad_Get_Name_And_LastWriteTime() Assert.Fail("Loaded items is null"); Assert.Contains(root, loadedItems); - Assert.Contains(application, loadedItems); - Assert.Contains(infra, loadedItems); - Assert.Contains(domain, loadedItems); - Assert.Contains(interfaces, loadedItems); - Assert.Contains(factory, loadedItems); - Assert.Contains(models, loadedItems); - Assert.Contains(records, loadedItems); - Assert.Contains(enums, loadedItems); - Assert.Contains(utils, loadedItems); + Assert.Contains(shop, loadedItems); + Assert.Contains(warehouse, loadedItems); + Assert.Contains(inventory, loadedItems); + Assert.Contains(ports, loadedItems); + Assert.Contains(suppliers, loadedItems); + Assert.Contains(stock, loadedItems); + Assert.Contains(labels, loadedItems); + Assert.Contains(tags, loadedItems); + Assert.Contains(tools, loadedItems); Assert.Equal(graph?.GetProjectItem(root)?.LastWriteTime.ToString("dd-MM-yyyy HH:mm:ss"), loaded?.GetProjectItem(root)?.LastWriteTime.ToString("dd-MM-yyyy HH:mm:ss")); } @@ -172,10 +172,10 @@ public async Task Load_ReturnsMultiLevelGraph_WhenPresent() var rootPath = RelativePath.Directory(root, "./"); Assert.Equal(graph.ChildrenOf(rootPath).Count, loaded?.ChildrenOf(rootPath).Count); - var domainPath = RelativePath.Directory(root, "./Domain/"); - var domain = loaded?.GetProjectItem(domainPath); + var inventoryPath = RelativePath.Directory(root, "./Inventory/"); + var inventory = loaded?.GetProjectItem(inventoryPath); - Assert.NotNull(domain); - Assert.Equal(3, graph.ChildrenOf(domainPath).Count); + Assert.NotNull(inventory); + Assert.Equal(3, graph.ChildrenOf(inventoryPath).Count); } -} \ No newline at end of file +} diff --git a/src/ArchlensTests/TestRepo/Inventory/InventoryPredictor.cs b/src/ArchlensTests/TestRepo/Inventory/InventoryPredictor.cs new file mode 100644 index 00000000..e04ec323 --- /dev/null +++ b/src/ArchlensTests/TestRepo/Inventory/InventoryPredictor.cs @@ -0,0 +1,6 @@ +using TestRepo.Inventory.Suppliers; +using TestRepo.Inventory.Ports; +using TestRepo.Inventory.Stock; +using TestRepo.Inventory.Tools; + +namespace TestRepo.Inventory; \ No newline at end of file diff --git a/src/ArchlensTests/TestRepo/Inventory/Ports/PortProvider.cs b/src/ArchlensTests/TestRepo/Inventory/Ports/PortProvider.cs new file mode 100644 index 00000000..aa5b1180 --- /dev/null +++ b/src/ArchlensTests/TestRepo/Inventory/Ports/PortProvider.cs @@ -0,0 +1 @@ +namespace TestRepo.Inventory.Ports; \ No newline at end of file diff --git a/src/ArchlensTests/TestRepo/Inventory/Stock/Catalogue.cs b/src/ArchlensTests/TestRepo/Inventory/Stock/Catalogue.cs new file mode 100644 index 00000000..083b046b --- /dev/null +++ b/src/ArchlensTests/TestRepo/Inventory/Stock/Catalogue.cs @@ -0,0 +1,3 @@ +using TestRepo.Inventory.Tools; + +namespace TestRepo.Inventory.Stock; \ No newline at end of file diff --git a/src/ArchlensTests/TestRepo/Inventory/Stock/Labels/PriceTag.cs b/src/ArchlensTests/TestRepo/Inventory/Stock/Labels/PriceTag.cs new file mode 100644 index 00000000..e0bfe3a3 --- /dev/null +++ b/src/ArchlensTests/TestRepo/Inventory/Stock/Labels/PriceTag.cs @@ -0,0 +1,3 @@ +using TestRepo.Inventory.Stock.Tags; + +namespace TestRepo.Inventory.Stock.Labels; \ No newline at end of file diff --git a/src/ArchlensTests/TestRepo/Inventory/Stock/Tags/Base.cs b/src/ArchlensTests/TestRepo/Inventory/Stock/Tags/Base.cs new file mode 100644 index 00000000..af2739eb --- /dev/null +++ b/src/ArchlensTests/TestRepo/Inventory/Stock/Tags/Base.cs @@ -0,0 +1 @@ +namespace TestRepo.Inventory.Stock.Tags; \ No newline at end of file diff --git a/src/ArchlensTests/TestRepo/Inventory/Stock/Tags/Sale.cs b/src/ArchlensTests/TestRepo/Inventory/Stock/Tags/Sale.cs new file mode 100644 index 00000000..af2739eb --- /dev/null +++ b/src/ArchlensTests/TestRepo/Inventory/Stock/Tags/Sale.cs @@ -0,0 +1 @@ +namespace TestRepo.Inventory.Stock.Tags; \ No newline at end of file diff --git a/src/ArchlensTests/TestRepo/Inventory/Suppliers/ShipmentSupplier.cs b/src/ArchlensTests/TestRepo/Inventory/Suppliers/ShipmentSupplier.cs new file mode 100644 index 00000000..6c974dd8 --- /dev/null +++ b/src/ArchlensTests/TestRepo/Inventory/Suppliers/ShipmentSupplier.cs @@ -0,0 +1,5 @@ +using TestRepo.Inventory.Ports; +using TestRepo.Inventory.Stock.Tags; +using TestRepo.Warehouse; + +namespace TestRepo.Inventory.Suppliers; \ No newline at end of file diff --git a/src/ArchlensTests/TestRepo/Inventory/Suppliers/StockSuppliers.cs b/src/ArchlensTests/TestRepo/Inventory/Suppliers/StockSuppliers.cs new file mode 100644 index 00000000..473cffb4 --- /dev/null +++ b/src/ArchlensTests/TestRepo/Inventory/Suppliers/StockSuppliers.cs @@ -0,0 +1,6 @@ +using TestRepo.Inventory.Ports; +using TestRepo.Inventory.Stock.Tags; +using TestRepo.Inventory.Stock.Labels; +using TestRepo.Warehouse; + +namespace TestRepo.Inventory.Suppliers; \ No newline at end of file diff --git a/src/ArchlensTests/TestRepo/Inventory/Tools/CostPredictor.cs b/src/ArchlensTests/TestRepo/Inventory/Tools/CostPredictor.cs new file mode 100644 index 00000000..99f85323 --- /dev/null +++ b/src/ArchlensTests/TestRepo/Inventory/Tools/CostPredictor.cs @@ -0,0 +1 @@ +namespace TestRepo.Inventory.Tools; \ No newline at end of file diff --git a/src/ArchlensTests/TestRepo/Program.cs b/src/ArchlensTests/TestRepo/Program.cs new file mode 100644 index 00000000..d94a9444 --- /dev/null +++ b/src/ArchlensTests/TestRepo/Program.cs @@ -0,0 +1,3 @@ +using TestRepo.Inventory; + +namespace TestRepo; \ No newline at end of file diff --git a/src/ArchlensTests/TestRepo/Shop/OrderProcessor.cs b/src/ArchlensTests/TestRepo/Shop/OrderProcessor.cs new file mode 100644 index 00000000..f030836e --- /dev/null +++ b/src/ArchlensTests/TestRepo/Shop/OrderProcessor.cs @@ -0,0 +1 @@ +namespace TestRepo.Shop; \ No newline at end of file diff --git a/src/ArchlensTests/TestRepo/Warehouse/Purchaser.cs b/src/ArchlensTests/TestRepo/Warehouse/Purchaser.cs new file mode 100644 index 00000000..232deb6c --- /dev/null +++ b/src/ArchlensTests/TestRepo/Warehouse/Purchaser.cs @@ -0,0 +1,2 @@ +namespace TestRepo.Warehouse; + diff --git a/src/ArchlensTests/TestRepo/Warehouse/SaleHistory.cs b/src/ArchlensTests/TestRepo/Warehouse/SaleHistory.cs new file mode 100644 index 00000000..f4da6261 --- /dev/null +++ b/src/ArchlensTests/TestRepo/Warehouse/SaleHistory.cs @@ -0,0 +1 @@ +namespace TestRepo.Warehouse; \ No newline at end of file diff --git a/src/ArchlensTests/Utils/TestDependencyGraph.cs b/src/ArchlensTests/Utils/TestDependencyGraph.cs index 12f5603c..7c1e7ab1 100644 --- a/src/ArchlensTests/Utils/TestDependencyGraph.cs +++ b/src/ArchlensTests/Utils/TestDependencyGraph.cs @@ -10,62 +10,62 @@ public static ProjectDependencyGraph MakeDependencyGraph(string rootPath) var graph = new ProjectDependencyGraph(rootPath); var root = RelativePath.Directory(rootPath, rootPath); - var application = RelativePath.Directory(rootPath, "./Application/"); - var infra = RelativePath.Directory(rootPath, "./Infra/"); - var domain = RelativePath.Directory(rootPath, "./Domain/"); - var interfaces = RelativePath.Directory(rootPath, "./Domain/Interfaces"); - var factory = RelativePath.Directory(rootPath, "./Infra/Factories/"); - var models = RelativePath.Directory(rootPath, "./Domain/Models/"); - var records = RelativePath.Directory(rootPath, "./Domain/Models/Records/"); - var enums = RelativePath.Directory(rootPath, "./Domain/Models/Enums/"); - var utils = RelativePath.Directory(rootPath, "./Domain/Utils/"); + var shop = RelativePath.Directory(rootPath, "./Shop/"); + var warehouse = RelativePath.Directory(rootPath, "./Warehouse/"); + var inventory = RelativePath.Directory(rootPath, "./Inventory/"); + var ports = RelativePath.Directory(rootPath, "./Inventory/Ports"); + var suppliers = RelativePath.Directory(rootPath, "./Warehouse/Suppliers/"); + var stock = RelativePath.Directory(rootPath, "./Inventory/Stock/"); + var labels = RelativePath.Directory(rootPath, "./Inventory/Stock/Labels/"); + var tags = RelativePath.Directory(rootPath, "./Inventory/Stock/Tags/"); + var tools = RelativePath.Directory(rootPath, "./Inventory/Tools/"); graph.UpsertProjectItem(root, ProjectItemType.Directory); - graph.UpsertProjectItem(application, ProjectItemType.Directory); - graph.UpsertProjectItem(infra, ProjectItemType.Directory); - graph.UpsertProjectItem(domain, ProjectItemType.Directory); - graph.UpsertProjectItem(interfaces, ProjectItemType.Directory); - graph.UpsertProjectItem(factory, ProjectItemType.Directory); - graph.UpsertProjectItem(models, ProjectItemType.Directory); - graph.UpsertProjectItem(records, ProjectItemType.Directory); - graph.UpsertProjectItem(enums, ProjectItemType.Directory); - graph.UpsertProjectItem(utils, ProjectItemType.Directory); + graph.UpsertProjectItem(shop, ProjectItemType.Directory); + graph.UpsertProjectItem(warehouse, ProjectItemType.Directory); + graph.UpsertProjectItem(inventory, ProjectItemType.Directory); + graph.UpsertProjectItem(ports, ProjectItemType.Directory); + graph.UpsertProjectItem(suppliers, ProjectItemType.Directory); + graph.UpsertProjectItem(stock, ProjectItemType.Directory); + graph.UpsertProjectItem(labels, ProjectItemType.Directory); + graph.UpsertProjectItem(tags, ProjectItemType.Directory); + graph.UpsertProjectItem(tools, ProjectItemType.Directory); - graph.AddChild(root, application); - graph.AddChild(root, domain); - graph.AddChild(root, infra); - graph.AddChild(infra, factory); - graph.AddChild(domain, models); - graph.AddChild(domain, interfaces); - graph.AddChild(domain, utils); - graph.AddChild(models, records); - graph.AddChild(models, enums); + graph.AddChild(root, shop); + graph.AddChild(root, inventory); + graph.AddChild(root, warehouse); + graph.AddChild(warehouse, suppliers); + graph.AddChild(inventory, stock); + graph.AddChild(inventory, ports); + graph.AddChild(inventory, tools); + graph.AddChild(stock, labels); + graph.AddChild(stock, tags); - var changeDetector = RelativePath.File(rootPath, "./Application/ChangeDetector.cs"); - var dependencyParserFactory = RelativePath.File(rootPath, "./Infra/Factories/DependencyParserFactory.cs"); - var rendererFactory = RelativePath.File(rootPath, "./Infra/Factories/RendererFactory.cs"); - var options = RelativePath.File(rootPath, "./Domain/Models/Records/Options.cs"); - var dependencyGraph = RelativePath.File(rootPath, "./Domain/Models/DependencyGraph.cs"); + var orderProcessor = RelativePath.File(rootPath, "./Shop/OrderProcessor.cs"); + var stockSupplier = RelativePath.File(rootPath, "./Warehouse/Suppliers/StockSupplier.cs"); + var shipmentSupplier = RelativePath.File(rootPath, "./Warehouse/Suppliers/ShipmentSupplier.cs"); + var priceTag = RelativePath.File(rootPath, "./Inventory/Stock/Labels/PriceTag.cs"); + var catalogue = RelativePath.File(rootPath, "./Inventory/Stock/Catalogue.cs"); - graph.UpsertProjectItem(changeDetector, ProjectItemType.File); - graph.UpsertProjectItem(dependencyParserFactory, ProjectItemType.File); - graph.UpsertProjectItem(rendererFactory, ProjectItemType.File); - graph.UpsertProjectItem(options, ProjectItemType.File); - graph.UpsertProjectItem(dependencyGraph, ProjectItemType.File); + graph.UpsertProjectItem(orderProcessor, ProjectItemType.File); + graph.UpsertProjectItem(stockSupplier, ProjectItemType.File); + graph.UpsertProjectItem(shipmentSupplier, ProjectItemType.File); + graph.UpsertProjectItem(priceTag, ProjectItemType.File); + graph.UpsertProjectItem(catalogue, ProjectItemType.File); - graph.AddChild(application, changeDetector); - graph.AddChild(factory, dependencyParserFactory); - graph.AddChild(factory, rendererFactory); - graph.AddChild(records, options); - graph.AddChild(models, dependencyGraph); + graph.AddChild(shop, orderProcessor); + graph.AddChild(suppliers, stockSupplier); + graph.AddChild(suppliers, shipmentSupplier); + graph.AddChild(labels, priceTag); + graph.AddChild(stock, catalogue); var dependencies = new Dictionary>() { - [changeDetector] = [models, records, utils], // application 2 dependencies to models and 1 to utils - [dependencyParserFactory] = [interfaces, enums, records, infra], // factories 1 to interfaces, 2 to models and 1 to infra - [rendererFactory] = [interfaces, enums, infra], // factories 1 to interfaces, 2 to models and 1 to infra - [options] = [enums], // no visible deps at deth 1 - [dependencyGraph] = [utils] // no visible deps at deth 1 + [orderProcessor] = [stock, labels, tools], // shop 2 dependencies to stock and 1 to tools + [stockSupplier] = [ports, tags, labels, warehouse], // suppliers 1 to ports, 2 to stock and 1 to warehouse + [shipmentSupplier] = [ports, tags, warehouse], // suppliers 1 to ports, 2 to stock and 1 to warehouse + [priceTag] = [tags], // no visible deps at depth 1 + [catalogue] = [tools] // no visible deps at depth 1 }; foreach (var (source, targets) in dependencies)