public void SaveNote_Happy_Path()
        {
            const string subscriberID = "KNOWNSUBSCRIBER";
            const string locationID = "KNOWNLOCATIONID";

            var savenoteFormCollection = new FormCollection();
            savenoteFormCollection["note"] = "DOESNOTMATTER";

            var CreateSubNoteCalled = false;
            using (ShimsContext.Create())
            {
                var myContext = new SIMPLTestContext();

                var fakeUserDto = myContext.GetFakeUserDtoObject();
                ShimCurrentUser.AsUserDto = () => fakeUserDto;

                ShimRosettianClient.AllInstances.CreateSubNoteStringNoteDtoUserDto = delegate
                {
                    CreateSubNoteCalled = true;
                };

                var testServiceHistoryController = new ServiceHistoryController();

                var result = testServiceHistoryController.saveNote(savenoteFormCollection, subscriberID, locationID);

                Assert.IsNotNull(result, "Partial view result returned is null.");
                Assert.IsTrue(CreateSubNoteCalled, "RosettianClient.CreateSubNote was not called.");
                Assert.IsTrue(result != null, "The result from saveNote was not an ActionResult.");
                Assert.IsTrue(result is PartialViewResult, "The result from saveNote was not a PartialViewResult.");
                var saveNotePartialViewResult = result as PartialViewResult;
                Assert.AreEqual(saveNotePartialViewResult.ViewName, "ServiceHistoryDetails_Partial",
                    "The result does not call the 'ServiceHistoryDetails_Partial' view");
                Assert.IsTrue(saveNotePartialViewResult.Model is ServiceHistoryViewModel, "The result model form saveNote was not of type ServiceHistoryViewModel");
            }
        }
        public void SaveNote_Without_Note_Key_In_Formcollection()
        {
            const string subscriberID = "KNOWNSUBSCRIBER";
            const string locationID = "KNOWNLOCATIONID";

            var savenoteFormCollection = new FormCollection();

            var CreateSubNoteCalled = false;
            const string expectedErrorMessage = "Note text cannot be empty.";
            using (ShimsContext.Create())
            {
                ShimRosettianClient.AllInstances.CreateSubNoteStringNoteDtoUserDto = delegate
                {
                    CreateSubNoteCalled = true;
                };

                var testServiceHistoryController = new ServiceHistoryController();

                var result = testServiceHistoryController.saveNote(savenoteFormCollection, subscriberID, locationID);

                Assert.IsNotNull(result, "Partial view result returned is null.");
                Assert.IsFalse(CreateSubNoteCalled, "RosettianClient.CreateSubNote was called.");
                Assert.IsTrue(result != null, "The result from saveNote was not an ActionResult.");
                Assert.IsTrue(result is PartialViewResult, "The result from saveNote was not a PartialViewResult.");
                var saveNotePartialViewResult = result as PartialViewResult;
                Assert.AreEqual("Error", saveNotePartialViewResult.ViewName,
                    "The result does not call the 'Error' view.");
                Assert.IsTrue(saveNotePartialViewResult.ViewData.ContainsKey("error"),
                    "ViewData does not contain 'error' key");
                Assert.IsNotNull(saveNotePartialViewResult.ViewData["error"], "ViewData[\"error\"] was not set.");
                Assert.AreEqual(expectedErrorMessage,  saveNotePartialViewResult.ViewData["error"],
                    string.Format("ViewData[\"error\"] is incorrect. Actual: {0} Expected: {1}",
                        saveNotePartialViewResult.ViewData["error"], expectedErrorMessage));

            }
        }