public async Task When_filling_in_task_item_history_details() { var historyEventList = new List <HistoryEvent> { new HistoryEvent { Id = 1, EventType = "Task created", EventDate = DateTimeOffset.Now.Date.AddDays(-5), Author = "Charles" }, new HistoryEvent { Id = 2, EventType = "Task moved", TaskItemState = TaskItemState.TopPriority, EventDate = DateTimeOffset.Now.Date.AddDays(-4), Author = "Dave" }, new HistoryEvent { Id = 3, EventType = "Task moved", TaskItemState = TaskItemState.InProcess, EventDate = DateTimeOffset.Now.Date.AddDays(-3), Author = "Jon" }, new HistoryEvent { Id = 4, EventType = "Task moved", TaskItemState = TaskItemState.Released, EventDate = DateTimeOffset.Now.Date.AddDays(-2), Author = "Ryan" } }; var taskItem = new TaskItem(); var kanbanizeTaskItemDeserializer = new KanbanizeTaskItemDeserializer(); var result = new TaskItem(); var mockReleaseRepository = new Mock <ReleaseRepository>(); mockReleaseRepository.Setup(x => x.GetFirstReleaseBeforeDateAsync(It.IsAny <DateTimeOffset?>())) .ReturnsAsync((Release)null); foreach (var historyEvent in historyEventList) { result = await kanbanizeTaskItemDeserializer.FillInTaskItemStateDetailsAsync(historyEvent, taskItem); } Assert.That(result.CreatedBy.Name, Is.EqualTo(historyEventList[0].Author)); Assert.That(result.CreatedOn, Is.EqualTo(historyEventList[0].EventDate)); Assert.That(result.StartTime, Is.EqualTo(historyEventList[1].EventDate)); Assert.That(result.FinishTime, Is.EqualTo(historyEventList[3].EventDate)); }
public void When_getting_task_item_state() { var kanbanizeTaskItemDeserializer = new KanbanizeTaskItemDeserializer(); var result = kanbanizeTaskItemDeserializer.GetCardType("Unanticipated"); Assert.That(result, Is.EqualTo(TaskItemType.Unanticipated)); result = kanbanizeTaskItemDeserializer.GetCardType("Product"); Assert.That(result, Is.EqualTo(TaskItemType.Product)); result = kanbanizeTaskItemDeserializer.GetCardType("Engineering"); Assert.That(result, Is.EqualTo(TaskItemType.Engineering)); }
public async Task <bool> InsertHistoryEventsAsync(TaskItem taskItem) { foreach (var historyEvent in taskItem.HistoryEvents) { try { var taskItemDeserializer = new KanbanizeTaskItemDeserializer(); var historyEventId = historyEvent.Id; var eventDate = historyEvent.EventDate; var taskItemColumn = historyEvent.TaskItemColumn; var taskItemState = taskItemDeserializer.GetTaskItemState(taskItemColumn); var eventType = historyEvent.EventType; var taskItemId = taskItem.Id; var author = historyEvent.Author; var sql = $"IF EXISTS(SELECT * FROM HistoryEvents WHERE Id = @historyEventId) " + $"UPDATE HistoryEvents SET " + "EventDate = @eventDate, " + "TaskItemColumn = @taskItemColumn, " + "TaskItemState = @taskItemState, " + "EventType = @eventType, " + "Author = @author " + "WHERE Id = @historyEventId " + "ELSE " + $"INSERT INTO HistoryEvents (Id, EventDate, TaskItemColumn, TaskItemState, EventType, Author, TaskItemId) " + "VALUES(@historyEventId, @eventDate, @taskItemColumn, @taskItemState, @eventType, @author, @taskItemId);"; await databaseConnection.DbConnection.ExecuteAsync(sql, new { historyEventId, eventDate, taskItemColumn, taskItemState, eventType, taskItemId, author }); Console.WriteLine($"Updated History Event {historyEventId} for Task {taskItemId}"); return(true); } catch (Exception ex) { Console.WriteLine($"Unable to update HistoryEvent #{historyEvent.Id} for Task: #{taskItem.Id}: {ex.Message}"); return(false); } } Console.WriteLine($"There are no History Events for Task: #{taskItem.Id}"); return(true); }
public async Task When_deserializing_task_item_list() { var taskItemList = new List <JsonTaskItem> { new JsonTaskItem { taskid = 1, title = "Task1", type = "Engineering", columnname = "In Process.Working On" }, new JsonTaskItem { taskid = 2, title = "Task2", type = "Product", columnname = "Released to Prod this Week" } }; var historyItemList = new Dictionary <int, TaskItem> { { 1, new TaskItem { Id = 1, Title = "Task1", Type = TaskItemType.Engineering, CurrentBoardColumn = BoardColumn.InProcessWorking, HistoryEvents = new List <HistoryEvent>() } }, { 2, new TaskItem { Id = 2, Title = "Task2", Type = TaskItemType.Product, CurrentBoardColumn = BoardColumn.ReleasedToProdThisWeek, HistoryEvents = new List <HistoryEvent>() } } }; var taskItemListJson = JToken.Parse(JsonConvert.SerializeObject(taskItemList)); var mockKanbanizeHistoryEvenDeserializer = new Mock <KanbanizeHistoryEventDeserializer>(); mockKanbanizeHistoryEvenDeserializer.Setup(x => x.DeserializeHistoryEventsAsync(It.IsAny <JToken>(), It.IsAny <Dictionary <int, TaskItem> >())) .ReturnsAsync(historyItemList); var kanbanizeTaskItemDeserializer = new KanbanizeTaskItemDeserializer(mockKanbanizeHistoryEvenDeserializer.Object); var result = await kanbanizeTaskItemDeserializer.DeserializeTaskItemListAsync(taskItemListJson, 4); Assert.That(result.Count, Is.EqualTo(2)); Assert.That(result[0].Id, Is.EqualTo(1)); Assert.That(result[0].Title, Is.EqualTo("Task1")); Assert.That(result[0].Type, Is.EqualTo(TaskItemType.Engineering)); Assert.That(result[0].CurrentBoardColumn, Is.EqualTo(BoardColumn.InProcessWorking)); Assert.That(result[1].Id, Is.EqualTo(2)); Assert.That(result[1].Title, Is.EqualTo("Task2")); Assert.That(result[1].Type, Is.EqualTo(TaskItemType.Product)); Assert.That(result[1].CurrentBoardColumn, Is.EqualTo(BoardColumn.ReleasedToProdThisWeek)); }
private TaskItemType GetTaskItemType(string type) { var taskItemDeserialization = new KanbanizeTaskItemDeserializer(); return(taskItemDeserialization.GetCardType(type)); }