public void SetupViewModelTests()
        {
            // arrange
            var vm = new SelectPersonViewModel();

            var baseMethodWasCalled = false;
            Mock.Arrange(() => new SelectPersonViewModelBase().SetupViewModel(SelectionMode.Single)).DoInstead(() => baseMethodWasCalled = true);

            var account = Mock.Create<IAccount>(Behavior.CallOriginal);

            // act
            vm.SetupViewModel(SelectionMode.Single, account);

            // assert
            Assert.IsTrue(baseMethodWasCalled);
            Assert.AreEqual(account, new PrivateAccessor(vm).GetField("_selectedAccount"));
        }
        public void RefreshTests()
        {
            // arrange
            var vm = new SelectPersonViewModel();

            var getFilterWasCalled = false;
            Mock.NonPublic.Arrange<MobileObservableCollection<IFilterDescriptor>>(vm, "GetFilter").DoInstead(() => getFilterWasCalled = true);

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

            Mock.Arrange(() => dynamicTypeManager.GetCustomType(Constants.AccountProcessName, "LinkablePersonList", true))
                .DoInstead(() => Assert.IsTrue(vm.IsBusy))
                    .Returns(typeof(object));

            vm.TheDynamicTypeManager = dynamicTypeManager;

            var account = Mock.Create<IAccount>(Behavior.Loose);
            var privateAccessor = new PrivateAccessor(vm);
            privateAccessor.SetField("_selectedAccount", account);

            var basePersonList = Mock.Create<IList>(Behavior.Loose);

            Mock.Arrange(() => MethodCaller.CallFactoryMethod(Arg.IsAny<Type>(), "Get__AccountLinkablePersonListAsync", Arg.AnyInt, Arg.IsAny<int?>(), Arg.IsAny<PagedCriteria>()))
                .Returns(() =>
                    {
                        var tcs = new TaskCompletionSource<IList>();
                        tcs.SetResult(basePersonList);
                        return tcs.Task;
                    });

            // act
            privateAccessor.CallMethod("Refresh");

            // assert
            Assert.IsTrue(getFilterWasCalled);
            Assert.AreEqual(basePersonList, vm.PersonList);
            Assert.IsFalse(vm.IsBusy);
        }