public void GetTitleWithCaseToken() { var c = new Case(); c.Subject = "title"; c.CaseId = 123; Assert.AreEqual("title (Case 123)", c.GetTitleWithCaseToken()); }
public void InvalidPercentComplete() { var c = new Case(); c.AddTag("xx%_Complete"); Assert.AreEqual(0, c.PercentComplete); }
public void LowerCasePercentCompleteTag() { var c = new Case(); c.AddTag("10%_complete"); Assert.AreEqual(10, c.PercentComplete); }
public void FogbugzUpdatesTask() { var ts = new TaskSync(); var c = new Case {LastUpdated = DateTime.Parse("2013-1-1 9:00am")}; c.CaseId = 123; c.PercentComplete = 20; c.Subject = "case subject"; c.Priority = 1; c.Due = DateTime.Parse("2013-2-1 8:00am"); c.ResetUpdateFlags(); var t = TaskListSyncTests.CreateOutlookTask(); t.SetLastModificationDateForTesting(DateTime.Parse("2013-1-1 9:00am")); t.PercentComplete = 30; t.Subject = "task subject"; t.Importance = OlImportance.olImportanceLow; t.DueDate = DateTime.Parse("2013-3-1"); ts.SyncTask(c, t); Assert.AreEqual(20, t.PercentComplete); Assert.AreEqual("case subject (Case 123)", t.Subject); Assert.AreEqual(OlImportance.olImportanceHigh, t.Importance); //this doesn't change Assert.AreEqual(DateTime.Parse("2013-2-1"), t.DueDate); Assert.AreEqual(123, t.GetFogbugzCaseId()); }
public void SaveCase(Case fogbugzCase) { var parameters = new Dictionary<string, string>(); if (fogbugzCase.TagsUpdated) parameters.Add("sTags", string.Join(",", fogbugzCase.GetTags().ToArray())); if (fogbugzCase.SubjectUpdated) parameters.Add("sTitle", fogbugzCase.Subject); if (fogbugzCase.DueUpdated && fogbugzCase.Due != null) parameters.Add("dtDue", fogbugzCase.Due.Value.ToUniversalTime().ToString("s", CultureInfo.InvariantCulture)); if (parameters.Count > 0) { UpdateFogbugzUser(); parameters.Add("ixBug", fogbugzCase.CaseId.ToString()); parameters.Add("ixPersonEditedBy", _fogbugzUser.UserId.ToString()); var fogbugzResponse = MakeFogbugzRequest("edit", parameters); Log.DebugFormat("Response received from Fogbugz: {0}", fogbugzResponse); } if (fogbugzCase.ResolvedUpdated && fogbugzCase.Resolved) { parameters.Add("ixBug", fogbugzCase.CaseId.ToString()); parameters.Add("ixPersonEditedBy", _fogbugzUser.UserId.ToString()); var fogbugzResponse = MakeFogbugzRequest("resolve", parameters); Log.DebugFormat("Response received from Fogbugz: {0}", fogbugzResponse); } }
public void DueUpdated() { var c = new Case(); c.Due = DateTime.Parse("2013-1-1 10:00am"); c.ResetUpdateFlags(); c.Due = DateTime.Parse("2013-1-1 11:00am"); Assert.IsTrue(c.DueUpdated); }
public void DueNotUpdatedWithSameValue() { var c = new Case(); c.Due = DateTime.Parse("2013-1-1 10:00am"); c.ResetUpdateFlags(); c.Due = DateTime.Parse("2013-1-1 10:00am"); Assert.IsFalse(c.DueUpdated); }
public void SetDueDate() { var c = new Case(); var t = TaskListSyncTests.CreateOutlookTask(); t.DueDate = DateTime.Parse("2013-01-01"); t.SetLastModificationDateForTesting(DateTime.Now); var ts = new TaskSync(); ts.SyncTask(c, t); Assert.AreEqual(DateTime.Parse("2013-01-01"), c.Due); }
public void GetTags() { var c = new Case(); c.AddTag("boom"); c.AddTag("boom2"); var tags = c.GetTags().ToList(); Assert.AreEqual(2, tags.Count()); Assert.AreEqual("boom", tags[0]); Assert.AreEqual("boom2", tags[1]); }
public void ResolvedGetSetUpdated() { var c = new Case(); c.Resolved = true; Assert.AreEqual(true, c.ResolvedUpdated); }
public void SetPercentComplete() { var c = new Case(); c.PercentComplete = 11; Assert.AreEqual(11, c.PercentComplete); }
public void SetPercentComplete100() { var c = new Case(); c.PercentComplete = 100; Assert.AreEqual(100, c.PercentComplete); }
public void SetPercentCompleteUpdateFlag() { var c = new Case(); c.PercentComplete = 11; Assert.IsTrue(c.TagsUpdated); }
public void SyncTask(Case fogbugzCase, TaskItem outlookTask) { try { //Associate the case and task outlookTask.SetFogbugzCaseId(fogbugzCase.CaseId); Log.DebugFormat("Setting task metadata case id to {0}", fogbugzCase.CaseId); var subjectWithCaseId = fogbugzCase.GetTitleWithCaseToken(); var taskNewer = false; //Determine which is newer var taskLastModified = outlookTask.GetLastModifiedDate(); if (taskLastModified != null && taskLastModified > fogbugzCase.LastUpdated) taskNewer = true; Log.DebugFormat("Fogbugz case last update: {0}", fogbugzCase.LastUpdated); Log.DebugFormat("Outlook task last update: {0}", taskLastModified); if (taskNewer) { Log.Debug("Task is newer than the fogbugz case"); fogbugzCase.PercentComplete = outlookTask.PercentComplete; fogbugzCase.Subject = outlookTask.Subject; if (outlookTask.DueDate != OutlookConnector.EmptyDate) { if (fogbugzCase.Due != null && fogbugzCase.Due.Value.Date == outlookTask.DueDate.Date) { //Don't update fogbugz in this case, because we'll only be dropping the time component. //In other words, the fogbugz due date will be reset to midnight since Outlook doesn't store the time. } else { fogbugzCase.Due = outlookTask.DueDate; } } //Not sure how to translate priorities back to fogbugz } else { Log.Debug("Fogbugz case is newer than the task"); outlookTask.PercentComplete = fogbugzCase.PercentComplete; outlookTask.Subject = subjectWithCaseId; if (fogbugzCase.Due != null) { outlookTask.DueDate = fogbugzCase.Due.Value; //Only populate the start date if there is a due date, otherwise //the task will have a due date the same as the start (stupid) outlookTask.StartDate = fogbugzCase.Opened; } if (fogbugzCase.Priority == 1 || fogbugzCase.Priority == 2) outlookTask.Importance = OlImportance.olImportanceHigh; else if (fogbugzCase.Priority == 4 || fogbugzCase.Priority == 5 || fogbugzCase.Priority == 6) outlookTask.Importance = OlImportance.olImportanceLow; else outlookTask.Importance = OlImportance.olImportanceNormal; } var tokens = new List<KeyValuePair<string, string>> { //Note; tokens must be lower case new KeyValuePair<string, string>("caseid", fogbugzCase.CaseId.ToString()), new KeyValuePair<string, string>("emailsubject", Uri.EscapeUriString(subjectWithCaseId)) }; outlookTask.RTFBody = Encoding.ASCII.GetBytes(GenerateTaskBody(tokens)); } catch (Exception ex) { if(fogbugzCase != null) Log.Info(fogbugzCase.ToString()); if(outlookTask != null) Log.Info(outlookTask.ToString()); Log.Error("Error synchronizing tasks", ex); throw; } }
public void DueGetSet() { var c = new Case(); c.Due = DateTime.Parse("2013-1-1 10:00am"); Assert.AreEqual(DateTime.Parse("2013-1-1 10:00am"), c.Due); }
public void ResolvedGetSetNotUpdated() { var c = new Case(); c.Resolved = true; c.ResetUpdateFlags(); Assert.AreEqual(false, c.ResolvedUpdated); }
public void TagsUpdatedNewCase() { var c = new Case(); Assert.IsFalse(c.TagsUpdated); }
public void SubjectGetSetRemoveCaseNumber() { var c = new Case(); c.Subject = "This is a test case (Case 80123)"; Assert.AreEqual("This is a test case", c.Subject); }
public void SubjectUpdated() { var c = new Case(); c.Subject = "test"; c.ResetUpdateFlags(); c.Subject = "test2"; Assert.IsTrue(c.SubjectUpdated); }
public void SetPercentCompleteMultiple() { var c = new Case(); c.PercentComplete = 11; c.PercentComplete = 12; Assert.AreEqual(12, c.PercentComplete); }
public void SubjectGetSetNull() { var c = new Case(); c.Subject = null; Assert.AreEqual("", c.Subject); }
public void SubjectGetSet() { var c = new Case(); c.Subject = "test"; Assert.AreEqual("test", c.Subject); }
public void NegativeCasePercentCompleteTag() { var c = new Case(); c.AddTag("-1%_complete"); Assert.AreEqual(0, c.PercentComplete); }
public void TagsUpdatedWhenChanged() { var c = new Case(); c.AddTag("boom"); Assert.IsTrue(c.TagsUpdated); }
public static IEnumerable<Case> ParseCasesXml(string xml) { using (var sr = new StringReader(xml)) { var x = XmlDynamo.Load(sr); var cases = x.cases.Elements("case"); var caseList = new List<Case>(); foreach (var currCase in cases) { var c = new Case(); c.CaseId = int.Parse(currCase.ixBug); c._subject = currCase.sTitle; c.LastUpdated = DateTime.Parse(currCase.dtLastUpdated); if (currCase.dtDue != "") c._due = DateTime.Parse(currCase.dtDue); c.Priority = int.Parse(currCase.ixPriority); c.Opened = DateTime.Parse(currCase.dtOpened); if ((string) currCase.tags != null) { var tags = currCase.tags.Elements("tag"); c._tags.Clear(); foreach (string tag in tags) { c._tags.Add(tag); } } c.ResetUpdateFlags(); caseList.Add(c); } return caseList; } }
public void ToStringValid() { var c = new Case(); c.CaseId = 123; Assert.AreEqual("CaseId: 123", c.ToString()); }
public void TaskUpdatesFogbugz() { var ts = new TaskSync(); var c = new Case {LastUpdated = DateTime.Parse("2013-1-1 9:00am")}; c.PercentComplete = 20; c.Subject = "case subject"; c.Priority = 1; c.Due = DateTime.Parse("2013-2-1 8:00am"); c.ResetUpdateFlags(); var t = TaskListSyncTests.CreateOutlookTask(); t.SetLastModificationDateForTesting(DateTime.Parse("2013-1-1 10:00am")); t.PercentComplete = 30; t.Subject = "task subject"; t.Importance = OlImportance.olImportanceLow; t.DueDate = DateTime.Parse("2013-3-1"); ts.SyncTask(c, t); Assert.AreEqual(30, c.PercentComplete); Assert.AreEqual("task subject", c.Subject); Assert.AreEqual(1, c.Priority); //doesn't change Assert.AreEqual(DateTime.Parse("2013-3-1"), c.Due); }
public void SetPercentCompleteAbove100Invalid() { var c = new Case(); c.PercentComplete = 101; }
public void TagsUpdatedFalseWhenUnchanged() { var c = new Case(); c.AddTag("boom"); c.ResetUpdateFlags(); c.AddTag("boom"); Assert.IsFalse(c.TagsUpdated); }
public void SetPercentCompleteNegativeInvalid() { var c = new Case(); c.PercentComplete = -1; }