public async Task Count_WithInvalidCollectionId_ThrowsException(DataObjectSyncanoClient client) { //given var request = new DataObjectDefinitionRequest(); request.ProjectId = TestData.ProjectId; request.CollectionId = TestData.CollectionId; await client.New(request); var countRequest = new CountDataObjectRequest(); countRequest.ProjectId = TestData.ProjectId; countRequest.CollectionId = "abc"; try { //when await client.Count(countRequest); throw new Exception("Count should throw an exception"); } catch (Exception e) { e.ShouldBeType<SyncanoException>(); } //cleanup var deleteRequest = new DataObjectSimpleQueryRequest(); deleteRequest.ProjectId = TestData.ProjectId; deleteRequest.CollectionId = TestData.CollectionId; await client.Delete(deleteRequest); }
public async Task Count_WithToMuchFolders_ThrowsException(DataObjectSyncanoClient client) { //given var request = new DataObjectDefinitionRequest(); request.ProjectId = TestData.ProjectId; request.CollectionId = TestData.CollectionId; await client.New(request); var countRequest = new CountDataObjectRequest(); countRequest.ProjectId = TestData.ProjectId; countRequest.CollectionId = TestData.CollectionId; countRequest.Folders = new List<string>(); for (int i = 0; i < DataObjectSyncanoClient.MaxVauluesPerRequest; ++i) countRequest.Folders.Add("folder"); countRequest.Folder = "folder"; try { //when await client.Count(countRequest); throw new Exception("Count should throw an exception"); } catch (Exception e) { e.ShouldBeType<ArgumentException>(); } //cleanup var deleteRequest = new DataObjectSimpleQueryRequest(); deleteRequest.ProjectId = TestData.ProjectId; deleteRequest.CollectionId = TestData.CollectionId; await client.Delete(deleteRequest); }
public async Task Count_ByCollectionId_MultipleDataObjects_FilterByFoldersUsingFolderAndFoldersList(DataObjectSyncanoClient client) { //given var folderClient = new FolderSyncanoClient(new SyncanoHttpClient(TestData.InstanceName, TestData.BackendAdminApiKey)); var folderOne = await folderClient.New(TestData.ProjectId, "folderOne", collectionId: TestData.CollectionId); var folderTwo = await folderClient.New(TestData.ProjectId, "folderTwo", collectionId: TestData.CollectionId); var folderThree = await folderClient.New(TestData.ProjectId, "foldeThree", collectionId: TestData.CollectionId); var count = 15; var request = new DataObjectDefinitionRequest(); request.ProjectId = TestData.ProjectId; request.CollectionId = TestData.CollectionId; request.Folder = folderOne.Name; for (int i = 0; i < count; ++i) await client.New(request); request.Folder = folderTwo.Name; for (int i = 0; i < count; ++i) await client.New(request); request.Folder = folderThree.Name; for (int i = 0; i < count; ++i) await client.New(request); var countRequest = new CountDataObjectRequest(); countRequest.ProjectId = TestData.ProjectId; countRequest.CollectionId = TestData.CollectionId; countRequest.Folders = new List<string> { folderOne.Name }; countRequest.Folder = folderTwo.Name; //when var result = await client.Count(countRequest); //then result.ShouldEqual(2 * count); //cleanup var deleteRequest = new DataObjectSimpleQueryRequest(); deleteRequest.ProjectId = TestData.ProjectId; deleteRequest.CollectionId = TestData.CollectionId; await client.Delete(deleteRequest); await folderClient.Delete(TestData.ProjectId, folderOne.Name, TestData.CollectionId); await folderClient.Delete(TestData.ProjectId, folderTwo.Name, TestData.CollectionId); await folderClient.Delete(TestData.ProjectId, folderThree.Name, TestData.CollectionId); }
public async Task Count_ByCollectionId_MultipleDataObjects_FilterByTextContent(DataObjectSyncanoClient client) { //given var count = 15; var request = new DataObjectDefinitionRequest(); request.ProjectId = TestData.ProjectId; request.CollectionId = TestData.CollectionId; for (int i = 0; i < count; ++i) await client.New(request); request.Text = "text content"; for (int i = 0; i < count; ++i) await client.New(request); var countRequest = new CountDataObjectRequest(); countRequest.ProjectId = TestData.ProjectId; countRequest.CollectionId = TestData.CollectionId; countRequest.Filter = DataObjectContentFilter.Text; //when var result = await client.Count(countRequest); //then result.ShouldEqual(2*count); //cleanup var deleteRequest = new DataObjectSimpleQueryRequest(); deleteRequest.ProjectId = TestData.ProjectId; deleteRequest.CollectionId = TestData.CollectionId; await client.Delete(deleteRequest); }
public async Task Count_ByCollectionId_MultipleDataObjects_FilterByStateAll(DataObjectSyncanoClient client) { //given var count = 15; var request = new DataObjectDefinitionRequest(); request.ProjectId = TestData.ProjectId; request.CollectionId = TestData.CollectionId; request.State = DataObjectState.Rejected; for (int i = 0; i < count; ++i) await client.New(request); request.State = DataObjectState.Moderated; for (int i = 0; i < count; ++i) await client.New(request); var countRequest = new CountDataObjectRequest(); countRequest.ProjectId = TestData.ProjectId; countRequest.CollectionId = TestData.CollectionId; countRequest.State = DataObjectState.All; //when var result = await client.Count(countRequest); //then result.ShouldEqual(2*count); //cleanup var deleteRequest = new DataObjectSimpleQueryRequest(); deleteRequest.ProjectId = TestData.ProjectId; deleteRequest.CollectionId = TestData.CollectionId; await client.Delete(deleteRequest); }
public async Task Count_ByCollectionId(DataObjectSyncanoClient client) { //given var request = new DataObjectDefinitionRequest(); request.ProjectId = TestData.ProjectId; request.CollectionId = TestData.CollectionId; await client.New(request); var countRequest = new CountDataObjectRequest(); countRequest.ProjectId = TestData.ProjectId; countRequest.CollectionId = TestData.CollectionId; //when var result = await client.Count(countRequest); //then result.ShouldEqual(1); //cleanup var deleteRequest = new DataObjectSimpleQueryRequest(); deleteRequest.ProjectId = TestData.ProjectId; deleteRequest.CollectionId = TestData.CollectionId; await client.Delete(deleteRequest); }
/// <summary> /// Counts data of specified criteria. /// <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. Counts only Data Objects that are in a container with a read_data permission and associated with current user Data Objects that are in a container with``read_own_data`` permission.</remarks> /// </summary> /// <param name="request">Request for counting DataObjects.</param> /// <returns>Count of Data Objects with specified criteria.</returns> public Task<int> Count(CountDataObjectRequest request) { if (request.ProjectId == null) throw new ArgumentNullException(); if (request.CollectionId == null && request.CollectionKey == null) throw new ArgumentNullException(); var folders = request.Folders == null ? new List<string>() : new List<string>(request.Folders); if (folders.Count + (request.Folder != null ? 1 : 0) > MaxVauluesPerRequest) throw new ArgumentException(); if (request.Folder != null) folders.Add(request.Folder); return _syncanoClient.GetAsync<int>("data.count", new { project_id = request.ProjectId, collection_id = request.CollectionId, collection_key = request.CollectionKey, state = request.State.ToString(), folders = folders.ToArray(), filter = request.Filter == null ? null : request.Filter.ToString(), by_user = request.ByUser }, "count"); }