public void RoutedByAttribute()
        {
            ControllerBuilder.AddAttribute(MvcConstants.RouteAttributeFullName_AspNetCore)
            .AddStringConstructorArg("api/Things/[action]").Commit();

            AssertRouteEquals("/api/Things/RandoMethod");
        }
        public void Area_RoutedByConvention()
        {
            ControllerBuilder.AddAttribute(MvcConstants.AreaAttributeFullName_AspNetCore)
            .AddStringConstructorArg("ThingsManagement").Commit();

            AssertRouteEquals("/ThingsManagement/Things/RandoMethod");
        }
Exemple #3
0
        public void QueryParams_Configured_Multi_AddedToUrl_ScriptWritten()
        {
            GivenQueryParameter("key1", "val1");
            GivenQueryParameter("key2", "val2");
            ControllerBuilder
            .AddAttribute(MvcConstants.RouteAttributeFullName_AspNetCore)
            .AddConstructorArg("\"api/RoutedApi\"")
            .Commit()
            .AddMethod("GetThing", "string")
            .AddScriptActionAttribute()
            .AddAttribute(MvcConstants.HttpGetAttributeFullName_AspNetCore)
            .AddConstructorArg("\"thing/{thingId}\"").Commit()
            .AddParameter("thingId", "string")
            .AddLineOfCode("return null", 0)
            .Commit()
            ;

            AssertScriptTextForFunctionIs(@"
export function GetThing(thingId: string): void {
	const urlParams = new URLSearchParams();
	tryAppendKeyValueToUrl(urlParams, ""key1"", ""val1"");
	tryAppendKeyValueToUrl(urlParams, ""key2"", ""val2"");
	fetchWrapper(""GET"", `/api/RoutedApi/thing/${thingId}${getQueryString(urlParams)}`, null);
}", ScriptExtensions.KeyValueQueryParamHelper);
        }
        public void Area_InCustomRouteWithTokens()
        {
            ControllerBuilder.AddAttribute(MvcConstants.AreaAttributeFullName_AspNetCore)
            .AddStringConstructorArg("ThingsManagement").Commit()
            .AddAttribute(MvcConstants.RouteAttributeFullName_AspNetCore)
            .AddStringConstructorArg("api/[area]/[controller]/[action]").Commit();

            AssertRouteEquals("/api/ThingsManagement/Things/RandoMethod");
        }
        public void ApiVersion_IsResolved()
        {
            ControllerBuilder.AddAttribute(MvcConstants.RouteAttributeFullName_AspNetCore)
            .AddStringConstructorArg("api/v{v:apiVersion}/[controller]").Commit()
            .AddAttribute(MvcConstants.ApiVersionAttributeFullName_AspNetCore)
            .AddStringConstructorArg("1.0").Commit();

            AssertRouteEquals("/api/v1.0/Things");
        }
        public void HttpPatchRoute_WithIdPlaceholder_IsAppended()
        {
            ControllerBuilder.AddAttribute(MvcConstants.RouteAttributeFullName_AspNetCore)
            .AddStringConstructorArg("api/[controller]").Commit();

            Action.AddAttribute(MvcConstants.ToAspNetCoreFullName(MvcConstants.HttpPatchAttributeName))
            .AddStringConstructorArg("{id}/dostuff").Commit();

            AssertRouteEquals("/api/Things/{id}/dostuff");
        }
        public void HttpGetRoute_IsAppended()
        {
            ControllerBuilder.AddAttribute(MvcConstants.AreaAttributeFullName_AspNetCore)
            .AddStringConstructorArg("ThingsManagement").Commit()
            .AddAttribute(MvcConstants.RouteAttributeFullName_AspNetCore)
            .AddStringConstructorArg("api/[area]/[controller]").Commit();

            Action.AddAttribute(MvcConstants.HttpGetAttributeFullName_AspNetCore)
            .AddStringConstructorArg("stuff").Commit();

            AssertRouteEquals("/api/ThingsManagement/Things/stuff");
        }
        public void BaseUrl_IsPrepended_ScriptGenerated()
        {
            GivenBaseUrl("api");
            ControllerBuilder.AddAttribute(MvcConstants.AreaAttributeFullName_AspNetCore)
            .AddStringConstructorArg("ThingsManagement").Commit()
            .AddAttribute(MvcConstants.RouteAttributeFullName_AspNetCore)
            .AddStringConstructorArg("[area]/[controller]").Commit();

            Action.Commit();

            AssertScriptTextForFunctionIs(@"
export function RandoMethod(): void {
	fetchWrapper(""GET"", `/api/ThingsManagement/Things`, null);
}");
        }
        public void RouteAttribute_UsedInBaseURL()
        {
            ControllerBuilder
            .AddAttribute(MvcConstants.RouteAttributeFullName_AspNetCore)
            .AddConstructorArg("\"api/[controller]\"")
            .Commit();

            AddControllerAction("GetStringList", "List<string>")
            .AddAttribute(MvcConstants.HttpGetAttributeFullName_AspNetCore).AddConstructorArg("\"getList\"").Commit()
            .AddLineOfCode("return new List<string>();", 0)
            .Commit();

            // Asp net core
            AssertThatThisControllerAction("GetStringList")
            .RouteTemplateIs($"/api/{ControllerName}/getList", "");
        }
Exemple #10
0
        public void Initialize()
        {
            base.TestInitialize();

            ControllerBuilder.AddAttribute(MvcConstants.RouteAttributeFullName_AspNetCore)
            .AddConstructorArg("\"api/things/{id}/action\"")
            .Commit();

            ControllerBuilder.AddPropertyAndBuildAttributes("TestID", "int")
            .AddAttribute(MvcConstants.FromRouteAttributeFullName_AspNetCore)
            .AddNamedArg("Name", "\"id\"")
            .Commit();

            ControllerBuilder.AddPropertyAndBuildAttributes("NotBaseRoute", "string")
            .AddAttribute(MvcConstants.FromRouteAttributeFullName_AspNetCore)
            .AddNamedArg("Name", "\"other\"")
            .Commit();
        }
        public override void TestInitialize()
        {
            base.TestInitialize();

            ControllerBuilder
            .AddAttribute(MvcConstants.RouteAttributeFullName_AspNetCore)
            .AddConstructorArg("\"api/RoutedApi\"")
            .Commit();

            GivenFetchConfig(new FetchConfig()
            {
                FilePath   = TypeCollectionTester.FetchFilePath,
                Imports    = new List <ImportDefinition>(),
                Name       = "fetchWrapper",
                ReturnType = "void",
                Parameters = new List <ActionParameter>()
                {
                    ActionParameter.RequestMethod,
                    ActionParameter.Url,
                    ActionParameter.Body
                }
            });
        }
        public void BaseUrl_AppendedToBeginning()
        {
            GivenBaseUrl("api");
            ControllerBuilder
            .AddAttribute(MvcConstants.RouteAttributeFullName_AspNetCore)
            .AddConstructorArg("\"RoutedApi\"")
            .Commit()
            .AddMethod("GetThing", "string")
            .AddScriptActionAttribute()
            .AddAttribute(MvcConstants.HttpGetAttributeFullName_AspNetCore)
            .AddConstructorArg("\"thing\"").Commit()
            .AddParameter("thingId", "string", attribute: MvcConstants.FromQueryAttributeFullName_AspNetCore)
            .AddLineOfCode("return null", 0)
            .Commit()
            ;

            AssertScriptTextForFunctionIs(@"
export function GetThing(thingId: string): void {
	const urlParams = new URLSearchParams();
	tryAppendKeyValueToUrl(urlParams, ""thingId"", thingId);
	fetchWrapper(""GET"", `/api/RoutedApi/thing${getQueryString(urlParams)}`, null);
}", ScriptExtensions.KeyValueQueryParamHelper);
        }
        public void RoutedApiController_ScriptWritten()
        {
            ControllerBuilder
            .AddAttribute(MvcConstants.RouteAttributeFullName_AspNetCore)
            .AddConstructorArg("\"api/RoutedApi\"")
            .Commit()
            .AddMethod("GetThing", "string")
            .AddScriptActionAttribute()
            .AddAttribute(MvcConstants.HttpGetAttributeFullName_AspNetCore)
            .AddConstructorArg("\"thing/{thingId}\"").Commit()
            .AddParameter("thingId", "string")
            .AddLineOfCode("return null", 0)
            .Commit()
            .AddMethod("PutThingWithQuery", "string")
            .AddScriptActionAttribute()
            .AddAttribute(MvcConstants.HttpPutAttributeFullName_AspNetCore)
            .AddConstructorArg("\"thing/{thingId}/put\"").Commit()
            .AddParameter("thingId", "string")
            .AddParameter("query", "string", attribute: MvcConstants.FromQueryAttributeFullName_AspNetCore)
            .AddParameter("body", "bool", attribute: MvcConstants.FromBodyAttributeFullName_AspNetCore)
            .AddLineOfCode("return null", 0)
            .Commit()
            .AddMethod("DeleteThing", "string")
            .AddScriptActionAttribute()
            .AddAttribute(MvcConstants.ToAspNetCoreFullName(MvcConstants.HttpDeleteAttributeName))
            .AddConstructorArg("\"thing/{thingId}\"").Commit()
            .AddParameter("thingId", "string")
            .AddLineOfCode("return null", 0)
            .Commit()
            ;
            string queryHelpers = new QueryParameterHelperFunctions(false).TransformText();

            AssertControllerGeneratedText(
                #region ScriptText
                @"
import { fetchWrapper } from ""../../FolderM/FolderN/FetchFile"";

" + queryHelpers + @"
/**
 * 
 * @param thingId 
 */
export function DeleteThing(thingId: string): void {
	fetchWrapper(""DELETE"", `/api/RoutedApi/thing/${thingId}`, null);
}

/**
 * 
 * @param thingId 
 */
export function GetThing(thingId: string): void {
	fetchWrapper(""GET"", `/api/RoutedApi/thing/${thingId}`, null);
}

/**
 * 
 * @param thingId 
 * @param query 
 * @param body 
 */
export function PutThingWithQuery(thingId: string, query: string, body: boolean): void {
	const urlParams = new URLSearchParams();
	tryAppendKeyValueToUrl(urlParams, ""query"", query);
	fetchWrapper(""PUT"", `/api/RoutedApi/thing/${thingId}/put${getQueryString(urlParams)}`, body);
}

"
                #endregion
                );
        }