public static OdcmServiceClass ServiceOdcmClass(OdcmNamespace odcmNamespace, Action <OdcmServiceClass> config = null) { var retVal = new OdcmServiceClass(Any.CSharpIdentifier(), odcmNamespace); var entities = odcmNamespace.Classes .Where(c => c.Kind == OdcmClassKind.Entity); foreach (var entity in entities) { retVal.Properties.Add(new OdcmProperty(entity.Name) { Class = retVal, Type = entity }); retVal.Properties.Add(new OdcmProperty(entity.Name + "s") { Class = retVal, Type = entity, IsCollection = true }); } retVal.Methods.AddRange(Any.Sequence(s => Any.OdcmMethod())); if (config != null) { config(retVal); } return(retVal); }
/// <summary> /// Groups entity, complex and enum types to be printed /// </summary> /// <param name="odcmNamespace">Odcm Namespace</param> public TypeScriptNamespace(OdcmNamespace odcmNamespace) { NamespaceName = odcmNamespace.GetNamespaceName(); Entities = new List <OdcmEntityClass>(); ComplexTypes = new List <OdcmComplexClass>(); Enums = new List <OdcmEnum>(); foreach (var type in odcmNamespace.Types) { switch (type) { case OdcmEntityClass e: Entities.Add(e); break; case OdcmComplexClass c: if (c.CanonicalName().ToLowerInvariant() != "microsoft.graph.json") { ComplexTypes.Add(c); } break; case OdcmEnum e: Enums.Add(e); break; default: break; } } }
public static OdcmClass EntityOdcmClass(OdcmNamespace odcmNamespace, Action <OdcmClass> config = null) { var retVal = new OdcmClass(Any.CSharpIdentifier(), odcmNamespace.Name, OdcmClassKind.Entity); retVal.Properties.AddRange(Any.Sequence(i => Any.PrimitiveOdcmProperty(p => p.Class = retVal))); retVal.Key.AddRange(retVal.Properties.RandomSubset(2).Select(p => p.Field)); if (odcmNamespace.Classes.Any(c => c.Kind == OdcmClassKind.Complex)) { retVal.Properties.AddRange(Any.Sequence(i => Any.OdcmProperty(p => { p.Class = retVal; p.Type = odcmNamespace.Classes.Where(c => c.Kind == OdcmClassKind.Complex).RandomElement(); }))); } if (config != null) { config(retVal); } retVal.Methods.AddRange(Any.Sequence(s => Any.OdcmMethod())); return(retVal); }
public static OdcmNamespace OdcmNamespace(Action <OdcmNamespace> config = null) { var retVal = new OdcmNamespace(Any.CSharpIdentifier()); retVal.Types.AddRange(Any.Sequence(s => Any.OdcmEnum())); retVal.Types.AddRange(Any.Sequence(s => Any.ComplexOdcmType(retVal))); var classes = Any.Sequence(s => Any.EntityOdcmClass(retVal)).ToArray(); foreach (var @class in classes) { @class.Properties.AddRange(Any.Sequence(i => Any.OdcmProperty(p => { p.Class = @class; p.Type = classes.RandomElement(); }))); } classes[0].Base = classes[1]; retVal.Types.AddRange(classes); if (config != null) { config(retVal); } return(retVal); }
private static void EntityOrMediaOdcmClass(OdcmNamespace odcmNamespace, Action <OdcmEntityClass> config, OdcmEntityClass retVal) { retVal.Properties.AddRange(Any.Sequence(i => Any.PrimitiveOdcmProperty(p => p.Class = retVal))); retVal.Key.AddRange(retVal.Properties.RandomSubset(2)); if (odcmNamespace.Classes.Any(c => c.Kind == OdcmClassKind.Complex)) { retVal.Properties.AddRange(Any.Sequence(i => Any.OdcmProperty(p => { p.Class = retVal; p.Type = odcmNamespace.Classes.Where(c => c.Kind == OdcmClassKind.Complex).RandomElement(); }))); } retVal.Properties.AddRange(Any.Sequence(i => Any.OdcmEntityProperty(retVal, p => { p.Class = retVal; }))); retVal.Properties.AddRange(Any.Sequence(i => Any.OdcmEntityProperty(retVal, p => { p.Class = retVal; p.IsCollection = true; }))); if (config != null) { config(retVal); } retVal.Methods.AddRange(Any.Sequence(s => Any.OdcmMethod())); }
private void AddPrimitives() { foreach (var entry in PrimitiveTypes) { _odcmModel.AddType(new OdcmPrimitiveType(entry[1], OdcmNamespace.GetWellKnownNamespace(entry[0]))); } }
public static Namespace Map(OdcmNamespace odcmNamespace) { return(new Namespace(odcmNamespace.Name) { Enums = odcmNamespace.Enums.Select(Enum.Map) }); }
public void Namespace_Shouldnt_Contain_Whitespace_For_CSharp() { var testNamespace = new OdcmNamespace("Microsoft.OutlookServices"); var namespaceName = TypeHelperCSharp.GetNamespaceName(testNamespace); Assert.AreEqual(namespaceName, "Microsoft.OutlookServices"); }
public Given_an_OdcmEnum() { _model = new OdcmModel(Any.ServiceMetadata()); _namespace = Any.EmptyOdcmNamespace(); _model.Namespaces.Add(_namespace); }
public static OdcmEntityClass OdcmEntityClass(OdcmNamespace odcmNamespace, string name, Action <OdcmEntityClass> config = null) { var retVal = new OdcmEntityClass(name, odcmNamespace); EntityOrMediaOdcmClass(odcmNamespace, config, retVal); return(retVal); }
public static OdcmMediaClass MediaOdcmClass(OdcmNamespace odcmNamespace, Action <OdcmEntityClass> config = null) { var retVal = new OdcmMediaClass(Any.CSharpIdentifier(), odcmNamespace); EntityOrMediaOdcmClass(odcmNamespace, config, retVal); return(retVal); }
public void Namespace_Should_PascalCase_For_CSharp() { var testNamespace = new OdcmNamespace("microsoft.graph"); var namespaceName = TypeHelperCSharp.GetNamespaceName(testNamespace); Assert.AreEqual(namespaceName, "Microsoft.Graph"); }
public void ProcessNamespace(OdcmNamespace odcmNamespace) { _currentNamespace = odcmNamespace; #line default #line hidden #line 84 "E:\gittf\Roxel\O365\Public\src\EdmDecomposition\EdmDecomposition\ODataWriter.tt" this.Write("\r\nnamespace "); #line default #line hidden #line 86 "E:\gittf\Roxel\O365\Public\src\EdmDecomposition\EdmDecomposition\ODataWriter.tt" this.Write(this.ToStringHelper.ToStringWithCulture(odcmNamespace.Name)); #line default #line hidden #line 86 "E:\gittf\Roxel\O365\Public\src\EdmDecomposition\EdmDecomposition\ODataWriter.tt" this.Write("\r\n{\r\n"); #line default #line hidden #line 88 "E:\gittf\Roxel\O365\Public\src\EdmDecomposition\EdmDecomposition\ODataWriter.tt" var odcmEnums = from odcmType in odcmNamespace.Types where odcmType is OdcmEnum select odcmType; foreach (OdcmEnum odcmEnum in odcmEnums) { ProcessEnum(odcmEnum); } var odcmClasses = from odcmType in odcmNamespace.Types where odcmType is OdcmClass select odcmType; foreach (OdcmClass odcmClass in odcmClasses) { ProcessClass(odcmClass); } #line default #line hidden #line 102 "E:\gittf\Roxel\O365\Public\src\EdmDecomposition\EdmDecomposition\ODataWriter.tt" this.Write("}\r\n"); #line default #line hidden #line 104 "E:\gittf\Roxel\O365\Public\src\EdmDecomposition\EdmDecomposition\ODataWriter.tt" }
public void Init() { _model = new OdcmModel(); _namespace = Any.OdcmNamespace(); _model.Namespaces.Add(_namespace); _class = Any.OdcmClass(e => e.Namespace = _namespace.Name); }
public void Init() { _model = new OdcmModel(); _namespace = Any.OdcmNamespace(); _model.Namespaces.Add(_namespace); _class = new OdcmClass(Any.CSharpIdentifier(), _namespace.Name, OdcmClassKind.Entity); }
public void Init(Action <OdcmModel> config = null, bool generateMocks = false) { Model = new OdcmModel(Any.ServiceMetadata()); Namespace = Any.EmptyOdcmNamespace(); Model.Namespaces.Add(Namespace); Class = Any.OdcmEntityClass(Namespace); Model.AddType(Class); OdcmContainer = Any.ServiceOdcmClass(Namespace); Model.AddType(OdcmContainer); if (config != null) { config(Model); } Model.ServiceMetadata["$metadata"] = Model.ToEdmx(true); Proxy = GetProxy(Model, ConfigurationProvider, generateMocks ? new[] { "DynamicProxyGenAssembly2" } : null); ConcreteType = Proxy.GetClass(Class.Namespace, Class.Name); ConcreteInterface = Proxy.GetInterface(Class.Namespace, "I" + Class.Name); FetcherType = Proxy.GetClass(Class.Namespace, Class.Name + "Fetcher"); var identifier = NamesService.GetFetcherInterfaceName(Class); FetcherInterface = Proxy.GetInterface(Class.Namespace, identifier.Name); CollectionType = Proxy.GetClass(Class.Namespace, Class.Name + "Collection"); identifier = NamesService.GetCollectionInterfaceName(Class); CollectionInterface = Proxy.GetInterface(Class.Namespace, identifier.Name); EntityContainerType = Proxy.GetClass(Model.EntityContainer.Namespace, Model.EntityContainer.Name); EntityContainerInterface = Proxy.GetInterface(Model.EntityContainer.Namespace, "I" + Model.EntityContainer.Name); TargetEntity = new EntityArtifacts() { Class = Class, ConcreteType = ConcreteType, ConcreteInterface = ConcreteInterface, FetcherType = FetcherType, FetcherInterface = FetcherInterface, CollectionType = CollectionType, CollectionInterface = CollectionInterface }; }
public Namespace(OdcmNamespace @namespace, OdcmModel model) { Name = NamesService.GetNamespaceName(@namespace); //Features = @namespace.Enums.SelectMany(global::Vipr.Writer.CSharp.Features.ForOdcmEnum) // .Concat(@namespace.Classes.SelectMany(global::Vipr.Writer.CSharp.Features.ForOdcmClass)) // .Concat(@namespace.Classes.SelectMany(c => global::Vipr.Writer.CSharp.Features.ForEntityContainer(c, model))); Features = @namespace.Enums.SelectMany(global::Vipr.Writer.CSharp.Features.ForOdcmEnum) .Concat(@namespace.Classes.OfType <OdcmComplexClass>().SelectMany(global::Vipr.Writer.CSharp.Features.ForOdcmClass)) .Concat(@namespace.Classes.OfType <OdcmEntityClass>().SelectMany(global::Vipr.Writer.CSharp.Features.ForOdcmClass)) .Concat(@namespace.Classes.OfType <OdcmServiceClass>().SelectMany(c => global::Vipr.Writer.CSharp.Features.ForEntityContainer(c, model))); }
public static OdcmNamespace EmptyOdcmNamespace(Action <OdcmNamespace> config = null) { var retVal = new OdcmNamespace(Any.CSharpIdentifier()); if (config != null) { config(retVal); } return(retVal); }
private void Write(OdcmNamespace @namespace) { _("namespace {0}", NamesService.GetNamespaceName(@namespace)); using (_builder.IndentBraced) { Write(_dependencies); Write(@namespace.Enums); Write(@namespace.Classes); } }
private static OdcmClass ComplexOdcmType(OdcmNamespace odcmNamespace, Action <OdcmClass> config = null) { var retVal = new OdcmClass(Any.CSharpIdentifier(), odcmNamespace.Name, OdcmClassKind.Complex); retVal.Properties.AddRange(Any.Sequence(i => Any.PrimitiveOdcmProperty(p => p.Class = retVal))); if (config != null) { config(retVal); } return(retVal); }
public void When_the_model_has_a_namespace_called_Edm_it_is_ignored() { var @namespace = new OdcmNamespace("EDM"); _model.Namespaces.Add(@namespace); _model.AddType(Any.OdcmEnum(e => e.Namespace = OdcmNamespace.Edm)); var proxy = GetProxy(_model); proxy.GetNamespaces() .Should().BeEquivalentTo(new object[] { }); }
public static string ToEdmx(this OdcmNamespace odcmNamespace) { var sb = new StringBuilder(); sb.AppendFormat("<Schema Namespace=\"{0}\" xmlns=\"http://docs.oasis-open.org/odata/ns/edm\">", odcmNamespace.Name); if (odcmNamespace.Classes.Any()) { sb.Append(odcmNamespace.Classes.Select(ToEdmx).Aggregate((c, n) => c + "\n" + n)); } sb.AppendFormat("</Schema>"); return(sb.ToString()); }
public static object ComplexOdcmField(OdcmNamespace odcmNamespace, Action <OdcmField> config = null) { var retVal = new OdcmField(Any.CSharpIdentifier()) { Type = Any.ComplexOdcmType(odcmNamespace) }; if (config != null) { config(retVal); } return(retVal); }
private void AddPrimitives() { foreach (var entry in PrimitiveTypes) { try { _odcmModel.AddType(new OdcmPrimitiveType(entry[1], OdcmNamespace.GetWellKnownNamespace(entry[0]))); } catch (Exception e) { Logger.Error(e, e.Message); } } }
public static OdcmProperty ComplexOdcmProperty(OdcmNamespace odcmNamespace, Action <OdcmProperty> config = null) { var retVal = new OdcmProperty(Any.CSharpIdentifier()) { Type = Any.ComplexOdcmType(odcmNamespace) }; if (config != null) { config(retVal); } return(retVal); }
public Given_a_nullable_Primitive_OdcmProperty() { _model = new OdcmModel(Any.ServiceMetadata()); _namespace = Any.EmptyOdcmNamespace(); _model.Namespaces.Add(_namespace); _class = Any.EntityOdcmClass(_namespace); _property = Any.PrimitiveOdcmProperty(p => p.IsNullable = true); _class.Properties.Add(_property); _model.AddType(_class); }
public static OdcmProperty ComplexOdcmProperty(OdcmNamespace odcmNamespace, Action <OdcmProperty> config = null) { var projection = Any.ComplexOdcmClass(odcmNamespace).DefaultProjection; var retVal = new OdcmProperty(Any.CSharpIdentifier()) { Projection = projection }; if (config != null) { config(retVal); } return(retVal); }
public Given_an_OdcmClass_Complex() { _model = new OdcmModel(Any.ServiceMetadata()); _namespace = Any.EmptyOdcmNamespace(); _model.Namespaces.Add(_namespace); _class = Any.OdcmClass(e => e.Namespace = _namespace.Name); _model.AddType(_class); _proxy = GetProxy(_model); _classType = _proxy.GetClass(_class.Namespace, _class.Name); }
public void When_it_changes_a_namespace_then_requests_OdataType_is_set_to_the_old_namespace() { var oldNamespace = _model.EntityContainer.Namespace; var namespacePrefix = Any.CSharpIdentifier(); var namespaceRename = Any.CSharpIdentifier(); var newNamespace = new OdcmNamespace(namespacePrefix + "." + namespaceRename); var namespaceMap = new Dictionary <string, string> { { oldNamespace.Name, namespaceRename } }; var proxy = GetProxyWithChangedNamespaces(namespacePrefix, namespaceMap); var @class = oldNamespace.Classes.OfType <OdcmEntityClass>().First(); var entityArtifacts = GetEntityArtifactsFromNewNamespace(@class, newNamespace, proxy, oldNamespace); using (var mockService = new MockService() ) { mockService .OnRequest(c => c.Request.Method == "POST" && c.Request.Path.Value == @class.GetDefaultEntitySetPath() && IsNamespaceReplaced(c.Request, oldNamespace.Name, newNamespace.Name)) .RespondWith( (c, b) => { c.Response.StatusCode = 201; c.Response.WithDefaultODataHeaders(); c.Response.WithODataEntityResponseBody(b, @class.GetDefaultEntitySetName(), null); }); var collection = mockService .CreateContainer(proxy.GetClass(newNamespace.Name, _model.EntityContainer.Name)) .GetPropertyValue <ReadOnlyQueryableSetBase>(entityArtifacts.Class.GetDefaultEntitySetName()); var instance = entityArtifacts.ConcreteType.Initialize(@class.GetSampleKeyArguments().ToArray()); var task = collection.InvokeMethod <Task>("Add" + @class.Name + "Async", args: new[] { instance, false }); task.Wait(); } }
public Given_an_OdcmParameter() { _model = new OdcmModel(Any.ServiceMetadata()); _namespace = Any.EmptyOdcmNamespace(); _model.Namespaces.Add(_namespace); _class = Any.OdcmEntityClass(_namespace); _model.AddType(_class); _method = Any.OdcmMethod(m => m.Parameters.Clear()); _class.Methods.Add(_method); _param = Any.OdcmParameter(); _method.Parameters.Add(_param); _expectedMethodName = _method.Name + "Async"; }
public OdcmComplexClass(string name, OdcmNamespace @namespace) : base(name, @namespace, OdcmClassKind.Complex) { }
public OdcmServiceClass(string name, OdcmNamespace @namespace) : base(name, @namespace, OdcmClassKind.Service) { }
public OdcmMediaClass(string name, OdcmNamespace @namespace) : base(name, @namespace, OdcmClassKind.MediaEntity) { }
protected OdcmType(string name, OdcmNamespace @namespace) : base(name) { Namespace = @namespace; }
public OdcmPrimitiveType(string name, OdcmNamespace @namespace) : base(name, @namespace) { }