public void ExpectedDeleteLinkUriShouldBeGenerated(DeleteLinkUriOption deleteLinkUriOption, string expectedUri) { this.dataServiceContext.DeleteLinkUriOption = deleteLinkUriOption; var customer = new Customer { Id = 1 }; var order = new Order { Id = 1 }; var customerCollection = new DataServiceCollection <Customer>( dataServiceContext, new[] { customer }, TrackingMode.AutoChangeTracking, "Customers", null, null); var orderCollection = new DataServiceCollection <Order>( dataServiceContext, new[] { order }, TrackingMode.AutoChangeTracking, "Orders", null, null); this.dataServiceContext.DeleteLink(customer, "Orders", order); var saveResult = new TestSaveResult(this.dataServiceContext, "SaveChanges", SaveChangesOptions.None, null, null); // The API does not offer an easy way to grap the created request and inspect the Uri so we ride on an extensibility hook this.dataServiceContext.SendingRequest2 += (sender, args) => { Assert.Equal(expectedUri, args.RequestMessage.Url.AbsoluteUri); }; // If SendingRequest2 event if not fired, an exception is thrown and the test will fail saveResult.CreateRequestAndFireSendingEvent(); }
public StringBuilder Execute(Dictionary <string, StringBuilder> values, IWorkspace theWorkspace) { Dev2JsonSerializer serializer = new Dev2JsonSerializer(); try { Dev2Logger.Info("Save Tests Service"); StringBuilder testDefinitionMessage; StringBuilder resourceIdString; StringBuilder resourcePathString; values.TryGetValue("resourceID", out resourceIdString); if (resourceIdString == null) { throw new InvalidDataContractException("resourceID is missing"); } Guid resourceId; if (!Guid.TryParse(resourceIdString.ToString(), out resourceId)) { throw new InvalidDataContractException("resourceID is not a valid GUID."); } values.TryGetValue("resourcePath", out resourcePathString); if (resourcePathString == null) { throw new InvalidDataContractException("resourcePath is missing"); } values.TryGetValue("testDefinitions", out testDefinitionMessage); if (testDefinitionMessage == null || testDefinitionMessage.Length == 0) { throw new InvalidDataContractException("testDefinition is missing"); } var res = new ExecuteMessage { HasError = false, Message = serializer.SerializeToBuilder(new TestSaveResult { Result = SaveResult.Success, }) }; var decompressedMessage = serializer.Deserialize <CompressedExecuteMessage>(testDefinitionMessage).GetDecompressedMessage(); var serviceTestModelTos = serializer.Deserialize <List <IServiceTestModelTO> >(decompressedMessage); var resource = ResourceCatalog.GetResource(GlobalConstants.ServerWorkspaceID, resourceId); if (resource == null) { var testResult = new TestSaveResult { Result = SaveResult.ResourceDeleted, Message = $"Resource {resourcePathString} has been deleted. No Tests can be saved for this resource." }; res.Message = serializer.SerializeToBuilder(testResult); } else { var resourcePath = resource.GetResourcePath(GlobalConstants.ServerWorkspaceID); if (!resourcePath.Equals(resourcePathString.ToString(), StringComparison.InvariantCultureIgnoreCase)) { var testResult = new TestSaveResult { Result = SaveResult.ResourceUpdated, Message = $"Resource {resourcePathString} has changed to {resourcePath}. Tests have been saved for this resource." }; res.Message = serializer.SerializeToBuilder(testResult); } TestCatalog.SaveTests(resourceId, serviceTestModelTos); } return(serializer.SerializeToBuilder(res)); } catch (Exception err) { Dev2Logger.Error(err); var res = new ExecuteMessage { HasError = true, Message = new StringBuilder(err.Message) }; return(serializer.SerializeToBuilder(res)); } }