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"); }
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", ""); }
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 ); }