public void OnFilesSelected() { // arrange var vm = new FieldFileViewModel(); var radUpload = new RadUpload(); var called = false; Mock.Arrange(() => radUpload.CancelUpload()).DoInstead(() => called = true); var fileInfo = Mock.Create<FileInfo>(Behavior.CallOriginal); var radUploadSelectedFile = new RadUploadSelectedFile(fileInfo); var e = new FilesSelectedEventArgs(new List<RadUploadSelectedFile> { radUploadSelectedFile }); var fileProcess = Mock.Create<IFileProcess>(Behavior.Loose); fileProcess.OriginalFileName = "1.txt"; Mock.NonPublic.Arrange<IFileProcess>(vm, "CurrentFileProcess").Returns(fileProcess); // act vm.OnFilesSelected(radUpload, e); // assert Assert.AreEqual("The process cannot access file '1.txt' because it is being used by another process.", vm.Message); Assert.AreEqual(FileControlMode.NotifyFail, vm.CurrentState); Assert.IsTrue(called); // arrange vm.Message = null; called = false; vm.CurrentState = FileControlMode.Download; Mock.Arrange(() => fileInfo.Directory).Throws<Exception>(); Mock.Arrange(() => radUploadSelectedFile.Size).Returns(1); Mock.NonPublic.Arrange<ulong>(vm, "MaxFileSize").Returns(0); // act vm.OnFilesSelected(radUpload, e); // assert Assert.AreEqual("Maximum file size is 0.0 Mb", vm.Message); Assert.AreEqual(FileControlMode.NotifyFail, vm.CurrentState); Assert.IsTrue(called); // arrage vm.Message = null; called = false; vm.CurrentState = FileControlMode.Download; Mock.NonPublic.Arrange<ulong>(vm, "MaxFileSize").Returns(2); // act vm.OnFilesSelected(radUpload, e); // assert Assert.IsNull(vm.Message); Assert.AreNotEqual(FileControlMode.NotifyFail, vm.CurrentState); Assert.IsFalse(called); }