コード例 #1
0
        public void CreatingDocumentWindowWithEmptyMetadataCollectionSynchronizesDocuments()
        {
            // Arrange

            var metadataManagerMock = new Mock <IDocumentMetadataManager>();

            metadataManagerMock.Setup(m => m.ActiveDocumentMetadata.IsEmpty).Returns(true);

            var service = new WindowEventsService(metadataManagerMock.Object);

            var documents = Mock.Of <Documents>();

            var dte2Mock = new Mock <DTE>();

            dte2Mock.Setup(d => d.Documents).Returns(documents);

            var documentMock = new Mock <Document>();

            documentMock.Setup(d => d.ActiveWindow).Returns(Mock.Of <Window>());

            var created = new Mock <Window>();

            created.Setup(w => w.Type).Returns(vsWindowType.vsWindowTypeDocument);
            created.Setup(w => w.Document).Returns(documentMock.Object);
            created.Setup(w => w.DTE).Returns(dte2Mock.Object);

            // Act

            service.WindowCreated(created.Object);

            // Assert

            metadataManagerMock.Verify(m => m.Synchronize(documents, false));
        }
コード例 #2
0
        public void CreatingDocumentWindowWithEmptyMetadataCollectionActivatesActivatedDocument()
        {
            // Arrange

            const string documentName = "DocumentName";

            var metadataManagerMock = new Mock <IDocumentMetadataManager>();

            metadataManagerMock.Setup(m => m.ActiveDocumentMetadata.IsEmpty).Returns(true);

            var service = new WindowEventsService(metadataManagerMock.Object);

            var created = Mock.Of <Window>(w =>
                                           w.Type == vsWindowType.vsWindowTypeDocument &&

                                           w.Document == Mock.Of <Document>(d =>
                                                                            d.ActiveWindow == Mock.Of <Window>() &&
                                                                            d.FullName == documentName) &&

                                           w.DTE == Mock.Of <DTE>(dte =>
                                                                  dte.Documents == Mock.Of <Documents>()));

            // Act

            service.WindowCreated(created);

            // Assert

            metadataManagerMock.Verify(m => m.Activate(documentName));
        }
コード例 #3
0
        public void ActivatedDocumentIsActivated()
        {
            // Arrange

            const string documentName = "DocumentName";

            var metadataManagerMock = new Mock <IDocumentMetadataManager>();
            var service             = new WindowEventsService(metadataManagerMock.Object);

            var documentMock = new Mock <Document>();

            documentMock.Setup(d => d.ActiveWindow).Returns(Mock.Of <Window>());
            documentMock.Setup(d => d.FullName).Returns(documentName);

            var gotFocus = new Mock <Window>();

            gotFocus.Setup(w => w.Type).Returns(vsWindowType.vsWindowTypeDocument);
            gotFocus.Setup(w => w.Document).Returns(documentMock.Object);

            // Act

            service.WindowActivated(gotFocus.Object, null);

            // Assert

            metadataManagerMock.Verify(m => m.Activate(documentName));
        }
コード例 #4
0
        public void ClosingNonDocumentWindowDoesNotSynchronizesDocumentMetadata(
            vsWindowType windowType)
        {
            // Arrange

            var metadataManagerMock = new Mock <IDocumentMetadataManager>();
            var service             = new WindowEventsService(metadataManagerMock.Object);

            var created = new Mock <Window>();

            created.Setup(w => w.Type).Returns(windowType);

            // Act

            service.WindowClosing(created.Object);

            // Assert

            created.Verify(w => w.DTE, Times.Never);

            metadataManagerMock.Verify(m => m.Synchronize(
                                           null,
                                           It.IsAny <bool>()),
                                       Times.Never);

            metadataManagerMock.Verify(m => m.Synchronize(
                                           It.IsAny <Documents>(),
                                           It.IsAny <bool>()),
                                       Times.Never);
        }
コード例 #5
0
        public void NonDocumentWindowActivationDoesNotActivateDocumentMetadata(
            vsWindowType windowType)
        {
            // Arrange

            var metadataManagerMock = new Mock <IDocumentMetadataManager>();
            var service             = new WindowEventsService(metadataManagerMock.Object);

            var gotFocus = new Mock <Window>();

            gotFocus.Setup(w => w.Type).Returns(windowType);

            // Act

            service.WindowActivated(gotFocus.Object, null);

            // Assert

            gotFocus.Verify(w => w.Document, Times.Never);

            metadataManagerMock
            .Verify(m => m.Activate(null),
                    Times.Never);

            metadataManagerMock
            .Verify(m => m.Activate(It.IsAny <string>()),
                    Times.Never);
        }
コード例 #6
0
        public void CreatingDocumentWindowWithNonEmptyMetadataCollectionAddsAndActivatesDocument()
        {
            // Arrange

            const string documentFullName = "DocumentFullName";

            var info = new DocumentMetadataInfo
            {
                FullName           = documentFullName,
                ProjectDisplayName = "ProjectDisplayName",
                ProjectFullName    = "ProjectFullName"
            };

            var metadataManagerMock = new Mock <IDocumentMetadataManager>();

            metadataManagerMock.Setup(m => m.ActiveDocumentMetadata.IsEmpty).Returns(false);

            var service  = new WindowEventsService(metadataManagerMock.Object);
            var document = CreateDocumentWithInfo(info);

            var created = Mock.Of <Window>(w =>
                                           w.Type == vsWindowType.vsWindowTypeDocument &&
                                           w.Document == document);

            // Act

            service.WindowCreated(created);

            // Assert

            metadataManagerMock.Verify(m => m.Add(info));
            metadataManagerMock.Verify(m => m.Activate(documentFullName));
        }
コード例 #7
0
        public void CreatingWindowWithNullDocumentDoesNotThrowException()
        {
            // Arrange

            var metadataManagerMock = new Mock <IDocumentMetadataManager>();
            var service             = new WindowEventsService(metadataManagerMock.Object);

            var created = Mock.Of <Window>(w =>
                                           w.Type == vsWindowType.vsWindowTypeDocument);

            // Act, Assert

            Assert.DoesNotThrow(() => service.WindowCreated(created));
        }
コード例 #8
0
        public void ActivateOccursAfterSynchronizationWhenWindowIsCreated()
        {
            // Arrange

            var synchronized = false;
            var synchronizedWhenUpdatingActivatedTime = false;

            var metadataManagerMock = new Mock <IDocumentMetadataManager>();

            metadataManagerMock.Setup(m => m.ActiveDocumentMetadata.IsEmpty).Returns(true);

            metadataManagerMock
            .Setup(m => m.Synchronize(
                       It.IsAny <Documents>(),
                       false))
            .Callback(() => synchronized = true);

            // Check that Activate is called after Synchronize: the value of
            // synchronizedWhenUpdatingActivatedTime will be true only if
            // Activate is called after Synchronize
            metadataManagerMock.Setup(m => m.Activate(It.IsAny <string>()))
            .Callback(() => synchronizedWhenUpdatingActivatedTime = synchronized);

            var service = new WindowEventsService(metadataManagerMock.Object);

            var created = Mock.Of <Window>(w =>
                                           w.Type == vsWindowType.vsWindowTypeDocument &&

                                           w.Document == Mock.Of <Document>(d =>
                                                                            d.ActiveWindow == Mock.Of <Window>() &&
                                                                            d.FullName == "DocumentName") &&

                                           w.DTE == Mock.Of <DTE>(dte =>
                                                                  dte.Documents == Mock.Of <Documents>()));

            // Act

            service.WindowCreated(created);

            // Assert

            metadataManagerMock
            .Verify(m => m.Synchronize(
                        It.IsAny <Documents>(),
                        false));

            metadataManagerMock.Verify(m => m.Activate(It.IsAny <string>()));

            Assert.IsTrue(synchronizedWhenUpdatingActivatedTime);
        }
コード例 #9
0
        public void ActivateWithNullDocumentDoesNotThrowException()
        {
            // Arrange

            var metadataManagerMock = new Mock <IDocumentMetadataManager>();
            var service             = new WindowEventsService(metadataManagerMock.Object);

            var gotFocus = Mock.Of <Window>(w =>
                                            w.Type == vsWindowType.vsWindowTypeDocument);

            // Act, Assert

            Assert.DoesNotThrow(() => service.WindowActivated(
                                    gotFocus,
                                    Mock.Of <Window>()));
        }
コード例 #10
0
        public void ClosingDocumentWindowSetsUsageOrder()
        {
            // Arrange

            var metadataManagerMock = new Mock <IDocumentMetadataManager>();
            var service             = new WindowEventsService(metadataManagerMock.Object);

            var created = Mock.Of <Window>(w =>
                                           w.Type == vsWindowType.vsWindowTypeDocument &&
                                           w.DTE == Mock.Of <DTE>(d =>
                                                                  d.Documents == Mock.Of <Documents>()));

            // Act

            service.WindowClosing(created);

            // Assert

            metadataManagerMock
            .Verify(m => m.Synchronize(
                        It.IsAny <Documents>(),
                        true));
        }
コード例 #11
0
        public void NonDocumentWindowCreatedDoesNotAddDocument(
            vsWindowType windowType)
        {
            // Arrange

            var metadataManagerMock = new Mock <IDocumentMetadataManager>();
            var service             = new WindowEventsService(metadataManagerMock.Object);

            var created = new Mock <Window>();

            created.Setup(w => w.Type).Returns(windowType);

            // Act

            service.WindowCreated(created.Object);

            // Assert

            created.Verify(w => w.Document, Times.Never);

            metadataManagerMock
            .Verify(m => m.Add(It.IsAny <DocumentMetadataInfo>()),
                    Times.Never);
        }