public async Task CREATE_NEW() { PhraseBeliefEdit newPhraseBeliefEdit = null; var isAsyncComplete = false; var hasError = false; EnqueueConditional(() => isAsyncComplete); await Setup(); try { newPhraseBeliefEdit = await PhraseBeliefEdit.NewPhraseBeliefEditAsync(); } catch { hasError = true; } finally { EnqueueCallback( () => Assert.IsNotNull(newPhraseBeliefEdit), () => Assert.IsFalse(hasError) ); EnqueueTestComplete(); Teardown(); isAsyncComplete = true; } }
protected override async Task RecordAsync(ReviewedPhraseEvent message) { var reviewMethodId = message.GetDetail <Guid>(HistoryResources.Key_ReviewMethodId); var phraseText = message.GetDetail <string>(HistoryResources.Key_PhraseText); var phraseId = message.GetDetail <Guid>(HistoryResources.Key_PhraseId); var languageId = message.GetDetail <Guid>(HistoryResources.Key_LanguageId); var languageText = message.GetDetail <string>(HistoryResources.Key_LanguageText); var feedback = message.GetDetail <double>(HistoryResources.Key_FeedbackAsDouble); var duration = message.Duration; var phraseWasModifiedDuringReview = false; //CREATE BELIEF var belief = await PhraseBeliefEdit.NewPhraseBeliefEditAsync(phraseId); if (belief.Phrase.Text != phraseText) { //THIS ONLY HAPPENS WHEN THE PHRASE WAS MODIFIED DURING ITS REVIEW phraseWasModifiedDuringReview = true; } if (belief.Phrase.Language.Text != languageText) { throw new Exception("languagetext does not match message"); } //EDIT BELIEF //THE TIMESTAMP OF RECORDER'S BELIEF IS RIGHT NOW belief.TimeStamp = DateTime.Now; //RECORDER USES TEXT PROPERTY FOR DETAILS ABOUT REVIEW IN FORM OF //QUERY STRING, INCLUDING PHRASE TEXT AND DURATION //BUILD BELIEFTEXT var beliefText = BeliefHelper.GetInitialEmptyBeliefText(); beliefText = BeliefHelper.AppendDurationInMs(beliefText, duration.Milliseconds); beliefText = BeliefHelper.AppendPhraseText(beliefText, phraseText); beliefText = BeliefHelper.AppendLanguageText(beliefText, languageText); //ONLY APPEND THAT IT WAS MODIFIED DURING REVIEW IF IT WAS. MOST WILL //NOT HAVE THIS VALUE. if (phraseWasModifiedDuringReview) { beliefText = BeliefHelper.AppendPhraseWasModifiedDuringReview(beliefText); } belief.Text = beliefText; //FEEDBACK STRENGTH. RECORDER IS PASSTHROUGH IN THIS CASE. RECORDER HAS NO ALTERATION //TO THE STRENGTH OF THE FEEDBACK. belief.Strength = feedback; //THE RECORDER IS THE BELIEVER IN THIS CASE belief.BelieverId = Id; //REVIEWMETHOD ID belief.ReviewMethodId = reviewMethodId; //SAVE BELIEF await belief.SaveAsync(); }
public async Task NEW_EDIT_BEGINSAVE_GET() { PhraseBeliefEdit newPhraseBeliefEdit = null; PhraseBeliefEdit savedPhraseBeliefEdit = null; PhraseBeliefEdit gottenPhraseBeliefEdit = null; var isAsyncComplete = false; var hasError = false; EnqueueConditional(() => isAsyncComplete); await Setup(); try { //NEW newPhraseBeliefEdit = await PhraseBeliefEdit.NewPhraseBeliefEditAsync(); //EDIT newPhraseBeliefEdit.TimeStamp = DateTime.Now - TimeSpan.FromDays(1); newPhraseBeliefEdit.TimeStamp = DateTime.Now - TimeSpan.FromDays(1); newPhraseBeliefEdit.Text = "TestPhraseBelief.Text edited in NEW_EDIT_BEGINSAVE_GET test"; newPhraseBeliefEdit.Strength = 2.0d; newPhraseBeliefEdit.Phrase = _TestPhraseEdit; //newPhraseBeliefEdit.Phrase.Language = _ServerEnglishLang; //newPhraseBeliefEdit.PhraseBeliefNumber = 0; //Assert.AreEqual(SeedData.Ton.TestValidUsername, newPhraseBeliefEdit.Username); //newPhraseBeliefEdit.UserId = SeedData.Ton.GetTestValidUserDto().Id; //newPhraseBeliefEdit.Username = SeedData.Ton.TestValidUsername; //SAVE savedPhraseBeliefEdit = await newPhraseBeliefEdit.SaveAsync(); //GET (CONFIRM SAVE) gottenPhraseBeliefEdit = await PhraseBeliefEdit.GetPhraseBeliefEditAsync(savedPhraseBeliefEdit.Id); } catch { hasError = true; } finally { EnqueueCallback( () => Assert.IsFalse(hasError), () => Assert.IsNotNull(newPhraseBeliefEdit), () => Assert.AreNotEqual(Guid.Empty, newPhraseBeliefEdit.PhraseId), () => Assert.IsNotNull(savedPhraseBeliefEdit), () => Assert.IsNotNull(gottenPhraseBeliefEdit), () => Assert.AreEqual(savedPhraseBeliefEdit.Id, gottenPhraseBeliefEdit.Id) ); EnqueueTestComplete(); Teardown(); isAsyncComplete = true; } }
public async Task NEW_EDIT_BEGINSAVE_GET_DELETE_GET() { PhraseBeliefEdit newPhraseBeliefEdit = null; PhraseBeliefEdit savedPhraseBeliefEdit = null; PhraseBeliefEdit gottenPhraseBeliefEdit = null; PhraseBeliefEdit deletedPhraseBeliefEdit = null; //INITIALIZE TO EMPTY PhraseBelief EDIT, BECAUSE WE EXPECT THIS TO BE NULL LATER PhraseBeliefEdit deleteConfirmedPhraseBeliefEdit = new PhraseBeliefEdit(); var isAsyncComplete = false; var hasError = false; EnqueueConditional(() => isAsyncComplete); await Setup(); try { //NEW newPhraseBeliefEdit = await PhraseBeliefEdit.NewPhraseBeliefEditAsync(); //EDIT newPhraseBeliefEdit.TimeStamp = DateTime.Now - TimeSpan.FromDays(7); newPhraseBeliefEdit.Text = "TestPhraseBelief.Text edited in NEW_EDIT_BEGINSAVE_GET_DELETE_GET test"; newPhraseBeliefEdit.Strength = 3.0d; newPhraseBeliefEdit.Phrase = _TestPhraseEdit; Assert.AreEqual(SeedData.Ton.TestValidUsername, newPhraseBeliefEdit.Username); //SAVE savedPhraseBeliefEdit = await newPhraseBeliefEdit.SaveAsync(); //GET (CONFIRM SAVE) gottenPhraseBeliefEdit = await PhraseBeliefEdit.GetPhraseBeliefEditAsync(savedPhraseBeliefEdit.Id); //DELETE (MARKS DELETE. SAVE INITIATES ACTUAL DELETE IN DB) gottenPhraseBeliefEdit.Delete(); deletedPhraseBeliefEdit = await gottenPhraseBeliefEdit.SaveAsync(); try { deleteConfirmedPhraseBeliefEdit = await PhraseBeliefEdit.GetPhraseBeliefEditAsync(deletedPhraseBeliefEdit.Id); } catch (Csla.DataPortalException dpex) { var debugExecutionLocation = Csla.ApplicationContext.ExecutionLocation; var debugLogicalExecutionLocation = Csla.ApplicationContext.LogicalExecutionLocation; //WE EXPECT THE ID TO NOT BE FOUND, OTHERWISE RETHROW THE EXCEPTION if (!TestsHelper.IsIdNotFoundException(dpex)) { throw dpex; } } } catch { hasError = true; } finally { EnqueueCallback( () => Assert.IsFalse(hasError), () => Assert.IsNotNull(newPhraseBeliefEdit), () => Assert.IsNotNull(savedPhraseBeliefEdit), () => Assert.IsNotNull(gottenPhraseBeliefEdit), () => Assert.IsNotNull(deletedPhraseBeliefEdit), () => Assert.AreEqual(Guid.Empty, deleteConfirmedPhraseBeliefEdit.Id), () => Assert.AreEqual(Guid.Empty, deleteConfirmedPhraseBeliefEdit.PhraseId) ); EnqueueTestComplete(); Teardown(); isAsyncComplete = true; } }
protected override async Task RecordAsync(History.Events.ReviewedLineEvent message) { /// DETAILS: LINE ID /// REVIEWMETHODID /// LINETEXT /// LINENUMBER /// PHRASEID /// LANGUAGEID /// LANGUAGETEXT /// FEEDBACKASDOUBLE /// DURATION var lineId = message.GetDetail <Guid>(HistoryResources.Key_LineId); var reviewMethodId = message.GetDetail <Guid>(HistoryResources.Key_ReviewMethodId); var lineText = message.GetDetail <string>(HistoryResources.Key_LineText); var lineNumber = message.GetDetail <int>(HistoryResources.Key_LineNumber); var phraseId = message.GetDetail <Guid>(HistoryResources.Key_PhraseId); var languageId = message.GetDetail <Guid>(HistoryResources.Key_LanguageId); var languageText = message.GetDetail <string>(HistoryResources.Key_LanguageText); var feedback = message.GetDetail <double>(HistoryResources.Key_FeedbackAsDouble); var duration = message.Duration; #region CREATE BELIEF var belief = await PhraseBeliefEdit.NewPhraseBeliefEditAsync(phraseId); if (belief.Phrase.Text != lineText || belief.Phrase.Language.Text != languageText) { throw new Exception("phrasetext or languagetext does not match message"); } #region EDIT BELIEF //THE TIMESTAMP OF RECORDER'S BELIEF IS RIGHT NOW belief.TimeStamp = DateTime.Now; //RECORDER USES TEXT PROPERTY FOR DETAILS ABOUT REVIEW IN FORM OF //QUERY STRING, INCLUDING LINE ID/NUMBER AND DURATION var beliefText = @"?"; #region Build beliefText beliefText += HistoryResources.Key_DurationInMilliseconds + "=" + duration.Milliseconds.ToString(); beliefText += @"&" + HistoryResources.Key_LineId + "=" + lineId.ToString(); beliefText += @"&" + HistoryResources.Key_LineNumber + "=" + lineNumber.ToString(); #endregion belief.Text = beliefText; //FEEDBACK STRENGTH. RECORDER IS PASSTHROUGH IN THIS CASE. RECORDER HAS NO ALTERATION //TO THE STRENGTH OF THE FEEDBACK. belief.Strength = feedback; //THE RECORDER IS THE BELIEVER IN THIS CASE belief.BelieverId = Id; //REVIEWMETHOD ID belief.ReviewMethodId = reviewMethodId; //PHRASE IS ALREADY SET #endregion #region SAVE BELIEF await belief.SaveAsync(); #endregion #endregion }
protected async override Task RecordAsync(History.Events.ReviewedLineEvent message) { //CHANGE DEFAULT PHRASE RECORDER RECORDASYNC TO USE TASKS /// DETAILS: LINE ID /// REVIEWMETHODID /// LINETEXT /// LINENUMBER /// PHRASEID /// LANGUAGEID /// LANGUAGETEXT /// FEEDBACKASDOUBLE /// DURATION var lineId = message.GetDetail <Guid>(HistoryResources.Key_LineId); var reviewMethodId = message.GetDetail <Guid>(HistoryResources.Key_ReviewMethodId); var lineText = message.GetDetail <string>(HistoryResources.Key_LineText); var lineNumber = message.GetDetail <int>(HistoryResources.Key_LineNumber); var phraseId = message.GetDetail <Guid>(HistoryResources.Key_PhraseId); var languageId = message.GetDetail <Guid>(HistoryResources.Key_LanguageId); var languageText = message.GetDetail <string>(HistoryResources.Key_LanguageText); var feedback = message.GetDetail <double>(HistoryResources.Key_FeedbackAsDouble); var duration = message.Duration; #region PARSE TEXT INTO WORDS var words = lineText.ParseIntoWords(); #region INITIALIZE BELIEF PROPERTIES COMMON TO ALL WORDS //THE TIMESTAMP OF RECORDER'S BELIEF IS RIGHT NOW var beliefTimeStamp = DateTime.Now; //RECORDER USES TEXT PROPERTY FOR DETAILS ABOUT REVIEW IN FORM OF //QUERY STRING, INCLUDING LINE ID/NUMBER AND DURATION var beliefText = @"?"; #region beliefText += ... (DURATION, LINE ID, LINE NUMBER) //DURATION beliefText += HistoryResources.Key_DurationInMilliseconds + "=" + duration.Milliseconds.ToString(); //LINE ID beliefText += @"&" + HistoryResources.Key_LineId + "=" + lineId.ToString(); //LINE NUMBER beliefText += @"&" + HistoryResources.Key_LineNumber + "=" + lineNumber.ToString(); #endregion //FEEDBACK STRENGTH. RECORDER IS PASSTHROUGH IN THIS CASE. RECORDER HAS NO ALTERATION //TO THE STRENGTH OF THE FEEDBACK. var beliefStrength = feedback; //THE RECORDER IS THE BELIEVER IN THIS CASE var beliefBelieverId = Id; //REVIEWMETHOD ID var beliefReviewMethodId = reviewMethodId; #endregion #region Action<object> createAndSaveBelief THIS IS THE ACTION THAT HAPPENS IN THE FOR LOOP. IT USES _CURRENTWORDPHRASEID AND COMMON BELIEF PROPERTIES Action <object> createAndSaveBelief = async(object state) => { AutoResetEvent autoResetEvent = (AutoResetEvent)state; //CREATE BELIEF var belief = await PhraseBeliefEdit.NewPhraseBeliefEditAsync(_CurrentWordPhraseId); if (belief.Phrase.Language.Text != languageText) { throw new Exception("languagetext does not match message"); } belief.TimeStamp = beliefTimeStamp; belief.Text = beliefText; belief.Strength = beliefStrength; belief.BelieverId = beliefBelieverId; belief.ReviewMethodId = beliefReviewMethodId; //SAVE BELIEF var savedBelief = await belief.SaveAsync(); autoResetEvent.Set(); }; #endregion foreach (var word in words) { ThreadPool.QueueUserWorkItem(new WaitCallback(createAndSaveBelief), _AutoResetEvent); _AutoResetEvent.WaitOne(); } #endregion }