예제 #1
0
        public void Test_Map_A_Bulk_Command_To_A_Message()
        {
            /* Given that I have a bulk command
             * When I map it to a message
             * I should get a message header and a JSON body
             */

            var todos = new List <AddToDoRequest>
            {
                new AddToDoRequest {
                    Title = "First", Order = 1, Completed = false
                },
                new AddToDoRequest {
                    Title = "Second", Order = 2, Completed = false
                },
                new AddToDoRequest {
                    Title = "Third", Order = 3, Completed = false
                }
            };

            var command = new BulkAddToDoCommand(todos);

            var message = new BulkAddToDoMessageMapper().MapToMessage(command);

            Assert.AreEqual(message.Header.MessageType, MessageType.MT_COMMAND);
            Assert.AreEqual(message.Header.Topic, "bulkaddtodo.command");
            Assert.AreEqual(message.Body.Value, JsonConvert.SerializeObject(command));
        }
예제 #2
0
        public void Test_Map_A_Message_To_A_Bulk_Action_Command()
        {
            /* Given that I have a message for a bulk command
             * When I map it to a command
             * I should get a command with a list of bulk options
             */

            var todos = new List <AddToDoRequest>
            {
                new AddToDoRequest {
                    Title = "First", Order = 1, Completed = false
                },
                new AddToDoRequest {
                    Title = "Second", Order = 2, Completed = false
                },
                new AddToDoRequest {
                    Title = "Third", Order = 3, Completed = false
                }
            };

            var original_command = new BulkAddToDoCommand(todos);

            var header  = new MessageHeader(messageId: Guid.NewGuid(), topic: "bulkaddtodo.command", messageType: MessageType.MT_COMMAND);
            var body    = new MessageBody(JsonConvert.SerializeObject(original_command));
            var message = new Message(header, body);

            var command = new BulkAddToDoMessageMapper().MapToRequest(message);

            Assert.AreEqual(command.ToDos.Count(), 3);
            Assert.AreEqual(command.ToDos.First().Title, "First");
            Assert.AreEqual(command.ToDos.First().Order, 1);
            Assert.AreEqual(command.ToDos.First().Completed, false);
        }
예제 #3
0
        public IActionResult Post([FromBody] BulkAddToDoRequest request)
        {
            var bulkAddCommand = new BulkAddToDoCommand(request.ItemsToAdd);

            _commandProcessor.Post(bulkAddCommand);

            //TODO: Should have a monitoring endpoint, and share a job table location for tracking progress
            return(Accepted());
        }
예제 #4
0
        public async Task Test_Bulk_Adding_Tasks()
        {
            /*
             *  Given that I have a list of commands to add a ToDo
             *  When I handle that command
             *  Then I should add those to the list of Tasks
             *
             */

            var options = new DbContextOptionsBuilder <ToDoContext>()
                          .UseInMemoryDatabase(databaseName: "Bulk_adding_tasks")
                          .Options;

            var todos = new List <AddToDoRequest>
            {
                new AddToDoRequest {
                    Title = "First", Order = 1, Completed = false
                },
                new AddToDoRequest {
                    Title = "Second", Order = 2, Completed = false
                },
                new AddToDoRequest {
                    Title = "Third", Order = 3, Completed = false
                }
            };

            var command = new BulkAddToDoCommand(todos);
            var handler = new BulkAddToDoCommandHandlerAsync(options);

            await handler.HandleAsync(command);

            using (var context = new ToDoContext(options))
            {
                Assert.AreEqual(3, context.ToDoItems.Count());
                Assert.AreEqual("First", context.ToDoItems.First().Title);
                Assert.AreEqual(false, context.ToDoItems.First().Completed);
                Assert.AreEqual(1, context.ToDoItems.First().Order.Value);
            }
        }