Example #1
0
        public NavigatorFixture()
        {
            _trace = new StringWriter();

            _vmA = new ViewModelA(_trace);
            _vmB = new ViewModelB(_trace);
            _vmC = new ViewModelC(_trace);

            _vA = new ViewA {
                BindingContext = _vmA, Title = "a"
            };
            _vB = new ViewB {
                BindingContext = _vmB, Title = "b"
            };
            _vC = new ViewC {
                BindingContext = _vmC, Title = "c"
            };

            _navigationPage = new NavigationPage(_vA);

            var pageMock = new Mock <IPage>();

            pageMock.Setup(p => p.Navigation).Returns(() => _navigationPage.CurrentPage.Navigation);

            var viewFactoryMock = new Mock <IViewFactory>();

            viewFactoryMock.Setup(vf => vf.Resolve(It.IsAny <Action <ViewModelA> >())).Returns(() => _vA);
            viewFactoryMock.Setup(vf => vf.Resolve(It.IsAny <Action <ViewModelB> >())).Returns(() => _vB);
            viewFactoryMock.Setup(vf => vf.Resolve(It.IsAny <Action <ViewModelC> >())).Returns(() => _vC);

            ViewModelA unusedA;
            ViewModelB unusedB;
            ViewModelC unusedC;

            viewFactoryMock.Setup(vf => vf.Resolve(out unusedA, It.IsAny <Action <ViewModelA> >()));

            viewFactoryMock.Setup(vf => vf.Resolve(out unusedB, It.IsAny <Action <ViewModelB> >()))
            .OutCallback((out ViewModelB vm, Action <ViewModelB> setStateAction) => vm = _vmB)
            .Returns(() => _vB);

            viewFactoryMock.Setup(vf => vf.Resolve(out unusedC, It.IsAny <Action <ViewModelC> >()))
            .OutCallback((out ViewModelC vm, Action <ViewModelC> setStateAction) => vm = _vmC)
            .Returns(() => _vC);

            viewFactoryMock.Setup(vf => vf.Resolve(_vmA)).Returns(_vA);
            viewFactoryMock.Setup(vf => vf.Resolve(_vmB)).Returns(_vB);
            viewFactoryMock.Setup(vf => vf.Resolve(_vmC)).Returns(_vC);

            _navigator = new Navigator(pageMock.Object, viewFactoryMock.Object);
        }
 public ViewModelA(IService service, ViewModelC viewModelC)
 {
     this.service    = service;
     this.viewModelC = viewModelC;
 }