Ejemplo n.º 1
0
        public void SelectTemplateFileCommand()
        {
            // arrange
            var vm = new FieldFileViewModel
                {
                    SelectedFileTemplateId = 1,
                    TemplateData = new FileProcessAttribute("eCar_p", "DoNotExistingPropertyName", null, null)
                };

            var parentModel = Mock.Create<IEditableRoot>(Behavior.Loose);
            Mock.NonPublic.Arrange<IEditableRoot>(vm, "ParentModel").Returns(parentModel);

            var dynamicManager = Mock.Create<IDynamicTypeManager>(Behavior.CallOriginal);

            var dataPortalResult = new DataPortalResult<IEditableRoot>(null, new Exception(), null);

            Mock.Arrange(() => dynamicManager.BeginGetEditableRoot(Arg.AnyString, 1, Arg.IsAny<Action<object, DataPortalResult<IEditableRoot>>>()))
                .DoInstead<string, int, Action<object, DataPortalResult<IEditableRoot>>>((processName, id, callback) =>
                    callback(null, dataPortalResult));

            vm.TheDynamicTypeManager = dynamicManager;

            var logWasCalled = false;
            var logger = Mock.Create<ILogger>(Behavior.CallOriginal);

            Mock.Arrange(() => logger.Log(LogSeverity.Error, vm.GetType().FullName, Arg.IsAny<Exception>())).DoInstead(() => logWasCalled = true);
            vm.Logger = logger;

            // act
            vm.SelectTemplateFileCommand.Execute(null);

            // assert
            Assert.AreEqual(LanguageService.Translate("Msg_TemplateNotFound"), vm.Message);
            Assert.AreEqual(new Exception().ToString(), new PrivateAccessor(vm).GetProperty("ExceptionMessage"));
            Assert.AreEqual(FileControlMode.NotifyFail, vm.CurrentState);
            Assert.IsTrue(logWasCalled);

            // arrange
            vm.Message = null;
            vm.CurrentState = FileControlMode.Download;
            logWasCalled = false;

            var editableRoot = Mock.Create<IEditableRoot>(Behavior.CallOriginal);
            dataPortalResult = new DataPortalResult<IEditableRoot>(editableRoot, null, null);

            // act
            vm.SelectTemplateFileCommand.Execute(null);

            // assert
            Assert.AreEqual(LanguageService.Translate("Msg_TemplateNotFound"), vm.Message);
            Assert.AreEqual(FileControlMode.NotifyFail, vm.CurrentState);
            Assert.IsFalse(logWasCalled);

            // arrange
            var currentFileProcess = Mock.Create<IFileProcess>(Behavior.Loose);
            currentFileProcess.Locked = true;
            Mock.NonPublic.Arrange<IFileProcess>(vm, "CurrentFileProcess").Returns(currentFileProcess);

            var templateFileProcess = Mock.Create<IFileProcess>(Behavior.Loose);
            templateFileProcess.FileName = "603512C1-87D1-48BA-9C3F-13DA0C9EF5C0.txt";
            templateFileProcess.OriginalFileName = "1.txt";

            Mock.Arrange(() => editableRoot.GetValueByPropertyName(Arg.IsAny<string>())).Returns(templateFileProcess);

            var navigateUriWasRaises = false;
            Mock.NonPublic.Arrange(vm, "RaisePropertyChanged", "NavigateUri").DoInstead(() => { navigateUriWasRaises = true; });

            var templateWasSelectedMessageWasRaises = false;
            Mock.NonPublic.Arrange(vm, "RaisePropertyChanged", "TemplateWasSelectedMessage").DoInstead(() => { templateWasSelectedMessageWasRaises = true; });

            // act
            vm.SelectTemplateFileCommand.Execute(null);

            // act
            Assert.AreEqual("603512C1-87D1-48BA-9C3F-13DA0C9EF5C0.txt", currentFileProcess.FileName);
            Assert.AreEqual("1.txt", currentFileProcess.OriginalFileName);
            Assert.IsFalse(currentFileProcess.Locked.Value);
            Assert.AreEqual(FileControlMode.TemplateWasSelected, vm.CurrentState);
            Assert.IsTrue(navigateUriWasRaises);
            Assert.IsTrue(templateWasSelectedMessageWasRaises);
        }