Esempio n. 1
0
        public async Task RefreshOrg_UpdatesChildrenOnOrgViewModel()
        {
            var fakeSpaceName1 = "fake space 1";
            var fakeSpaceName2 = "fake space 2";
            var fakeSpaceName3 = "fake space 3";
            var fakeSpaceName4 = "fake space 4";

            var fakeSpaceGuid1 = "fake space 1";
            var fakeSpaceGuid2 = "fake space 2";
            var fakeSpaceGuid3 = "fake space 3";
            var fakeSpaceGuid4 = "fake space 4";

            _sut.Children = new ObservableCollection <TreeViewItemViewModel>
            {
                // to be removed:
                new SpaceViewModel(new CloudFoundrySpace(fakeSpaceName1, fakeSpaceGuid1, _sut.Org), null, null, Services),
                // to stay:
                new SpaceViewModel(new CloudFoundrySpace(fakeSpaceName2, fakeSpaceGuid2, _sut.Org), null, null, Services, expanded: true),  // should stay expanded after refresh
                new SpaceViewModel(new CloudFoundrySpace(fakeSpaceName3, fakeSpaceGuid3, _sut.Org), null, null, Services, expanded: false), // should stay collapsed after refresh
            };

            var fakeSpacesList = new List <CloudFoundrySpace>
            {
                // original:
                new CloudFoundrySpace(fakeSpaceName2, fakeSpaceGuid2, _sut.Org),
                new CloudFoundrySpace(fakeSpaceName3, fakeSpaceGuid3, _sut.Org),
                // new:
                new CloudFoundrySpace(fakeSpaceName4, fakeSpaceGuid4, _sut.Org),
            };

            var fakeSuccessResult = new DetailedResult <List <CloudFoundrySpace> >(succeeded: true, content: fakeSpacesList);

            Assert.AreEqual(3, _sut.Children.Count);
            SpaceViewModel initialChildSpace1 = (SpaceViewModel)_sut.Children[0];
            SpaceViewModel initialChildSpace2 = (SpaceViewModel)_sut.Children[1];
            SpaceViewModel initialChildSpace3 = (SpaceViewModel)_sut.Children[2];

            Assert.AreEqual(fakeSpaceName1, initialChildSpace1.Space.SpaceName);
            Assert.AreEqual(fakeSpaceName2, initialChildSpace2.Space.SpaceName);
            Assert.AreEqual(fakeSpaceName3, initialChildSpace3.Space.SpaceName);
            Assert.IsFalse(initialChildSpace1.IsExpanded);
            Assert.IsTrue(initialChildSpace2.IsExpanded);
            Assert.IsFalse(initialChildSpace3.IsExpanded);

            MockCloudFoundryService.Setup(mock => mock.
                                          GetSpacesForOrgAsync(_sut.Org, true, It.IsAny <int>()))
            .ReturnsAsync(fakeSuccessResult);

            _receivedEvents.Clear();

            await _sut.RefreshChildren();

            Assert.AreEqual(3, _sut.Children.Count);
            SpaceViewModel refreshedChildSpace1 = (SpaceViewModel)_sut.Children[0];
            SpaceViewModel refreshedChildSpace2 = (SpaceViewModel)_sut.Children[1];
            SpaceViewModel refreshedChildSpace3 = (SpaceViewModel)_sut.Children[2];

            Assert.AreEqual(fakeSpaceName2, refreshedChildSpace1.Space.SpaceName);
            Assert.AreEqual(fakeSpaceName3, refreshedChildSpace2.Space.SpaceName);
            Assert.AreEqual(fakeSpaceName4, refreshedChildSpace3.Space.SpaceName);
            Assert.IsTrue(refreshedChildSpace1.IsExpanded);  // children that aren't new shouldn't change expansion
            Assert.IsFalse(refreshedChildSpace2.IsExpanded); // children that aren't new shouldn't change expansion
            Assert.IsFalse(refreshedChildSpace2.IsExpanded); // new children should start collapsed

            // property changed events should only be raised for "IsRefreshing" (1 to set as true, 1 to set as false)
            Assert.AreEqual(2, _receivedEvents.Count);
            Assert.AreEqual("IsRefreshing", _receivedEvents[0]);
            Assert.AreEqual("IsRefreshing", _receivedEvents[1]);

            MockCloudFoundryService.VerifyAll();
        }