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(); }
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); } } }