1
1
package dotnetcleanarchitecture
2
2
3
3
import (
4
+ "errors"
4
5
"github.com/gertd/go-pluralize"
5
6
"github.com/iancoleman/strcase"
6
7
corenode "github.com/intelops/compage/internal/core/node"
@@ -112,12 +113,11 @@ const TestsGlobalUsingsCSFile = "/Tests/Application.Tests/GlobalUsings.cs.tmpl"
112
113
const MicroServiceNameSlnFile = "/MicroServiceName.sln.tmpl"
113
114
114
115
// handlers
115
- const TestsHandlersPath = "/Tests/Application.Tests/Handlers"
116
- const TestsHandlersResourceNameServicePath = "/Tests/Application.Tests/Handlers/ResourceNameService"
116
+ const TestsApplicationTestsHandlersPath = "/Tests/Application.Tests/Handlers"
117
117
const TestsHandlersCreateResourceNameCommandHandlerTestsCSFile = "/Tests/Application.Tests/Handlers/ResourceNameService/CreateResourceNameCommandHandlerTests.cs.tmpl"
118
118
const TestsHandlersDeleteResourceNameCommandHandlerTestsCSFile = "/Tests/Application.Tests/Handlers/ResourceNameService/DeleteResourceNameCommandHandlerTests.cs.tmpl"
119
119
const TestsHandlersUpdateResourceNameCommandHandlerTestsCSFile = "/Tests/Application.Tests/Handlers/ResourceNameService/UpdateResourceNameCommandHandlerTests.cs.tmpl"
120
- const TestsHandlersTestsHandlersGetResourceNameByIDQueryHandlerTestsCSFile = "/Tests/Application.Tests/Handlers/ResourceNameService/GetResourceNameByIdQueryHandlerTests.cs.tmpl"
120
+ const TestsHandlersGetResourceNameByIDQueryHandlerTestsCSFile = "/Tests/Application.Tests/Handlers/ResourceNameService/GetResourceNameByIdQueryHandlerTests.cs.tmpl"
121
121
const TestsHandlersGetAllResourceNamesQueryHandlerTestsCSFile = "/Tests/Application.Tests/Handlers/ResourceNameService/GetAllResourceNamesQueryHandlerTests.cs.tmpl"
122
122
123
123
// Copier Language specific *Copier
@@ -300,7 +300,7 @@ func (c *Copier) createRestServerDirectories() error {
300
300
}
301
301
302
302
testsDirectory := c .NodeDirectoryName + TestsPath
303
- testsHandlersDirectory := c .NodeDirectoryName + TestsHandlersPath
303
+ testsHandlersDirectory := c .NodeDirectoryName + TestsApplicationTestsHandlersPath
304
304
if err := utils .CreateDirectories (testsDirectory ); err != nil {
305
305
log .Errorf ("error creating tests directory: %v" , err )
306
306
return err
@@ -318,9 +318,9 @@ func (c *Copier) copyRestServerResourceFiles(resource *corenode.Resource) error
318
318
filePaths := & []* string {}
319
319
var err error
320
320
// copy sql files (core)
321
- // if c.IsSQLDB {
322
- // // add files to filePaths and copy them to the generated project
323
- // }
321
+ if ! c .IsSQLDB || c . SQLDB != "MSSQL" {
322
+ return errors . New ( "only MSSQL is supported" )
323
+ }
324
324
325
325
// add files for application
326
326
err = c .addApplicationRelatedDirectoriesAndFiles (resource , filePaths )
@@ -350,6 +350,12 @@ func (c *Copier) copyRestServerResourceFiles(resource *corenode.Resource) error
350
350
return err
351
351
}
352
352
353
+ // add files for tests
354
+ err = c .addTestsRelatedDirectoriesAndFiles (resource , filePaths )
355
+ if err != nil {
356
+ log .Errorf ("error adding tests related directories and files: %v" , err )
357
+ return err
358
+ }
353
359
// add resource-specific data to map in c needed for templates.
354
360
err = c .addResourceSpecificTemplateData (resource )
355
361
if err != nil {
@@ -640,6 +646,63 @@ func (c *Copier) addMicroServiceNameRelatedDirectoriesAndFiles(resource *corenod
640
646
return nil
641
647
}
642
648
649
+ func (c * Copier ) addTestsRelatedDirectoriesAndFiles (resource * corenode.Resource , filePaths * []* string ) error {
650
+ var err error
651
+
652
+ // create a directory for resource Application.Tests/handlers/ResourceNameService
653
+ resourceHandlersResourceNameDirectory := c .NodeDirectoryName + TestsApplicationTestsHandlersPath + "/" + resource .Name + "Service"
654
+ if err = utils .CreateDirectories (resourceHandlersResourceNameDirectory ); err != nil {
655
+ log .Errorf ("error creating resource handlers resource name directory: %v" , err )
656
+ return err
657
+ }
658
+ // copy tests/Application.Tests/Handlers/ResourceNameService/CreateResourceNameCommandHandlerTests.cs
659
+ targetTestsApplicationTestsHandlersResourceNameServiceCreateResourceNameCommandHandlerTestsFileName := resourceHandlersResourceNameDirectory + "/" + "Create" + resource .Name + "CommandHandlerTests.cs"
660
+ _ , err = utils .CopyFile (targetTestsApplicationTestsHandlersResourceNameServiceCreateResourceNameCommandHandlerTestsFileName , c .TemplatesRootPath + TestsHandlersCreateResourceNameCommandHandlerTestsCSFile )
661
+ if err != nil {
662
+ log .Errorf ("error copying tests application tests handlers resource name service create resource name command handler tests cs file: %v" , err )
663
+ return err
664
+ }
665
+ * filePaths = append (* filePaths , & targetTestsApplicationTestsHandlersResourceNameServiceCreateResourceNameCommandHandlerTestsFileName )
666
+
667
+ // copy tests/Application.Tests/Handlers/ResourceNameService/GetAllResourceNamesQueryHandlerTests.cs
668
+ targetTestsApplicationTestsHandlersResourceNameServiceGetAllResourceNamesQueryHandlerTestsFileName := resourceHandlersResourceNameDirectory + "/" + "GetAll" + c .PluralizeClient .Plural (resource .Name ) + "QueryHandlerTests.cs"
669
+ _ , err = utils .CopyFile (targetTestsApplicationTestsHandlersResourceNameServiceGetAllResourceNamesQueryHandlerTestsFileName , c .TemplatesRootPath + TestsHandlersGetAllResourceNamesQueryHandlerTestsCSFile )
670
+ if err != nil {
671
+ log .Errorf ("error copying tests application tests handlers resource name service get all resource names query handler tests cs file: %v" , err )
672
+ return err
673
+ }
674
+ * filePaths = append (* filePaths , & targetTestsApplicationTestsHandlersResourceNameServiceGetAllResourceNamesQueryHandlerTestsFileName )
675
+
676
+ // copy tests/Application.Tests/Handlers/ResourceNameService/GetResourceNameByIdQueryHandlerTests.cs
677
+ targetTestsApplicationTestsHandlersResourceNameServiceGetResourceNameByIDQueryHandlerTestsFileName := resourceHandlersResourceNameDirectory + "/" + "Get" + resource .Name + "ByIdQueryHandlerTests.cs"
678
+ _ , err = utils .CopyFile (targetTestsApplicationTestsHandlersResourceNameServiceGetResourceNameByIDQueryHandlerTestsFileName , c .TemplatesRootPath + TestsHandlersGetResourceNameByIDQueryHandlerTestsCSFile )
679
+ if err != nil {
680
+ log .Errorf ("error copying tests application tests handlers resource name service get resource name by id query handler tests cs file: %v" , err )
681
+ return err
682
+ }
683
+ * filePaths = append (* filePaths , & targetTestsApplicationTestsHandlersResourceNameServiceGetResourceNameByIDQueryHandlerTestsFileName )
684
+
685
+ // copy tests/Application.Tests/Handlers/ResourceNameService/UpdateResourceNameCommandHandlerTests.cs
686
+ targetTestsApplicationTestsHandlersResourceNameServiceUpdateResourceNameCommandHandlerTestsFileName := resourceHandlersResourceNameDirectory + "/" + "Update" + resource .Name + "CommandHandlerTests.cs"
687
+ _ , err = utils .CopyFile (targetTestsApplicationTestsHandlersResourceNameServiceUpdateResourceNameCommandHandlerTestsFileName , c .TemplatesRootPath + TestsHandlersUpdateResourceNameCommandHandlerTestsCSFile )
688
+ if err != nil {
689
+ log .Errorf ("error copying tests application tests handlers resource name service update resource name command handler tests cs file: %v" , err )
690
+ return err
691
+ }
692
+ * filePaths = append (* filePaths , & targetTestsApplicationTestsHandlersResourceNameServiceUpdateResourceNameCommandHandlerTestsFileName )
693
+
694
+ // copy tests/Application.Tests/Handlers/ResourceNameService/DeleteResourceNameCommandHandlerTests.cs
695
+ targetTestsApplicationTestsHandlersResourceNameServiceDeleteResourceNameCommandHandlerTestsFileName := resourceHandlersResourceNameDirectory + "/" + "Delete" + resource .Name + "CommandHandlerTests.cs"
696
+ _ , err = utils .CopyFile (targetTestsApplicationTestsHandlersResourceNameServiceDeleteResourceNameCommandHandlerTestsFileName , c .TemplatesRootPath + TestsHandlersDeleteResourceNameCommandHandlerTestsCSFile )
697
+ if err != nil {
698
+ log .Errorf ("error copying tests application tests handlers resource name service delete resource name command handler tests cs file: %v" , err )
699
+ return err
700
+ }
701
+ * filePaths = append (* filePaths , & targetTestsApplicationTestsHandlersResourceNameServiceDeleteResourceNameCommandHandlerTestsFileName )
702
+
703
+ return nil
704
+ }
705
+
643
706
func (c * Copier ) addResourceSpecificTemplateData (resource * corenode.Resource ) error {
644
707
// make every field public by making its first character capital.
645
708
fields := map [string ]string {}
0 commit comments