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));
        }
        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);
        }
        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>()));
        }