public async Task CreateWithScript_RequiresScriptSet() { var mockHttp = new MockHttpMessageHandler(); mockHttp.When(HttpMethod.Post, $"{server}/fmi/data/v1/databases/{file}/layouts/{layout}/records*") .WithPartialContent("fieldData") .WithPartialContent("script") // ensure the body contains the script parameter we're sending .WithPartialContent("run_this_script") .Respond("application/json", DataApiResponses.SuccessfulCreate()); IFileMakerApiClient fdc = GetDataClientWithMockedHandler(mockHttp); var req = new CreateRequest <User>() { Layout = "layout", Data = new User { Name = "test name" }, Script = "run_this_script" }; var response = await fdc.SendAsync(req); Assert.NotNull(response); Assert.Contains(response.Messages, r => r.Message == "OK"); }
public async Task CreateFromDictionaryStringString_ShouldReturnOK_FromSendAsync() { IFileMakerApiClient fdc = GetDataClientWithMockedHandler(); var response = await fdc.SendAsync(reqWithLayout); Assert.NotNull(response); Assert.Contains(response.Messages, r => r.Message == "OK"); }
public async Task CreateWithGlobal_Should_GetTwoOKs() { var mockHttp = new MockHttpMessageHandler(); mockHttp.When(new HttpMethod("PATCH"), $"{server}/fmi/data/v1/databases/{file}/globals") .WithPartialContent("globalFields") .Respond("application/json", DataApiResponses.SetGlobalSuccess()); IFileMakerApiClient fdc = GetDataClientWithMockedHandler(mockHttp); var req = new CreateRequest <User>() { Layout = "layout", Data = new User { Name = "test name" }, Script = "run_this_script" }; var globalResponse = await fdc.SetGlobalFieldAsync("Table", "Field", "Value"); Assert.NotNull(globalResponse); Assert.Contains(globalResponse.Messages, r => r.Message == "OK"); }
public async Task Create_WithoutLayout_ThrowsArgumentException_SendAsync() { IFileMakerApiClient fdc = GetDataClientWithMockedHandler(); await Assert.ThrowsAsync <ArgumentException>(async() => await fdc.SendAsync(reqWithoutLayout)); }
/// <summary> /// Generates a new find request with an initial find query instance, specifying the layout via the model's DataContract attribute. /// </summary> /// <param name="client">The FileMaker API client instance.</param> /// <param name="initialQuery">The initial find request data.</param> /// <typeparam name="T">The type used for the find request.</typeparam> /// <returns>An IFindRequest{T} instance setup per the initial query paramater.</returns> public static IFindRequest <T> GenerateFindRequest <T>(this IFileMakerApiClient client, T initialQuery) { return(client.GenerateFindRequest <T>() .AddCriteria(initialQuery, false) .UseLayout(initialQuery)); }
/// <summary> /// Generates a new edit request for the input object. /// </summary> /// <param name="client">The FileMaker API client instance.</param> /// <param name="data">The initial edit data request.</param> /// <typeparam name="T">The type used for the edit request.</typeparam> /// <returns>An IFindRequest{T} instance setup per the initial query paramater.</returns> public static IEditRequest <T> GenerateEditRequest <T>(this IFileMakerApiClient client, T data) { return(client.GenerateEditRequest <T>() .SetData(data) .UseLayout(data)); }