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");
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 7
0
        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);
		}
Exemplo n.º 10
0
		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");
		}
Exemplo n.º 11
0
		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));
		}
Exemplo n.º 12
0
		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);
		}