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;
            }
        }
Example #2
0
        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;
            }
        }
    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;
      }
    }
Example #6
0
        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
        }