public void DataModel_Template_Test()
        {
            var template = new DataModelTemplate(new EntityInfo()
            {
                Id = _entityId
            }, ApplicationId, Constants.DataNamespace);
            var output = template.TransformText();

            Assert.NotNull(output);
            Assert.NotEmpty(output);
            Assert.Contains($"namespace {ApplicationId}.Backend.{_dataNamespace}", output);
        }
        public void DataModel_Template_NullParameter_Test()
        {
            var template = new DataModelTemplate(null, null, null);

            Assert.Throws <ArgumentNullException>(() => template.TransformText());
        }
        private void TransformEntities(SmartAppInfo manifest)
        {
            var enabledEntities = manifest.DataModel.Entities.Where(e => !e.IsEnum).AsEnumerable();

            foreach (var entity in enabledEntities)
            {
                var template = new DataModelTemplate(entity, manifest.Id, Constants.DataNamespace);
                _writingService.WriteFile(Path.Combine(_context.BasePath, template.OutputPath, $"{entity.Id}.g.cs"), template.TransformText());

                if (!entity.IsAbstract)
                {
                    var key = entity.AllProperties()?.FirstOrDefault(p => p.IsKey);
                    if (key != null)
                    {
                        var irepositoryTemplate = new IDataRepository(entity, manifest.Id, Constants.Version);
                        _writingService.WriteFile(Path.Combine(_context.BasePath, irepositoryTemplate.OutputPath, $"I{entity.Id}Repository.g.cs"), irepositoryTemplate.TransformText());

                        var repositoryTemplate = new DataRepository(entity, manifest.Id, Constants.Version);
                        _writingService.WriteFile(Path.Combine(_context.BasePath, repositoryTemplate.OutputPath, $"{entity.Id}Repository.g.cs"), repositoryTemplate.TransformText());
                    }
                }
            }
        }