public void ExistingAnnotation_WithResponses() { IScrScriptureNote existingAnn = AddAnnotation(null, 02002008, NoteType.Translator, "This is my discussion"); existingAnn.ResolutionStatus = NoteStatus.Open; IStJournalText exisingResponse1 = Cache.ServiceLocator.GetInstance <IStJournalTextFactory>().Create(); existingAnn.ResponsesOS.Add(exisingResponse1); AddParasTo(exisingResponse1, "This is my first response"); IStJournalText exisingResponse2 = Cache.ServiceLocator.GetInstance <IStJournalTextFactory>().Create(); existingAnn.ResponsesOS.Add(exisingResponse2); AddParasTo(exisingResponse2, "This is my second response"); DateTime now = DateTime.Now; DateTime utcNow = now.ToUniversalTime(); XmlScrNote ann = CreateNote(); ann.BeginScrRef = "EXO 2:8"; ann.ResolutionStatus = NoteStatus.Open; ann.AnnotationTypeGuid = CmAnnotationDefnTags.kguidAnnTranslatorNote.ToString(); ann.DateTimeCreated = utcNow.ToString(); ann.DateTimeModified = utcNow.AddDays(1).ToString(); AddParasTo(ann.Discussion, "This is my discussion"); XmlNoteResponse firstResponse = new XmlNoteResponse(); AddParasTo(firstResponse.Paragraphs, "This is my first response"); ann.Responses.Add(firstResponse); XmlNoteResponse secondResponse = new XmlNoteResponse(); AddParasTo(secondResponse.Paragraphs, "This is my second response"); ann.Responses.Add(secondResponse); DummyXmlScrAnnotationsList list = new DummyXmlScrAnnotationsList(); list.Annotations.Add(ann); list.CallWriteToCache(Cache, m_stylesheet); IScrBookAnnotations annotations = m_scr.BookAnnotationsOS[1]; Assert.AreEqual(1, annotations.NotesOS.Count); IScrScriptureNote note = annotations.NotesOS[0]; Assert.AreEqual(NoteType.Translator, note.AnnotationType); Assert.IsTrue(AreDateTimesClose(now, note.DateCreated)); Assert.IsTrue(AreDatesClose(now.AddDays(1), note.DateModified)); Assert.AreEqual(DateTime.MinValue, note.DateResolved); IFdoOwningSequence <IStJournalText> responses = note.ResponsesOS; Assert.AreEqual(2, responses.Count); TestAnnotationField(responses[0], "This is my first response"); TestAnnotationField(responses[1], "This is my second response"); }
public void SavingDeserializedAnnotationsToCache_WithResponses() { DateTime now = DateTime.Now; DateTime utcNow = now.ToUniversalTime(); XmlScrNote ann = CreateNote(); ann.BeginScrRef = "EXO 2:8"; ann.ResolutionStatus = NoteStatus.Open; ann.AnnotationTypeGuid = LangProject.kguidAnnTranslatorNote.ToString(); ann.DateTimeCreated = utcNow.ToString(); ann.DateTimeModified = utcNow.AddDays(1).ToString(); AddParasTo(ann.Discussion, "This is my discussion"); AddParasTo(ann.Resolution, "This is my resolution for the note"); AddParasTo(ann.Quote, "This is the quoted text"); AddParasTo(ann.Suggestion, "This is my suggestion"); XmlNoteResponse firstResponse = new XmlNoteResponse(); AddParasTo(firstResponse.Paragraphs, "This is", "my", "first", "response"); ann.Responses.Add(firstResponse); XmlNoteResponse secondResponse = new XmlNoteResponse(); AddParasTo(secondResponse.Paragraphs, "This is", "my second response"); ann.Responses.Add(secondResponse); DummyXmlScrAnnotationsList list = new DummyXmlScrAnnotationsList(); list.Annotations.Add(ann); list.CallWriteToCache(Cache, m_stylesheet); IScrBookAnnotations annotations = m_scr.BookAnnotationsOS[1]; Assert.AreEqual(1, annotations.NotesOS.Count); IScrScriptureNote note = annotations.NotesOS[0]; Assert.AreEqual(NoteType.Translator, note.AnnotationType); Assert.IsTrue(AreDateTimesClose(now, note.DateCreated)); Assert.IsTrue(AreDateTimesClose(now.AddDays(1), note.DateModified)); Assert.AreEqual(DateTime.MinValue, note.DateResolved); TestAnnotationField(note.QuoteOA, "This is the quoted text"); TestAnnotationField(note.DiscussionOA, "This is my discussion"); TestAnnotationField(note.ResolutionOA, "This is my resolution for the note"); TestAnnotationField(note.RecommendationOA, "This is my suggestion"); FdoOwningSequence <IStJournalText> responses = note.ResponsesOS; Assert.AreEqual(2, responses.Count); TestAnnotationField(responses[0], "This is", "my", "first", "response"); TestAnnotationField(responses[1], "This is", "my second response"); }
public void SavingDeserializedAnnotationsToCache_WithHyperlink() { DateTime now = DateTime.Now; DateTime utcNow = now.ToUniversalTime(); XmlScrNote ann = CreateNote(); ann.BeginScrRef = "GEN 2:8"; ann.ResolutionStatus = NoteStatus.Closed; ann.AnnotationTypeGuid = CmAnnotationDefnTags.kguidAnnTranslatorNote.ToString(); ann.DateTimeCreated = utcNow.ToString(CultureInfo.InvariantCulture); ann.DateTimeModified = utcNow.AddDays(1).ToString(CultureInfo.InvariantCulture); ann.DateTimeResolved = utcNow.AddDays(2).ToString(CultureInfo.InvariantCulture); AddParasTo(ann.Discussion, "This is my", "discussion"); AddParasTo(ann.Resolution, "This is my", "resolution for", "the note"); AddParasTo(ann.Quote, "This is the", "quoted text"); AddParasTo(ann.Suggestion, "This is", "my", "suggestion"); AddHyperTo(ann.Suggestion[1], "http://www.tim.david.com/cooldudes.html"); DummyXmlScrAnnotationsList list = new DummyXmlScrAnnotationsList(); list.Annotations.Add(ann); list.CallWriteToCache(Cache, m_stylesheet); IScrBookAnnotations annotations = m_scr.BookAnnotationsOS[0]; Assert.AreEqual(1, annotations.NotesOS.Count); IScrScriptureNote note = annotations.NotesOS[0]; Assert.AreEqual(NoteType.Translator, note.AnnotationType); Assert.IsTrue(AreDateTimesClose(now, note.DateCreated)); Assert.IsTrue(AreDatesClose(now.AddDays(1), note.DateModified)); Assert.IsTrue(AreDatesClose(now.AddDays(2), note.DateResolved)); TestAnnotationField(note.QuoteOA, "This is the", "quoted text"); TestAnnotationField(note.DiscussionOA, "This is my", "discussion"); TestAnnotationField(note.ResolutionOA, "This is my", "resolution for", "the note"); TestAnnotationField(note.RecommendationOA, "This is", "mymy link", "suggestion"); // Check the hyperlink location ITsTextProps props = ((IStTxtPara)note.RecommendationOA.ParagraphsOS[1]).Contents.get_Properties(1); string href = TsStringUtils.GetURL(props.GetStrPropValue((int)FwTextPropType.ktptObjData)); Assert.AreEqual("http://www.tim.david.com/cooldudes.html", href); Assert.AreEqual(0, note.ResponsesOS.Count); }
public void SavingDeserializedAnnotationsToCache() { DateTime now = DateTime.Now; DateTime utcNow = now.ToUniversalTime(); XmlScrNote ann = CreateNote(); ann.BeginScrRef = "GEN 2:8"; ann.ResolutionStatus = NoteStatus.Closed; ann.AnnotationTypeGuid = CmAnnotationDefnTags.kguidAnnTranslatorNote.ToString(); ann.DateTimeCreated = utcNow.ToString(CultureInfo.InvariantCulture); ann.DateTimeModified = utcNow.AddDays(1).ToString(CultureInfo.InvariantCulture); ann.DateTimeResolved = utcNow.AddDays(2).ToString(CultureInfo.InvariantCulture); ann.BeginObjGuid = m_paraObj.Guid; ann.EndObjGuid = m_paraObj.Guid; AddParasTo(ann.Discussion, "This is my", "discussion"); AddParasTo(ann.Resolution, "This is my", "resolution for", "the note"); AddParasTo(ann.Quote, "This is the", "quoted text"); AddParasTo(ann.Suggestion, "This is", "my", "suggestion"); DummyXmlScrAnnotationsList list = new DummyXmlScrAnnotationsList(); list.Annotations.Add(ann); list.CallWriteToCache(Cache, m_stylesheet); IScrBookAnnotations annotations = m_scr.BookAnnotationsOS[0]; Assert.AreEqual(1, annotations.NotesOS.Count); IScrScriptureNote note = annotations.NotesOS[0]; Assert.AreEqual(NoteType.Translator, note.AnnotationType); Assert.IsTrue(AreDateTimesClose(now, note.DateCreated)); Assert.IsTrue(AreDatesClose(now.AddDays(1), note.DateModified)); Assert.IsTrue(AreDatesClose(now.AddDays(2), note.DateResolved)); TestAnnotationField(note.QuoteOA, "This is the", "quoted text"); TestAnnotationField(note.DiscussionOA, "This is my", "discussion"); TestAnnotationField(note.ResolutionOA, "This is my", "resolution for", "the note"); TestAnnotationField(note.RecommendationOA, "This is", "my", "suggestion"); Assert.AreEqual(0, note.ResponsesOS.Count); }
public void SavingDeserializedAnnotationsToCache_InvalidResolvedAndModifiedDate() { DateTime now = DateTime.Now; DateTime utcNow = now.ToUniversalTime(); XmlScrNote ann = CreateNote(); ann.BeginScrRef = "GEN 2:8"; ann.ResolutionStatus = NoteStatus.Closed; ann.AnnotationTypeGuid = LangProject.kguidAnnTranslatorNote.ToString(); ann.DateTimeCreated = utcNow.ToString(); ann.DateTimeModified = "0009-05-02 20:00:00.00"; ann.DateTimeResolved = "0003-01-01 20:00:00.00"; AddParasTo(ann.Discussion, "This is my discussion"); AddParasTo(ann.Resolution, "This is my resolution for the note"); AddParasTo(ann.Quote, "This is the quoted text"); AddParasTo(ann.Suggestion, "This is my suggestion"); DummyXmlScrAnnotationsList list = new DummyXmlScrAnnotationsList(); list.Annotations.Add(ann); list.CallWriteToCache(Cache, m_stylesheet); IScrBookAnnotations annotations = m_scr.BookAnnotationsOS[0]; Assert.AreEqual(1, annotations.NotesOS.Count); IScrScriptureNote note = annotations.NotesOS[0]; Assert.AreEqual(NoteType.Translator, note.AnnotationType); Assert.IsTrue(AreDateTimesClose(now, note.DateCreated)); Assert.IsTrue(AreDateTimesClose(DateTime.FromFileTime(0), note.DateModified)); Assert.IsTrue(AreDateTimesClose(DateTime.FromFileTime(0), note.DateModified)); TestAnnotationField(note.QuoteOA, "This is the quoted text"); TestAnnotationField(note.DiscussionOA, "This is my discussion"); TestAnnotationField(note.ResolutionOA, "This is my resolution for the note"); TestAnnotationField(note.RecommendationOA, "This is my suggestion"); Assert.AreEqual(0, note.ResponsesOS.Count); }
public void SavingDeserializedAnnotationsToCache_InvalidResolvedDate() { #if __MonoCS__ // TODO-Linux: work around [SetCulture("en-US")] being ignored on mono System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); #endif DateTime now = DateTime.Now; DateTime utcNow = now.ToUniversalTime(); XmlScrNote ann = CreateNote(); ann.BeginScrRef = "GEN 2:8"; ann.ResolutionStatus = NoteStatus.Closed; ann.AnnotationTypeGuid = CmAnnotationDefnTags.kguidAnnTranslatorNote.ToString(); ann.DateTimeCreated = utcNow.ToString(); ann.DateTimeModified = utcNow.AddDays(1).ToString(); ann.DateTimeResolved = "0003-01-01 20:00:00.00"; AddParasTo(ann.Discussion, "This is my discussion"); AddParasTo(ann.Resolution, "This is my resolution for the note"); AddParasTo(ann.Quote, "This is the quoted text"); AddParasTo(ann.Suggestion, "This is my suggestion"); DummyXmlScrAnnotationsList list = new DummyXmlScrAnnotationsList(); list.Annotations.Add(ann); list.CallWriteToCache(Cache, m_stylesheet); IScrBookAnnotations annotations = m_scr.BookAnnotationsOS[0]; Assert.AreEqual(1, annotations.NotesOS.Count); IScrScriptureNote note = annotations.NotesOS[0]; Assert.AreEqual(NoteType.Translator, note.AnnotationType); Assert.IsTrue(AreDateTimesClose(now, note.DateCreated)); Assert.IsTrue(AreDatesClose(now.AddDays(1), note.DateModified)); Assert.IsTrue(AreDateTimesClose(note.DateModified, note.DateResolved)); TestAnnotationField(note.QuoteOA, "This is the quoted text"); TestAnnotationField(note.DiscussionOA, "This is my discussion"); TestAnnotationField(note.ResolutionOA, "This is my resolution for the note"); TestAnnotationField(note.RecommendationOA, "This is my suggestion"); Assert.AreEqual(0, note.ResponsesOS.Count); }
public void SavingDeserializedAnnotationsToCache_WithCategories() { DateTime now = DateTime.Now; DateTime utcNow = now.ToUniversalTime(); XmlScrNote ann = CreateNote(); ann.BeginScrRef = "LEV 2:8"; ann.ResolutionStatus = NoteStatus.Open; ann.AnnotationTypeGuid = CmAnnotationDefnTags.kguidAnnTranslatorNote.ToString(); ann.DateTimeCreated = utcNow.ToString(CultureInfo.InvariantCulture); ann.DateTimeModified = utcNow.AddDays(1).ToString(CultureInfo.InvariantCulture); AddParasTo(ann.Discussion, "This is my discussion"); AddParasTo(ann.Resolution, "This is my resolution for the note"); AddParasTo(ann.Quote, "This is the quoted text"); AddParasTo(ann.Suggestion, "This is my suggestion"); XmlNoteCategory category1 = new XmlNoteCategory(); category1.CategoryName = "Monkey"; category1.IcuLocale = "en"; ann.Categories.Add(category1); XmlNoteCategory category2 = new XmlNoteCategory(); category2.CategoryName = "Discourse"; category2.IcuLocale = "en"; ann.Categories.Add(category2); DummyXmlScrAnnotationsList list = new DummyXmlScrAnnotationsList(); list.Annotations.Add(ann); // Make sure 'Monkey' is not in the DB yet int wsEn = Cache.ServiceLocator.WritingSystemManager.GetWsFromStr("en"); foreach (ICmPossibility poss in m_scr.NoteCategoriesOA.PossibilitiesOS) { Assert.AreNotEqual("Monkey", poss.Name.get_String(wsEn)); } list.CallWriteToCache(Cache, m_stylesheet); IScrBookAnnotations annotations = m_scr.BookAnnotationsOS[2]; Assert.AreEqual(1, annotations.NotesOS.Count); IScrScriptureNote note = annotations.NotesOS[0]; Assert.AreEqual(NoteType.Translator, note.AnnotationType); Assert.IsTrue(AreDateTimesClose(now, note.DateCreated)); Assert.IsTrue(AreDatesClose(now.AddDays(1), note.DateModified)); Assert.AreEqual(DateTime.MinValue, note.DateResolved); TestAnnotationField(note.QuoteOA, "This is the quoted text"); TestAnnotationField(note.DiscussionOA, "This is my discussion"); TestAnnotationField(note.ResolutionOA, "This is my resolution for the note"); TestAnnotationField(note.RecommendationOA, "This is my suggestion"); Assert.AreEqual(0, note.ResponsesOS.Count); bool foundMonkey = false; foreach (ICmPossibility poss in m_scr.NoteCategoriesOA.PossibilitiesOS) { foundMonkey |= (poss.Name.get_String(wsEn).Text == "Monkey"); } Assert.IsTrue(foundMonkey, "Monkey should have been added to the DB"); Assert.AreEqual(2, note.CategoriesRS.Count); Assert.AreEqual("Monkey", note.CategoriesRS[0].Name.get_String(wsEn).Text); Assert.AreEqual("Discourse", note.CategoriesRS[1].Name.get_String(wsEn).Text); }
public void ExistingAnnotation_WithNewResponse() { IScrScriptureNote existingAnn = m_scrInMemoryCache.AddAnnotation(null, 02002008, NoteType.Translator, "This is my discussion"); existingAnn.ResolutionStatus = NoteStatus.Open; IStJournalText exisingResponse1 = existingAnn.ResponsesOS.Append(new StJournalText()); AddParasTo(exisingResponse1, "This is my first response"); IStJournalText exisingResponse2 = existingAnn.ResponsesOS.Append(new StJournalText()); AddParasTo(exisingResponse2, "This is my second response"); DateTime now = DateTime.Now; DateTime utcNow = now.ToUniversalTime(); XmlScrNote ann = CreateNote(); ann.BeginScrRef = "EXO 2:8"; ann.ResolutionStatus = NoteStatus.Open; ann.AnnotationTypeGuid = LangProject.kguidAnnTranslatorNote.ToString(); ann.DateTimeCreated = utcNow.ToString(); ann.DateTimeModified = utcNow.AddDays(1).ToString(); AddParasTo(ann.Discussion, "This is my discussion"); XmlNoteResponse firstResponse = new XmlNoteResponse(); AddParasTo(firstResponse.Paragraphs, "This is my first response"); ann.Responses.Add(firstResponse); XmlNoteResponse secondResponse = new XmlNoteResponse(); AddParasTo(secondResponse.Paragraphs, "This is a new response"); ann.Responses.Add(secondResponse); XmlNoteResponse thirdResponse = new XmlNoteResponse(); AddParasTo(thirdResponse.Paragraphs, "This is my second response"); ann.Responses.Add(thirdResponse); DummyXmlScrAnnotationsList list = new DummyXmlScrAnnotationsList(); list.Annotations.Add(ann); list.CallWriteToCache(Cache, m_stylesheet); IScrBookAnnotations annotations = m_scr.BookAnnotationsOS[1]; Assert.AreEqual(1, annotations.NotesOS.Count); IScrScriptureNote note = annotations.NotesOS[0]; Assert.AreEqual(NoteType.Translator, note.AnnotationType); Assert.IsTrue(AreDateTimesClose(now, note.DateCreated)); Assert.IsTrue(AreDateTimesClose(now.AddDays(1), note.DateModified)); Assert.AreEqual(DateTime.MinValue, note.DateResolved); FdoOwningSequence<IStJournalText> responses = note.ResponsesOS; Assert.AreEqual(3, responses.Count); TestAnnotationField(responses[0], "This is my first response"); TestAnnotationField(responses[1], "This is my second response"); TestAnnotationField(responses[2], "This is a new response"); }
public void SavingDeserializedAnnotationsToCache() { DateTime now = DateTime.Now; DateTime utcNow = now.ToUniversalTime(); XmlScrNote ann = CreateNote(); ann.BeginScrRef = "GEN 2:8"; ann.ResolutionStatus = NoteStatus.Closed; ann.AnnotationTypeGuid = LangProject.kguidAnnTranslatorNote.ToString(); ann.DateTimeCreated = utcNow.ToString(); ann.DateTimeModified = utcNow.AddDays(1).ToString(); ann.DateTimeResolved = utcNow.AddDays(2).ToString(); AddParasTo(ann.Discussion, "This is my", "discussion"); AddParasTo(ann.Resolution, "This is my", "resolution for", "the note"); AddParasTo(ann.Quote, "This is the", "quoted text"); AddParasTo(ann.Suggestion, "This is", "my", "suggestion"); DummyXmlScrAnnotationsList list = new DummyXmlScrAnnotationsList(); list.Annotations.Add(ann); list.CallWriteToCache(Cache, m_stylesheet); IScrBookAnnotations annotations = m_scr.BookAnnotationsOS[0]; Assert.AreEqual(1, annotations.NotesOS.Count); IScrScriptureNote note = annotations.NotesOS[0]; Assert.AreEqual(NoteType.Translator, note.AnnotationType); Assert.IsTrue(AreDateTimesClose(now, note.DateCreated)); Assert.IsTrue(AreDateTimesClose(now.AddDays(1), note.DateModified)); Assert.IsTrue(AreDateTimesClose(now.AddDays(2), note.DateResolved)); TestAnnotationField(note.QuoteOA, "This is the", "quoted text"); TestAnnotationField(note.DiscussionOA, "This is my", "discussion"); TestAnnotationField(note.ResolutionOA, "This is my", "resolution for", "the note"); TestAnnotationField(note.RecommendationOA, "This is", "my", "suggestion"); Assert.AreEqual(0, note.ResponsesOS.Count); }
public void SavingDeserializedAnnotationsToCache_WithResponses() { DateTime now = DateTime.Now; DateTime utcNow = now.ToUniversalTime(); XmlScrNote ann = CreateNote(); ann.BeginScrRef = "EXO 2:8"; ann.ResolutionStatus = NoteStatus.Open; ann.AnnotationTypeGuid = LangProject.kguidAnnTranslatorNote.ToString(); ann.DateTimeCreated = utcNow.ToString(); ann.DateTimeModified = utcNow.AddDays(1).ToString(); AddParasTo(ann.Discussion, "This is my discussion"); AddParasTo(ann.Resolution, "This is my resolution for the note"); AddParasTo(ann.Quote, "This is the quoted text"); AddParasTo(ann.Suggestion, "This is my suggestion"); XmlNoteResponse firstResponse = new XmlNoteResponse(); AddParasTo(firstResponse.Paragraphs, "This is", "my", "first", "response"); ann.Responses.Add(firstResponse); XmlNoteResponse secondResponse = new XmlNoteResponse(); AddParasTo(secondResponse.Paragraphs, "This is", "my second response"); ann.Responses.Add(secondResponse); DummyXmlScrAnnotationsList list = new DummyXmlScrAnnotationsList(); list.Annotations.Add(ann); list.CallWriteToCache(Cache, m_stylesheet); IScrBookAnnotations annotations = m_scr.BookAnnotationsOS[1]; Assert.AreEqual(1, annotations.NotesOS.Count); IScrScriptureNote note = annotations.NotesOS[0]; Assert.AreEqual(NoteType.Translator, note.AnnotationType); Assert.IsTrue(AreDateTimesClose(now, note.DateCreated)); Assert.IsTrue(AreDateTimesClose(now.AddDays(1), note.DateModified)); Assert.AreEqual(DateTime.MinValue, note.DateResolved); TestAnnotationField(note.QuoteOA, "This is the quoted text"); TestAnnotationField(note.DiscussionOA, "This is my discussion"); TestAnnotationField(note.ResolutionOA, "This is my resolution for the note"); TestAnnotationField(note.RecommendationOA, "This is my suggestion"); FdoOwningSequence<IStJournalText> responses = note.ResponsesOS; Assert.AreEqual(2, responses.Count); TestAnnotationField(responses[0], "This is", "my", "first", "response"); TestAnnotationField(responses[1], "This is", "my second response"); }
public void SavingDeserializedAnnotationsToCache_WithCategories() { DateTime now = DateTime.Now; DateTime utcNow = now.ToUniversalTime(); XmlScrNote ann = CreateNote(); ann.BeginScrRef = "LEV 2:8"; ann.ResolutionStatus = NoteStatus.Open; ann.AnnotationTypeGuid = LangProject.kguidAnnTranslatorNote.ToString(); ann.DateTimeCreated = utcNow.ToString(); ann.DateTimeModified = utcNow.AddDays(1).ToString(); AddParasTo(ann.Discussion, "This is my discussion"); AddParasTo(ann.Resolution, "This is my resolution for the note"); AddParasTo(ann.Quote, "This is the quoted text"); AddParasTo(ann.Suggestion, "This is my suggestion"); XmlNoteCategory category1 = new XmlNoteCategory(); category1.CategoryName = "Monkey"; category1.IcuLocale = "en"; ann.Categories.Add(category1); XmlNoteCategory category2 = new XmlNoteCategory(); category2.CategoryName = "Discourse"; category2.IcuLocale = "en"; ann.Categories.Add(category2); DummyXmlScrAnnotationsList list = new DummyXmlScrAnnotationsList(); list.Annotations.Add(ann); // Make sure 'Monkey' is not in the DB yet foreach (ICmPossibility poss in m_scr.NoteCategoriesOA.PossibilitiesOS) Assert.AreNotEqual("Monkey", poss.Name.GetAlternative(InMemoryFdoCache.s_wsHvos.En)); list.CallWriteToCache(Cache, m_stylesheet); IScrBookAnnotations annotations = m_scr.BookAnnotationsOS[2]; Assert.AreEqual(1, annotations.NotesOS.Count); IScrScriptureNote note = annotations.NotesOS[0]; Assert.AreEqual(NoteType.Translator, note.AnnotationType); Assert.IsTrue(AreDateTimesClose(now, note.DateCreated)); Assert.IsTrue(AreDateTimesClose(now.AddDays(1), note.DateModified)); Assert.AreEqual(DateTime.MinValue, note.DateResolved); TestAnnotationField(note.QuoteOA, "This is the quoted text"); TestAnnotationField(note.DiscussionOA, "This is my discussion"); TestAnnotationField(note.ResolutionOA, "This is my resolution for the note"); TestAnnotationField(note.RecommendationOA, "This is my suggestion"); Assert.AreEqual(0, note.ResponsesOS.Count); bool foundMonkey = false; foreach (ICmPossibility poss in m_scr.NoteCategoriesOA.PossibilitiesOS) foundMonkey |= (poss.Name.GetAlternative(InMemoryFdoCache.s_wsHvos.En) == "Monkey"); Assert.IsTrue(foundMonkey, "Monkey should have been added to the DB"); Assert.AreEqual(2, note.CategoriesRS.Count); Assert.AreEqual("Monkey", note.CategoriesRS[0].Name.GetAlternative(InMemoryFdoCache.s_wsHvos.En)); Assert.AreEqual("Discourse", note.CategoriesRS[1].Name.GetAlternative(InMemoryFdoCache.s_wsHvos.En)); }
public void SavingDeserializedAnnotationsToCache_WithHyperlink() { DateTime now = DateTime.Now; DateTime utcNow = now.ToUniversalTime(); XmlScrNote ann = CreateNote(); ann.BeginScrRef = "GEN 2:8"; ann.ResolutionStatus = NoteStatus.Closed; ann.AnnotationTypeGuid = LangProject.kguidAnnTranslatorNote.ToString(); ann.DateTimeCreated = utcNow.ToString(); ann.DateTimeModified = utcNow.AddDays(1).ToString(); ann.DateTimeResolved = utcNow.AddDays(2).ToString(); AddParasTo(ann.Discussion, "This is my", "discussion"); AddParasTo(ann.Resolution, "This is my", "resolution for", "the note"); AddParasTo(ann.Quote, "This is the", "quoted text"); AddParasTo(ann.Suggestion, "This is", "my", "suggestion"); AddHyperTo(ann.Suggestion[1], "http://www.tim.david.com/cooldudes.html"); DummyXmlScrAnnotationsList list = new DummyXmlScrAnnotationsList(); list.Annotations.Add(ann); list.CallWriteToCache(Cache, m_stylesheet); IScrBookAnnotations annotations = m_scr.BookAnnotationsOS[0]; Assert.AreEqual(1, annotations.NotesOS.Count); IScrScriptureNote note = annotations.NotesOS[0]; Assert.AreEqual(NoteType.Translator, note.AnnotationType); Assert.IsTrue(AreDateTimesClose(now, note.DateCreated)); Assert.IsTrue(AreDateTimesClose(now.AddDays(1), note.DateModified)); Assert.IsTrue(AreDateTimesClose(now.AddDays(2), note.DateResolved)); TestAnnotationField(note.QuoteOA, "This is the", "quoted text"); TestAnnotationField(note.DiscussionOA, "This is my", "discussion"); TestAnnotationField(note.ResolutionOA, "This is my", "resolution for", "the note"); TestAnnotationField(note.RecommendationOA, "This is", "mymy link", "suggestion"); // Check the hyperlink location ITsTextProps props = ((IStTxtPara)note.RecommendationOA.ParagraphsOS[1]).Contents.UnderlyingTsString.get_Properties(1); string href = StringUtils.GetURL(props.GetStrPropValue((int)FwTextPropType.ktptObjData)); Assert.AreEqual("http://www.tim.david.com/cooldudes.html", href); Assert.AreEqual(0, note.ResponsesOS.Count); }
public void ExistingAnnotation_WithNewResponse() { IScrScriptureNote existingAnn = AddAnnotation(null, 02002008, NoteType.Translator, "This is my discussion"); existingAnn.ResolutionStatus = NoteStatus.Open; IStJournalText exisingResponse1 = Cache.ServiceLocator.GetInstance<IStJournalTextFactory>().Create(); existingAnn.ResponsesOS.Add(exisingResponse1); AddParasTo(exisingResponse1, "This is my first response"); IStJournalText exisingResponse2 = Cache.ServiceLocator.GetInstance<IStJournalTextFactory>().Create(); existingAnn.ResponsesOS.Add(exisingResponse2); AddParasTo(exisingResponse2, "This is my second response"); DateTime utcCreated = existingAnn.DateCreated.ToUniversalTime(); XmlScrNote ann = CreateNote(); ann.BeginScrRef = "EXO 2:8"; ann.ResolutionStatus = NoteStatus.Open; ann.AnnotationTypeGuid = CmAnnotationDefnTags.kguidAnnTranslatorNote.ToString(); ann.DateTimeCreated = utcCreated.ToString(CultureInfo.InvariantCulture); // (The modified date is now set as automatically when the fields in the note are modified.) AddParasTo(ann.Discussion, "This is my discussion"); XmlNoteResponse firstResponse = new XmlNoteResponse(); AddParasTo(firstResponse.Paragraphs, "This is my first response"); ann.Responses.Add(firstResponse); XmlNoteResponse secondResponse = new XmlNoteResponse(); AddParasTo(secondResponse.Paragraphs, "This is a new response"); ann.Responses.Add(secondResponse); XmlNoteResponse thirdResponse = new XmlNoteResponse(); AddParasTo(thirdResponse.Paragraphs, "This is my second response"); ann.Responses.Add(thirdResponse); DummyXmlScrAnnotationsList list = new DummyXmlScrAnnotationsList(); list.Annotations.Add(ann); list.CallWriteToCache(Cache, m_stylesheet); IScrBookAnnotations annotations = m_scr.BookAnnotationsOS[1]; Assert.AreEqual(1, annotations.NotesOS.Count); IScrScriptureNote note = annotations.NotesOS[0]; Assert.AreEqual(NoteType.Translator, note.AnnotationType); Assert.IsTrue(AreDateTimesClose(DateTime.Now, note.DateCreated)); Assert.IsTrue(AreDateTimesClose(DateTime.Now, note.DateModified)); Assert.AreEqual(DateTime.MinValue, note.DateResolved); IFdoOwningSequence<IStJournalText> responses = note.ResponsesOS; Assert.AreEqual(3, responses.Count); TestAnnotationField(responses[0], "This is my first response"); TestAnnotationField(responses[1], "This is my second response"); TestAnnotationField(responses[2], "This is a new response"); }
public void SavingDeserializedAnnotationsToCache_InvalidResolvedAndModifiedDate() { DateTime now = DateTime.Now; DateTime utcNow = now.ToUniversalTime(); XmlScrNote ann = CreateNote(); ann.BeginScrRef = "GEN 2:8"; ann.ResolutionStatus = NoteStatus.Closed; ann.AnnotationTypeGuid = CmAnnotationDefnTags.kguidAnnTranslatorNote.ToString(); ann.DateTimeCreated = utcNow.ToString(CultureInfo.InvariantCulture); ann.DateTimeModified = "0009-05-02 20:00:00.00"; ann.DateTimeResolved = "0003-01-01 20:00:00.00"; AddParasTo(ann.Discussion, "This is my discussion"); AddParasTo(ann.Resolution, "This is my resolution for the note"); AddParasTo(ann.Quote, "This is the quoted text"); AddParasTo(ann.Suggestion, "This is my suggestion"); DummyXmlScrAnnotationsList list = new DummyXmlScrAnnotationsList(); list.Annotations.Add(ann); list.CallWriteToCache(Cache, m_stylesheet); IScrBookAnnotations annotations = m_scr.BookAnnotationsOS[0]; Assert.AreEqual(1, annotations.NotesOS.Count); IScrScriptureNote note = annotations.NotesOS[0]; Assert.AreEqual(NoteType.Translator, note.AnnotationType); Assert.IsTrue(AreDateTimesClose(now, note.DateCreated)); Assert.IsTrue(AreDateTimesClose(DateTime.FromFileTime(0), note.DateModified)); Assert.IsTrue(AreDateTimesClose(DateTime.FromFileTime(0), note.DateModified)); TestAnnotationField(note.QuoteOA, "This is the quoted text"); TestAnnotationField(note.DiscussionOA, "This is my discussion"); TestAnnotationField(note.ResolutionOA, "This is my resolution for the note"); TestAnnotationField(note.RecommendationOA, "This is my suggestion"); Assert.AreEqual(0, note.ResponsesOS.Count); }