public void TestHandleCreatedDocuments() { var documentTypeId = Guid.NewGuid(); var key = new DocumentKey(documentTypeId, 1); var keys = new List <DocumentKey> { key }; var message = new IndexDocumentBatchMessage(); message.CreatedDocuments = keys.Select(x => x.ToString()).ToList(); Action <object> tester = (objectId) => { Assert.AreEqual(key.Value, objectId); }; var service = new Mock <IDocumentService>(); service.Setup(x => x.GetDocumentTypeId()).Returns(documentTypeId); service.Setup(x => x.AddOrUpdateDocument(It.IsAny <object>())).Callback(tester); services.Add(service.Object); var functions = new Functions(services); functions.HandleCreatedDocuments(message.CreatedDocuments); service.Verify(x => x.AddOrUpdateDocument(It.IsAny <object>()), Times.Once()); }
public void TestProcessQueueMessage_IsDebugMessage() { var documentTypeId = Guid.NewGuid(); var key = new DocumentKey(documentTypeId, 1); var keys = new List <DocumentKey> { key }; var keysAsStrings = keys.Select(x => x.ToString()).ToList(); var service = new Mock <IDocumentService>(); service.Setup(x => x.GetDocumentTypeId()).Returns(documentTypeId); services.Add(service.Object); var message = new IndexDocumentBatchMessage(); message.IsDebugMessage = true; message.DeletedDocuments = keysAsStrings; message.CreatedDocuments = keysAsStrings; message.ModifiedDocuments = keysAsStrings; var functions = new Functions(services); functions.ProcessQueueMessage(message, new Mock <TextWriter>().Object); service.Verify(x => x.DeleteDocuments(It.IsAny <List <object> >()), Times.Never()); service.Verify(x => x.AddOrUpdateDocument(It.IsAny <List <object> >()), Times.Never()); }
public void TestHasDocumentsToHandle_NoDocumentsToHandle() { var instance = new IndexDocumentBatchMessage(); Assert.AreEqual(0, instance.CreatedDocuments.Count()); Assert.AreEqual(0, instance.DeletedDocuments.Count()); Assert.AreEqual(0, instance.ModifiedDocuments.Count()); Assert.IsFalse(instance.HasDocumentsToHandle()); }
/// <summary> /// Handles a debug message. Debug messages are structurally the same; however, documents are not updated, deleted, or created. /// </summary> /// <param name="message">The message.</param> public void HandleDebugMessage(IndexDocumentBatchMessage message) { Contract.Requires(message != null, "The message must not be null."); Contract.Requires(message.IsDebugMessage, "The message must be a debug message."); Console.WriteLine("Debug message received. This message will not be handled."); Console.WriteLine("The message received is as follows..."); var messageAsJson = JsonConvert.SerializeObject(message); var prettyJson = JValue.Parse(messageAsJson).ToString(Formatting.Indented); Console.WriteLine(prettyJson); }
public void TestConstructor() { var instance = new IndexDocumentBatchMessage(); Assert.IsNotNull(instance.CreatedDocuments); Assert.IsNotNull(instance.DeletedDocuments); Assert.IsNotNull(instance.ModifiedDocuments); Assert.AreEqual(0, instance.CreatedDocuments.Count()); Assert.AreEqual(0, instance.DeletedDocuments.Count()); Assert.AreEqual(0, instance.ModifiedDocuments.Count()); }
public void TestHasDocumentsToHandle_HasDeletedDocuments() { var instance = new IndexDocumentBatchMessage(); Assert.AreEqual(0, instance.CreatedDocuments.Count()); Assert.AreEqual(0, instance.DeletedDocuments.Count()); Assert.AreEqual(0, instance.ModifiedDocuments.Count()); Assert.IsFalse(instance.HasDocumentsToHandle()); instance.DeletedDocuments = new List <string> { new DocumentKey(Guid.NewGuid(), 1).ToString() }; Assert.IsTrue(instance.HasDocumentsToHandle()); }
// This function will get triggered/executed when a new message is written // on an Azure Queue called %searchindexqueue%. /// <summary> /// Accepts the message and handles the documents that must be created, updated, or deleted for the entities whose document keys are given /// in the message. /// </summary> /// <param name="message">The message containing the document keys for entities whos documents must be created, updated, or deleted.</param> /// <param name="log"></param> public void ProcessQueueMessage( [QueueTrigger("%searchindexqueue%")] IndexDocumentBatchMessage message, TextWriter log) { Contract.Requires(message != null, "The message batch must not be null."); if (message.IsDebugMessage) { HandleDebugMessage(message); } else { HandleCreatedDocuments(message.CreatedDocuments.Distinct().ToList()); HandleUpdatedDocuments(message.ModifiedDocuments.Distinct().ToList()); HandleDeletedDocuments(message.DeletedDocuments.Distinct().ToList()); } }
public void TestHandleCreatedDocuments_DocumentTypeIdNotSupported() { var documentTypeId = Guid.NewGuid(); var key = new DocumentKey(documentTypeId, 1); var keys = new List <DocumentKey> { key }; var message = new IndexDocumentBatchMessage(); message.CreatedDocuments = keys.Select(x => x.ToString()).ToList(); var service = new Mock <IDocumentService>(); service.Setup(x => x.GetDocumentTypeId()).Returns(Guid.NewGuid()); var functions = new Functions(services); Action a = () => functions.HandleCreatedDocuments(message.CreatedDocuments); a.ShouldThrow <NotSupportedException>().WithMessage(String.Format("A service as not found for the document type id [{0}].", documentTypeId)); }