/// <summary> /// Builds this IOrganizationService. /// </summary> /// <returns></returns> public IOrganizationService Build() { ApplyNewEntityDefaultIds(); ApplyEntityFilter(); return(new FakeIOrganizationService(Service) { AssociateActions = AssociateActions.ToArray(), CreateFuncs = CreateFuncs.ToArray(), DeleteActions = DeleteActions.ToArray(), DisassociateActions = DisassociateActions.ToArray(), ExecuteFuncs = ExecuteFuncs.ToArray(), RetrieveMultipleFuncs = RetrieveMultipleFuncs.ToArray(), RetrieveFuncs = RetrieveFuncs.ToArray(), UpdateActions = UpdateActions.ToArray() }); }
/// <summary> /// Asserts failure whenever an action is requested that would perform an update (Create / Delete / Update) of some sort /// </summary> /// <returns></returns> public TDerived IsReadOnly() { AssociateActions.Add((s, n, i, r, c) => { TestSettings.TestFrameworkProvider.AssertFail("An attempt was made to Associate Entities with a ReadOnly Service"); }); WithNoCreates(); DeleteActions.Add((s, n, i) => { TestSettings.TestFrameworkProvider.AssertFail($"An attempt was made to Delete a(n) {n} Entity with id {i}, using a ReadOnly Service"); }); DisassociateActions.Add((s, n, i, r, c) => { TestSettings.TestFrameworkProvider.AssertFail("An attempt was made to Disassociate Entities with a ReadOnly Service"); }); ExecuteFuncs.Add((s, r) => { var readOnlyStartsWithNames = new List <string> { "CanBe", "CanManyToMany", "Download", "Execute", "Export", "FetchXmlToQueryExpression", "FindParentResourceGroup", "Get", "Is", "LocalTimeFromUtcTime", "Query", "Retrieve", "Search", "UtcTimeFromLocalTime", "WhoAmI" }; if (readOnlyStartsWithNames.Any(n => r.RequestName.StartsWith(n))) { return(s.Execute(r)); } throw TestSettings.TestFrameworkProvider.Value.GetFailedException($"An attempt was made to Execute Request {r.RequestName} with a ReadOnly Service"); }); UpdateActions.Add((s, e) => { throw TestSettings.TestFrameworkProvider.Value.GetFailedException($"An attempt was made to Update a(n) {e.LogicalName} Entity with id {e.Id}, using a ReadOnly Service"); }); return(This); }
/// <summary> /// Adds the fake disassociate. /// </summary> /// <param name="action">The action.</param> /// <returns></returns> public TDerived WithFakeDisassociate(params Action <IOrganizationService, string, Guid, Relationship, EntityReferenceCollection>[] action) { DisassociateActions.AddRange(action); return(This); }