Exemplo n.º 1
0
        public static int CalculateLeanKitPriority(Jira.Issue issue)
        {
            //LK Priority: 0 = Low, 1 = Normal, 2 = High, 3 = Critical
            //Jira Priority: Blocker/Critical, Major, Minor, Trivial
            const int lkPriority = 1;             // default to 1 - Normal

            if (issue == null ||
                issue.Fields == null ||
                issue.Fields.Priority == null ||
                string.IsNullOrEmpty(issue.Fields.Priority.Name))
            {
                return(lkPriority);
            }

            switch (issue.Fields.Priority.Name)
            {
            case "Blocker":
            case "Critical":
                return(3);

            case "Major":
                return(2);

            case "Trivial":
                return(0);

            // case "Minor":
            default:
                return(1);
            }
        }
Exemplo n.º 2
0
        public static long?CalculateLeanKitAssignedUserId(long boardId, Jira.Issue issue, ILeanKitApi leanKit)
        {
            if (issue == null || issue.Fields == null || issue.Fields.Assignee == null ||
                (string.IsNullOrEmpty(issue.Fields.Assignee.Name) &&
                 string.IsNullOrEmpty(issue.Fields.Assignee.EmailAddress) &&
                 string.IsNullOrEmpty(issue.Fields.Assignee.DisplayName)))
            {
                return(null);
            }

            var lkUser = leanKit.GetBoard(boardId).BoardUsers.FirstOrDefault(x => x != null &&
                                                                             (((!string.IsNullOrEmpty(x.EmailAddress)) &&
                                                                               (!string.IsNullOrEmpty(
                                                                                    issue.Fields.Assignee.EmailAddress)) &&
                                                                               x.EmailAddress.ToLowerInvariant() ==
                                                                               issue.Fields.Assignee.EmailAddress
                                                                               .ToLowerInvariant()) ||
                                                                              ((!string.IsNullOrEmpty(x.FullName)) &&
                                                                               (!string.IsNullOrEmpty(
                                                                                    issue.Fields.Assignee.Name)) &&
                                                                               x.FullName.ToLowerInvariant() ==
                                                                               issue.Fields.Assignee.Name.ToLowerInvariant()) ||
                                                                              ((!string.IsNullOrEmpty(x.UserName)) &&
                                                                               (!string.IsNullOrEmpty(
                                                                                    issue.Fields.Assignee.Name)) &&
                                                                               x.UserName.ToLowerInvariant() ==
                                                                               issue.Fields.Assignee.Name.ToLowerInvariant()) ||
                                                                              ((!string.IsNullOrEmpty(x.FullName)) &&
                                                                               (!string.IsNullOrEmpty(
                                                                                    issue.Fields.Assignee.DisplayName)) &&
                                                                               x.FullName.ToLowerInvariant() ==
                                                                               issue.Fields.Assignee.DisplayName
                                                                               .ToLowerInvariant())));

            if (lkUser != null)
            {
                return(lkUser.Id);
            }

            return(null);
        }
Exemplo n.º 3
0
 public static long?LeanKitAssignedUserId(this Jira.Issue issue, long boardId, ILeanKitApi leanKit)
 {
     return(CalculateLeanKitAssignedUserId(boardId, issue, leanKit));
 }
Exemplo n.º 4
0
 public static CardType LeanKitCardType(this Jira.Issue issue, BoardMapping project)
 {
     return(CalculateLeanKitCardType(project, issue.Fields.IssueType.Name));
 }
Exemplo n.º 5
0
 public static int LeanKitPriority(this Jira.Issue issue)
 {
     return(CalculateLeanKitPriority(issue));
 }
		protected override void OnArrange()
		{
			base.OnArrange();

			MockLeanKitApi.Setup(x => x.GetBoard(It.IsAny<long>())).Returns(_testBoard);

			var serializer = new JsonSerializer<Jira.Issue>();

			var issue1 = new Jira.Issue()
			{
				Id = 1,
				Key = "one",
				Fields = new Jira.Fields() {Status = new Jira.Status() {Name = "Open"}}
			};

			var restResponse1 = new RestResponse()
			{
				Content = serializer.SerializeToString(issue1),
				StatusCode = HttpStatusCode.OK
			};

			var transitions1 = new Jira.TransitionsResponse()
			{
				Transitions =
					new List<Jira.Transition>()
					{
						new Jira.Transition()
						{
							Id = "2",
							Name = "Closed",
							To = new Jira.Status() {Name = "Closed", Description = "Closed", Id = "2"}
						}
					}
			};

			var transitionsSerializer = new JsonSerializer<Jira.TransitionsResponse>();
			var restTransitionsResponse1 = new RestResponse()
			{
				Content = transitionsSerializer.SerializeToString(transitions1),
				StatusCode = HttpStatusCode.OK
			};

			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("latest/issue/one") && y.Method == Method.GET)))
				.Returns(restResponse1);
			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("2/issue/one/transitions") && y.Method == Method.GET)))
				.Returns(restTransitionsResponse1);
			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("issue/one/transitions") && y.Method == Method.POST)))
				.Returns(restResponse1);

			var issue2 = new Jira.Issue()
			{
				Id = 2,
				Key = "two",
				Fields = new Jira.Fields() {Status = new Jira.Status() {Name = "Closed"}}
			};

			var restResponse2 = new RestResponse()
			{
				Content = serializer.SerializeToString(issue2),
				StatusCode = HttpStatusCode.OK
			};

			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("latest/issue/two") && y.Method == Method.GET)))
				.Returns(restResponse2);
			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("2/issue/two/transitions") && y.Method == Method.GET)))
				.Returns(restTransitionsResponse1);
			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("issue/two/transitions") && y.Method == Method.POST)))
				.Returns(restResponse2);

			var errorSerializer = new JsonSerializer<Jira.ErrorMessage>();
			var errorResponse = new RestResponse()
			{
				Content = errorSerializer.SerializeToString(new Jira.ErrorMessage() {Message = "Error"}),
				StatusCode = HttpStatusCode.NotFound
			};

			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("latest/issue/three") && y.Method == Method.GET)))
				.Returns(errorResponse);
			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("2/issue/three/transitions") && y.Method == Method.GET)))
				.Returns(restTransitionsResponse1);
			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("issue/three/transitions") && y.Method == Method.POST)))
				.Returns(errorResponse);

			var issue4 = new Jira.Issue()
			{
				Id = 4,
				Key = "four",
				Fields = new Jira.Fields() {Status = new Jira.Status() {Name = "Open"}}
			};

			var restResponse4 = new RestResponse()
			{
				Content = serializer.SerializeToString(issue4),
				StatusCode = HttpStatusCode.OK
			};

			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("latest/issue/four") && y.Method == Method.GET)))
				.Returns(restResponse4);
			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("2/issue/four/transitions") && y.Method == Method.GET)))
				.Returns(errorResponse);
			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("issue/four/transitions") && y.Method == Method.POST)))
				.Returns(restResponse4);

			var transitions2 = new Jira.TransitionsResponse()
			{
				Transitions =
					new List<Jira.Transition>()
					{
						new Jira.Transition()
						{
							Id = "3",
							Name = "Resolved",
							To = new Jira.Status() {Name = "Resolved", Description = "Resolved", Id = "3"}
						}
					}
			};

			var restTransitionsResponse2 = new RestResponse()
			{
				Content = transitionsSerializer.SerializeToString(transitions2),
				StatusCode = HttpStatusCode.OK
			};

			var issue5 = new Jira.Issue()
			{
				Id = 5,
				Key = "five",
				Fields = new Jira.Fields() {Status = new Jira.Status() {Name = "Open"}}
			};

			var restResponse5 = new RestResponse()
			{
				Content = serializer.SerializeToString(issue5),
				StatusCode = HttpStatusCode.OK
			};

			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("latest/issue/five") && y.Method == Method.GET)))
				.Returns(restResponse5);
			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("2/issue/five/transitions") && y.Method == Method.GET)))
				.Returns(restTransitionsResponse2);
			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("issue/five/transitions") && y.Method == Method.POST)))
				.Returns(restResponse5);
		}
		protected override void OnArrange()
		{
			base.OnArrange();

			MockLeanKitApi.Setup(x => x.GetBoard(It.IsAny<long>())).Returns(_testBoard);

			var serializer = new JsonSerializer<Jira.Issue>();

			var issue1 = new Jira.Issue()
			{
				Id = 1,
				Key = "one",
				Fields = new Jira.Fields()
				{
					Status = new Jira.Status() {Name = "Open"},
					Description = "Issue 1",
					Summary = "Issue 1"
				}
			};

			var restResponse1 = new RestResponse()
			{
				Content = serializer.SerializeToString(issue1),
				StatusCode = HttpStatusCode.OK
			};

			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("latest/issue/one") && y.Method == Method.GET)))
				.Returns(restResponse1);
			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("latest/issue/one") && y.Method == Method.PUT)))
				.Returns(restResponse1);

			var issue2 = new Jira.Issue()
			{
				Id = 2,
				Key = "two",
				Fields = new Jira.Fields()
				{
					Status = new Jira.Status() {Name = "Open"},
					Description = "Issue 2",
					Summary = "Issue 2"
				}
			};

			var restResponse2 = new RestResponse()
			{
				Content = serializer.SerializeToString(issue2),
				StatusCode = HttpStatusCode.OK
			};

			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("latest/issue/two") && y.Method == Method.GET)))
				.Returns(restResponse2);
			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("latest/issue/two") && y.Method == Method.PUT)))
				.Returns(restResponse2);

			var issue3 = new Jira.Issue()
			{
				Id = 3,
				Key = "three",
				Fields = new Jira.Fields()
				{
					Status = new Jira.Status() {Name = "Open"},
					Description = "Issue 3",
					Summary = "Issue 3"
				}
			};

			var restResponse3 = new RestResponse()
			{
				Content = serializer.SerializeToString(issue3),
				StatusCode = HttpStatusCode.OK
			};

			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("latest/issue/three") && y.Method == Method.GET)))
				.Returns(restResponse3);
			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("latest/issue/three") && y.Method == Method.PUT)))
				.Returns(restResponse3);

			var issue4 = new Jira.Issue()
			{
				Id = 4,
				Key = "four",
				Fields = new Jira.Fields()
				{
					Status = new Jira.Status() {Name = "Open"},
					Description = "Issue 4",
					Summary = "Issue 4"
				}
			};

			var restResponse4 = new RestResponse()
			{
				Content = serializer.SerializeToString(issue4),
				StatusCode = HttpStatusCode.OK
			};

			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("latest/issue/four") && y.Method == Method.GET)))
				.Returns(restResponse4);
			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("latest/issue/four") && y.Method == Method.PUT)))
				.Returns(restResponse4);
		}
		protected override void OnArrange()
		{
			base.OnArrange();

			MockLeanKitApi.Setup(x => x.GetBoard(It.IsAny<long>())).Returns(_testBoard);

			var serializer = new JsonSerializer<Jira.Issue>();
			var prioritySerializer = new JsonSerializer<Jira.Priority[]>();

			var issue1 = new Jira.Issue()
			{
				Id = 1,
				Key = "one",
				Fields = new Jira.Fields()
				{
					Status = new Jira.Status() {Name = "Open"},
					Description = "Issue 1",
					Summary = "Issue 1"
				}
			};

			var priorities = new List<Jira.Priority>
			{
				new Jira.Priority
				{
					Description = "Blocks",
					Id = "1",
					Name = "Blocker"
				},
				new Jira.Priority
				{
					Description = "Crashes",
					Id = "2",
					Name = "Critical"
				},
				new Jira.Priority
				{
					Description = "Major",
					Id = "3",
					Name = "Major"
				},
				new Jira.Priority
				{
					Description = "Minor",
					Id = "4",
					Name = "Minor"
				},
				new Jira.Priority
				{
					Description = "Trivial",
					Id = "1",
					Name = "Trivial"
				}
			}.ToArray();

			var restResponse1 = new RestResponse()
			{
				Content = serializer.SerializeToString(issue1),
				StatusCode = HttpStatusCode.OK
			};

			var restResponse2 = new RestResponse()
			{
				Content = prioritySerializer.SerializeToString(priorities),
				StatusCode = HttpStatusCode.OK
			};

			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("latest/issue") && y.Method == Method.POST)))
				.Returns(restResponse1);
			MockRestClient.Setup(
				x => x.Execute(It.Is<RestRequest>(y => y.Resource.Contains("latest/priority") && y.Method == Method.GET)))
				.Returns(restResponse2);
		}
		protected override void OnArrange()
		{
			base.OnArrange();

			MockLeanKitApi.Setup(x => x.GetBoard(It.IsAny<long>())).Returns(_testBoard);

			var serializer = new JsonSerializer<Jira.IssuesResponse>();

			var issue1 = new Jira.Issue()
			{
				Id = 1,
				Key = "one",
				Fields = new Jira.Fields()
				{
					Description = "Issue 1",
					Status = new Jira.Status() {Description = "Open", Id = "1", Name = "Open"},
					Summary = "Issue 1"
				}
			};

			var issue2 = new Jira.Issue()
			{
				Id = 2,
				Key = "two",
				Fields = new Jira.Fields()
				{
					Description = "Issue 2",
					Status = new Jira.Status() {Description = "Open", Id = "1", Name = "Open"},
					Summary = "Issue 2"
				}
			};

			var issue3 = new Jira.Issue()
			{
				Id = 3,
				Key = "three",
				Fields = new Jira.Fields()
				{
					Description = "Issue 3",
					Status = new Jira.Status() {Description = "Open", Id = "1", Name = "Open"},
					Summary = "Issue 3"
				}
			};

			var issueResponse1 = new Jira.IssuesResponse()
			{
				Issues = new List<Jira.Issue>() {issue1}
			};

			var restResponse1 = new RestResponse()
			{
				Content = serializer.SerializeToString(issueResponse1),
				StatusCode = HttpStatusCode.OK
			};

			MockRestClient.Setup(
				x =>
					x.Execute(
						It.Is<RestRequest>(
							y =>
								y.Resource.Contains("/search") && y.Method == Method.GET &&
								y.Parameters.FirstOrDefault(z => z.Name == "jql" && z.Value.ToString().Contains("project=\"1\"")) != null)))
				.Returns(restResponse1);
			MockLeanKitApi.Setup(x => x.GetCardByExternalId(1, It.IsAny<string>())).Returns((Card) null);
			MockLeanKitApi.Setup(x => x.AddCard(1, It.IsAny<Card>(), It.IsAny<string>())).Returns(_testCardAddResult1);

			MockRestClient.Setup(
				x =>
					x.Execute(
						It.Is<RestRequest>(
							y =>
								y.Resource.Contains("/search") && y.Method == Method.GET &&
								y.Parameters.FirstOrDefault(z => z.Name == "jql" && z.Value.ToString().Contains("project=\"2\"")) != null)))
				.Returns(restResponse1);
			MockLeanKitApi.Setup(x => x.GetCardByExternalId(2, It.IsAny<string>())).Returns((Card) null);
			MockLeanKitApi.Setup(x => x.AddCard(2, It.IsAny<Card>(), It.IsAny<string>())).Returns(_testCardAddResult1);

			var issueResponse3 = new Jira.IssuesResponse()
			{
				Issues = new List<Jira.Issue>() {issue1, issue2, issue3}
			};

			var restResponse3 = new RestResponse()
			{
				Content = serializer.SerializeToString(issueResponse3),
				StatusCode = HttpStatusCode.OK
			};

			MockRestClient.Setup(
				x =>
					x.Execute(
						It.Is<RestRequest>(
							y =>
								y.Resource.Contains("/search") && y.Method == Method.GET &&
								y.Parameters.FirstOrDefault(z => z.Name == "jql" && z.Value.ToString().Contains("project=\"3\"")) != null)))
				.Returns(restResponse3);
			MockLeanKitApi.Setup(x => x.GetCardByExternalId(3, It.IsAny<string>())).Returns((Card) null);
			MockLeanKitApi.Setup(x => x.AddCard(3, It.IsAny<Card>(), It.IsAny<string>())).Returns(_testCardAddResult1);

			MockRestClient.Setup(
				x =>
					x.Execute(
						It.Is<RestRequest>(
							y =>
								y.Resource.Contains("/search") && y.Method == Method.GET &&
								y.Parameters.FirstOrDefault(z => z.Name == "jql" && z.Value.ToString().Contains("project=\"4\"")) != null)))
				.Returns(restResponse1);
			MockLeanKitApi.Setup(x => x.GetCardByExternalId(4, It.IsAny<string>()))
				.Returns(new Card() {Id = 4, ExternalSystemName = "Jira"});
			MockLeanKitApi.Setup(x => x.AddCard(4, It.IsAny<Card>(), It.IsAny<string>())).Returns(_testCardAddResult1);

			MockRestClient.Setup(
				x =>
					x.Execute(
						It.Is<RestRequest>(
							y =>
								y.Resource.Contains("/search") && y.Method == Method.GET &&
								y.Parameters.FirstOrDefault(z => z.Name == "jql" && z.Value.ToString().Contains("project=\"5\"")) != null)))
				.Returns(restResponse1);
			MockLeanKitApi.Setup(x => x.GetCardByExternalId(5, It.IsAny<string>()))
				.Returns(new Card() {Id = 4, ExternalSystemName = "Jirabus"});
			MockLeanKitApi.Setup(x => x.AddCard(5, It.IsAny<Card>(), It.IsAny<string>())).Returns(_testCardAddResult1);
		}