Example #1
0
        private void runTest(string testJson, string expectedJson)
        {
            var flattener = new Flatter();
            var testObj   = JObject.Parse(testJson);

            _output.WriteLine("TEST DATA: " + testObj);

            var result = flattener.Flat(testObj);

            _output.WriteLine("RESULT: " + result);

            var expectedResult = JObject.Parse(expectedJson);

            _output.WriteLine("EXPECTED RESULT: " + expectedResult);
            JToken.DeepEquals(result, expectedResult).Should().BeTrue();
        }
Example #2
0
        private async void LoadStory(Story story)
        {
            if (!string.IsNullOrEmpty(story.Name))
            {
                try
                {
                    var baseUrl = Story.New().Url.ToString();
                    var flatter = Flatter.Get();
                    if (string.IsNullOrEmpty(flatter.Value))
                    {
                        var creds = new Credentials();
                        if (creds.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                        {
                            flatter = Flatter.Get(creds.User, creds.Password);
                        }
                    }

                    var headers = new List <KeyValuePair <string, object> >
                    {
                        new KeyValuePair <string, object>("Authorization", "Basic " + flatter.Value)
                    };

                    using (var client = ApiServiceFactory.CreateService <string>(baseUrl, headers))
                    {
                        var json = await client.GetItem("/" + story.Name).ConfigureAwait(false);

                        var jiraStory = JsonConvert.DeserializeObject <JiraStory>(json);

                        var description = jiraStory.fields.description;
                        var acceptCrit  = string.Empty;
                        var developCrit = string.Empty;
                        var descParts   = description.Split(new[] { "Development Criteria", "Acceptance Criteria" }, StringSplitOptions.None);

                        if (descParts.Length == 3)
                        {
                            story.Description = descParts[0];
                            developCrit       = descParts[1];
                            acceptCrit        = descParts[2];
                        }
                        else if (descParts.Length == 2)
                        {
                            var acceptCritIdx  = -1;
                            var developCritIdx = -1;
                            if (description.Contains("Acceptance Criteria") && (acceptCritIdx = description.IndexOf("Acceptance Criteria")) >= 0)
                            {
                                story.Description = descParts[acceptCritIdx > 0 ? 0 : 1];
                                acceptCrit        = descParts[acceptCritIdx > 0 ? 1 : 0];
                            }
                            else if (description.Contains("Development Criteria") && (developCritIdx = description.IndexOf("Development Criteria")) >= 0)
                            {
                                story.Description = descParts[developCritIdx > 0 ? 0 : 1];
                                developCrit       = descParts[developCritIdx > 0 ? 1 : 0];
                            }
                        }
                        else
                        {
                            acceptCrit        = description.Contains("Acceptance Criteria") ? descParts[0]: string.Empty;
                            developCrit       = description.Contains("Development Criteria") ? descParts[0] : string.Empty;
                            story.Description = !description.Contains("Acceptance Criteria") && !description.Contains("Development Criteria") ? descParts[0] : string.Empty;
                        }

                        if (!string.IsNullOrEmpty(acceptCrit))
                        {
                            story.AcceptanceCriteria = new ObservableCollection <StringValue>(
                                acceptCrit.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)
                                .Select(v => new StringValue(v, "AcceptanceCriteria")));
                        }

                        if (!string.IsNullOrEmpty(developCrit))
                        {
                            story.DeveloperCriteria = new ObservableCollection <StringValue>(
                                developCrit.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)
                                .Select(v => new StringValue(v, "DevelopmentCriteria")));
                        }

                        story.Title          = jiraStory.fields.summary;
                        story.Url            = new Uri(jiraStory.self);
                        story.ParentStoryUrl = new Uri(jiraStory.fields.project.self);

                        try
                        {
                            story.Attachments.Clear();
                        }
                        catch (Exception) {; }

                        foreach (var att in jiraStory.fields.attachment)
                        {
                            try
                            {
                                story.Attachments.Add(new StringValue(att.content, "Attachment"));
                            }
                            catch (Exception) {; }
                        }

                        try
                        {
                            story.SubTasks.Clear();
                        }
                        catch (Exception) {; }

                        foreach (var task in jiraStory.fields.subtasks)
                        {
                            try
                            {
                                story.SubTasks.Add(new SubTask {
                                    Name   = task.key,
                                    Title  = task.fields.summary,
                                    Url    = new Uri(task.self),
                                    Status = task.fields.status.name
                                });
                            }
                            catch (Exception) {; }
                        }

                        try
                        {
                            MainViewModel.ViewModel.IsDirty = true;
                        }
                        catch (Exception) {; }

                        try
                        {
                            MainViewModel.ViewModel.SaveStoryCommand.Execute(null);
                        }
                        catch (Exception) {; }
                    }
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }
        }