public async Task Copy_WithNullProjectId_ThrowsException(DataObjectSyncanoClient client) { //given var request = new DataObjectDefinitionRequest(); request.ProjectId = TestData.ProjectId; request.CollectionId = TestData.CollectionId; var dataObject = await client.New(request); var copyRequest = new CopyDataObjectRequest(); copyRequest.ProjectId = null; copyRequest.CollectionId = TestData.CollectionId; copyRequest.DataId = dataObject.Id; try { //when await client.Copy(copyRequest); throw new Exception("New should throw an exception"); } catch (Exception e) { //then e.ShouldBeType<ArgumentNullException>(); } //cleanup var deleteRequest = new DataObjectSimpleQueryRequest(); deleteRequest.ProjectId = TestData.ProjectId; deleteRequest.CollectionId = TestData.CollectionId; await client.Delete(deleteRequest); }
public async Task Copy_ByCollectionId_CreatesNewDataObject(DataObjectSyncanoClient client) { //given var request = new DataObjectDefinitionRequest(); request.ProjectId = TestData.ProjectId; request.CollectionId = TestData.CollectionId; var dataObject = await client.New(request); var copyRequest = new CopyDataObjectRequest(); copyRequest.ProjectId = TestData.ProjectId; copyRequest.CollectionId = TestData.CollectionId; copyRequest.DataId = dataObject.Id; //when var result = await client.Copy(copyRequest); //then result.ShouldNotBeNull(); result[0].Folder.ShouldEqual(request.Folder); result[0].Id.ShouldNotEqual(dataObject.Id); //cleanup var deleteRequest = new DataObjectSimpleQueryRequest(); deleteRequest.ProjectId = TestData.ProjectId; deleteRequest.CollectionId = TestData.CollectionId; await client.Delete(deleteRequest); }
public async Task Copy_DataIdsListAndDataIdUsed_CreatesNewDataObject(DataObjectSyncanoClient client) { //given var request = new DataObjectDefinitionRequest(); request.ProjectId = TestData.ProjectId; request.CollectionId = TestData.CollectionId; var dataObject = await client.New(request); var dataIds = new List<string>(); dataIds.Add(dataObject.Id); dataObject = await client.New(request); var copyRequest = new CopyDataObjectRequest(); copyRequest.ProjectId = TestData.ProjectId; copyRequest.CollectionId = TestData.CollectionId; copyRequest.DataIds = dataIds; copyRequest.DataId = dataObject.Id; //when var result = await client.Copy(copyRequest); //then result.ShouldNotBeNull(); result.Count.ShouldEqual(2); //cleanup var deleteRequest = new DataObjectSimpleQueryRequest(); deleteRequest.ProjectId = TestData.ProjectId; deleteRequest.CollectionId = TestData.CollectionId; await client.Delete(deleteRequest); }
/// <summary> /// Copies data with a specified data_id. Copies have their data_key cleared. /// <remarks>The collection_id/collection_key parameter means that one can use either one of them - collection_id or collection_key.</remarks> /// <remarks>User API key usage permitted. Can copy only data that are in a container with a read_data permission (or read_own_data for Data Objects associated with current user). Target container also needs to have create_data permission.</remarks> /// </summary> /// <param name="request">Request for querying DataObjects.</param> /// <returns>List of copied DataObject objects.</returns> public async Task<List<DataObject>> Copy(CopyDataObjectRequest request) { if (request.ProjectId == null) throw new ArgumentNullException(); if (request.CollectionId == null && request.CollectionKey == null) throw new ArgumentNullException(); var dataIds = request.DataIds == null ? new List<string>() : new List<string>(request.DataIds); if (dataIds.Count + (request.DataId != null ? 1 : 0) > MaxVauluesPerRequest) throw new ArgumentException(); if (request.DataId != null) dataIds.Add(request.DataId); if(dataIds.Count < 1) throw new ArgumentException(); return await _syncanoClient.GetAsync<List<DataObject>>("data.copy", new { project_id = request.ProjectId, collection_id = request.CollectionId, collection_key = request.CollectionKey, data_ids = dataIds.ToArray() }, "data"); }