public void MultipleDocumentsCanBeRetrieved()
        {
            const int     personCount = 3;
            List <Person> people      = CreateMultiplePersons(personCount);

            var createResponses = new Dictionary <Guid, Person>();

            people.ForEach(person =>
            {
                DocumentSaveSuccessResponse createResponse = AssertCreatePersonSuccess(person, testVaultId);
                documentSuccessResponses.Push(createResponse);
                createResponses.Add(createResponse.DocumentId, person);
            });

            MultiDocumentResponse multipleRetrievedDocuments = trueVaultClient.MultiGetDocuments(testVaultId,
                                                                                                 createResponses.Select(c => c.Key).ToArray());

            Assert.AreEqual(personCount, multipleRetrievedDocuments.Documents.Count());

            IEnumerable <DocumentResponse> retrievedPeopleDocs = multipleRetrievedDocuments.Documents;

            foreach (DocumentResponse doc in retrievedPeopleDocs)
            {
                var deserializedPerson = doc.DeserializeDocument <Person>();
                Assert.IsTrue(createResponses.ContainsKey(doc.Id));
                Assert.AreEqual(createResponses[doc.Id].Id, deserializedPerson.Id);
                Assert.AreEqual(createResponses[doc.Id].Name, deserializedPerson.Name);
                Assert.AreEqual(createResponses[doc.Id].Email, deserializedPerson.Email);
            }
        }
        private DocumentSaveSuccessResponse AssertCreatePersonSuccess(Person person, Guid vaultId)
        {
            DocumentSaveSuccessResponse response = trueVaultClient.CreateDocument(vaultId, person);

            Assert.IsNotNull(response, "Response should not be null");
            Assert.AreNotEqual(response.DocumentId, default(Guid), "Document ID should be a non-default GUID");
            Assert.AreNotEqual(response.TransactionId, default(Guid), "Transaction ID should be a non-default GUID");
            Assert.AreEqual(response.Result, "success", "Response should indicate success");

            return(response);
        }
        public void ExistingDocumentCanBeRetrieved()
        {
            Person person = CreatePerson();
            DocumentSaveSuccessResponse createResponse = AssertCreatePersonSuccess(person, testVaultId);

            documentSuccessResponses.Push(createResponse);

            var retrievedPerson = trueVaultClient.GetDocument <Person>(testVaultId, createResponse.DocumentId);

            Assert.AreEqual(person.Id, retrievedPerson.Id);
            Assert.AreEqual(person.Name, retrievedPerson.Name);
            Assert.AreEqual(person.Email, retrievedPerson.Email);
        }
        public void ExistingDocumentCanBeEdited()
        {
            Person person = CreatePerson();
            DocumentSaveSuccessResponse createResponse = AssertCreatePersonSuccess(person, testVaultId);

            documentSuccessResponses.Push(createResponse);

            person.Name += " Justgotmarried";
            person.Email = string.Format("{0}@truevaulttest.net", Guid.NewGuid());

            TrueVaultResponse editResponse = trueVaultClient.UpdateDocument(testVaultId, createResponse.DocumentId,
                                                                            person);

            Assert.AreEqual(editResponse.Result, "success", "Edit response should indicate success");
            Assert.AreNotEqual(editResponse.TransactionId, default(Guid),
                               "Edit response Transaction ID should be a non-default GUID");

            var retrievedPerson = trueVaultClient.GetDocument <Person>(testVaultId, createResponse.DocumentId);

            Assert.AreEqual(person.Id, retrievedPerson.Id);
            Assert.AreEqual(person.Name, retrievedPerson.Name);
            Assert.AreEqual(person.Email, retrievedPerson.Email);
        }