public void SmallTree()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .AddTypes(typeof(Name))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
        public void LeafClass()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .AddTypes(typeof(Location))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
        public void NullableProperties()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .AddTypes(typeof(Book))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
        public void EnumAsStrings()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .Configure(options => { options.EnumValueTypeStrategy = EnumValueTypeStrategies.AllString; })
                      .AddTypes(typeof(Title))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
        public void ReflectMethods()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .Configure(options => { options.ReflectMethods = t => t.IsInterface; })
                      .AddTypes(typeof(ISampleApi))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
Example #6
0
        public void GenericUnionType()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .Configure(TeeSquareUnionTypes.Configure)
                      .AddTypes(typeof(Result <>))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
        public void OriginalCase()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .Configure(options => { options.TypeConverter.NamingConventions.Properties = NameConvention.Original; })
                      .AddTypes(typeof(Name))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
        public void ImportDependencies()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .AddImportedTypes(("./ReflectiveWriterTests.SmallTree", new[] { typeof(Title) }))
                      .AddTypes(typeof(Name))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
Example #9
0
        public void SupportedDiscriminatorTypes()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .Configure(TeeSquareUnionTypes.Configure)
                      .AddTypes(typeof(SupportedDiscriminatorTypes))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
Example #10
0
        public void OutputClassStrategy()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .Configure(options => { options.ComplexTypeStrategy = (writer, type) => writer.WriteClass(type); })
                      .AddTypes(typeof(Library))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
Example #11
0
        public void EntireTree()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .Configure(TeeSquareMobx.ConfigureMobxWriter)
                      .AddTypes(typeof(Library))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res, CreateFileForActual)
            .AssertAreTheSame(Assert.Fail);
        }
        public void UnusedImportsAreOmitted()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .AddImportedTypes(("./ReflectiveWriterTests.SmallTree",
                                         new[] { typeof(Title), typeof(Book), typeof(Library) }))
                      .AddTypes(typeof(Name))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
        public void NullablePropertiesAsNullUnion()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .Configure(options =>
                                 options.InterfaceWriterFactory =
                                     new InterfaceWriterFactory(OptionalFieldRendering.WithNullUnion))
                      .AddTypes(typeof(Book))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
        public void TheyCanBeImportedFromElsewhere()
        {
            var res = TeeSquareWebApi.GenerateForControllers(typeof(TestController))
                      .Configure(options =>
            {
                options.RequestHelperTypeOption = RequestHelperTypeOptions.ImportTypes("./WhenNoControllersAreReferenced.OnlySharedTypesAreEmitted");
            })
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
        public void TheKindDeterminedByTheStrategyIsUsed()
        {
            var res = TeeSquareWebApi.GenerateForControllers(typeof(OtherController))
                      .Configure(options =>
            {
                options.GetParameterKindStrategy = (paramInfo, route, method) => ParameterKind.Route;
            })
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
        public void AllRoutesAndDtosAreOutput()
        {
            var res = TeeSquareWebApi.GenerateForAssemblies(TestConstants.WebApiAssembly)
                      .Configure(options =>
            {
                options.TypeConverter = new TypeConverter((typeof(IFormFile), "File"));
            })
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
Example #17
0
        public void AlternativeNullableProperties()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .Configure(TeeSquareMobx.ConfigureMobxWriter(new MobxOptions()
            {
                OptionalType = "types.maybeNull({0})"
            }))
                      .AddTypes(typeof(Book))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res, CreateFileForActual)
            .AssertAreTheSame(Assert.Fail);
        }
Example #18
0
        public void DiscriminatorProperty()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .Configure(options =>
            {
                options.TypeConverter = new DiscriminatedUnionTypeConverter();
            })
                      .AddTypes(typeof(Circle), typeof(Square), typeof(Rectangle))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
        public void ContentBetweenBracesIsIndented()
        {
            var res = WriteToMemory(w =>
            {
                w.OpenBlock();
                w.WriteLine("let i = 0;");
                w.WriteLine("return i;");
                w.CloseBlock();
            });

            Blurk.CompareImplicitFile()
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
Example #20
0
        public void TheyAreIncludedInTheOutput()
        {
            var res = TeeSquareWebApi.GenerateForControllers(TestConstants.SimpleControllers)
                      .Configure(options =>
            {
                options.TypeConverter = new TypeConverter((typeof(IFormFile), "File"));
            })
                      .AddTypes(typeof(NotUsedInApiTestDto))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
Example #21
0
        public void OverrideNames()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .Configure(TeeSquareMobx.ConfigureMobxWriter(new MobxOptions
            {
                EmitInstanceType = false
            }, new CustomMobxTypeConverter()))
                      .AddTypes(typeof(Library))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res, CreateFileForActual)
            .AssertAreTheSame(Assert.Fail);
        }
        public void MixedEnums()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .Configure(options =>
            {
                options.EnumValueTypeStrategy = type =>
                                                type == typeof(ByteEnum) ? EnumValueType.Number : EnumValueType.String;
            })
                      .AddTypes(typeof(Title), typeof(ByteEnum))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
        public void TheRouteDeterminedByTheStrategyIsUsed()
        {
            var res = TeeSquareWebApi.GenerateForControllers(typeof(ReturnValueAttributeController))
                      .Configure(options =>
            {
                var defaultStrategy        = options.BuildRouteStrategy;
                options.BuildRouteStrategy = (controller, action, defaultRoute) =>
                                             $"prefix/{defaultStrategy(controller, action, defaultRoute)}";
            })
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
        public void NullableBodyTypesAreHandledCorrectly()
        {
            var res = TeeSquareWebApi.GenerateForControllers(typeof(OtherController))
                      .Configure(options =>
            {
                options.GetParameterKindStrategy = (paramInfo, route, method) => ParameterKind.Body;
                options.GetHttpMethodAndRequestFactoryStrategy =
                    (controller, action) => (RequestInfo.Post, HttpMethod.Post);
            })
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
Example #25
0
        public void RoutesAreSplitAcrossAllocatedClassesWhichMatchTheRequestFactoryName()
        {
            var res = TeeSquareWebApi.GenerateForControllers(TestConstants.SimpleControllers)
                      .Configure(options =>
            {
                options.TypeConverter       = new TypeConverter((typeof(IFormFile), "File"));
                options.FactoryNameStrategy = (controller, action, route) =>
                                              $"{controller.Name.Replace("Controller", "")}RequestFactory";
            })
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
        public void TheTypeDeterminedByTheStrategyIsUsed()
        {
            var res = TeeSquareWebApi.GenerateForControllers(typeof(ReturnValueAttributeController))
                      .Configure(options =>
            {
                options.GetApiReturnTypeStrategy = (controller, action) =>
                                                   action.GetCustomAttributes <ProducesResponseTypeAttribute>()
                                                   .Select(a => a.Type)
                                                   .FirstOrDefault() ?? action.ReturnType;
            })
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
Example #27
0
        public void OverrideNames()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .Configure(TeeSquareMobx.ConfigureMobxWriter(new MobxOptions
            {
                EmitInstanceType = false
            }))
                      .Configure(options => options.TypeConverter.TypeName = options.TypeConverter.TypeName.ExtendStrategy(original =>
                                                                                                                           type => $"{original(type)}BaseModel"))
                      .AddTypes(typeof(Library))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
        public void EnumDescriptions()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .AddTypes(typeof(DescribedEnum))
                      .Configure(o =>
            {
                o.EnumWriterFactory = new EnumWriterFactory()
                                      .IncludeDescriptionGetter(true)
                                      .IncludeAllValuesConst(true)
                                      .IncludeDescriptions(true);
            })
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
Example #29
0
        public void RenamedImports()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .Configure(options =>
            {
                options.TypeConverter       = new CustomTypeConverter();
                options.ImportTypeConverter = new TypeConverter();
            })
                      .AddImportedTypes(("./ReflectiveWriterTests.EntireTree", new[]
            {
                typeof(Location),
                typeof(Book),
            }))
                      .AddTypes(typeof(Library))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }
        public void RenamedImports()
        {
            var res = TeeSquareFluent.ReflectiveWriter()
                      .Configure(options =>
            {
                options.TypeConverter.TypeName = options.TypeConverter.TypeName.ExtendStrategy(original =>
                                                                                               type => type == typeof(Book) ? $"{original(type)}Renamed" : original(type));
                options.ImportTypeConverter = new TypeConverter();
            })
                      .AddImportedTypes(("./ReflectiveWriterTests.EntireTree", new[]
            {
                typeof(Location),
                typeof(Book),
            }))
                      .AddTypes(typeof(Library))
                      .WriteToString();

            Blurk.CompareImplicitFile("ts")
            .To(res)
            .AssertAreTheSame(Assert.Fail);
        }