public void TestDecorateParameterName() {
            var manager = new I18NManager();

            var testName = new Mock<INamedFacet>();
            testName.Setup(n => n.FacetType).Returns(typeof (INamedFacet));

            var testHolder = new Mock<IActionParameterSpec>();
            var identifier = new Mock<IIdentifier>();
            var testResources = new Mock<ResourceManager>();

            testResources.Setup(r => r.GetString(It.Is<string>(s => s == "action_parameter1_name"))).Returns("I18N parameter name");

            manager.Resources = testResources.Object;

            testHolder.Setup(h => h.Identifier).Returns(identifier.Object);

            var facet = manager.Decorate(testName.Object, testHolder.Object);

            Assert.IsInstanceOfType(facet, typeof (NamedFacetI18N));
            Assert.AreEqual("I18N parameter name", ((NamedFacetI18N) facet).Value);
        }
        public void TestDecoratePropertyName() {
            var manager = new I18NManager();

            var testName = new Mock<INamedFacet>();
            testName.Setup(n => n.FacetType).Returns(typeof (INamedFacet));

            var testHolder = new Mock<ISpecification>();
            var identifier = new Mock<IIdentifier>();

            identifier.Setup(i => i.IsField).Returns(true);

            var testResources = new Mock<ResourceManager>();

            testResources.Setup(r => r.GetString(It.Is<string>(s => s == "_property_name"))).Returns("I18N property name");

            manager.Resources = testResources.Object;

            testHolder.Setup(h => h.Identifier).Returns(identifier.Object);

            var facet = manager.Decorate(testName.Object, testHolder.Object);

            Assert.IsInstanceOfType(facet, typeof (NamedFacetI18N));
            Assert.AreEqual("I18N property name", ((NamedFacetI18N) facet).Value);
        }
        public void TestUndecoratedFacet() {
            var manager = new I18NManager();

            var testTitle = new Mock<ITitleFacet>();
            testTitle.Setup(n => n.FacetType).Returns(typeof (ITitleFacet));

            var testHolder = new Mock<ISpecification>();

            var facet = manager.Decorate(testTitle.Object, testHolder.Object);

            Assert.IsInstanceOfType(facet, typeof (ITitleFacet));
            Assert.AreEqual(testTitle.Object, facet);
        }
        public void TestFacetTypes() {
            var manager = new I18NManager();

            var facets = manager.ForFacetTypes;

            Assert.IsTrue(facets.SequenceEqual(new[] {typeof (INamedFacet), typeof (IDescribedAsFacet)}));
        }
        public void TestMissingResourceException() {
            var manager = new I18NManager();

            var testName = new Mock<INamedFacet>();
            testName.Setup(n => n.FacetType).Returns(typeof (INamedFacet));

            var testHolder = new Mock<ISpecification>();
            var identifier = new Mock<IIdentifier>();

            identifier.Setup(i => i.IsField).Returns(true);

            var testResources = new Mock<ResourceManager>();

            testResources.Setup(r => r.GetString(It.IsAny<string>())).Throws<MissingManifestResourceException>();

            manager.Resources = testResources.Object;

            testHolder.Setup(h => h.Identifier).Returns(identifier.Object);

            var facet = manager.Decorate(testName.Object, testHolder.Object);

            Assert.IsNull(facet);
        }
        public void TestSystemOrNakedObjectsResource() {
            var manager = new I18NManager();

            var testName = new Mock<INamedFacet>();
            testName.Setup(n => n.FacetType).Returns(typeof (INamedFacet));

            var testHolder = new Mock<ISpecification>();
            var identifier = new Mock<IIdentifier>();

            identifier.Setup(i => i.IsField).Returns(true);
            identifier.Setup(i => i.ToIdentityString(It.IsAny<IdentifierDepth>())).Returns("System.");

            var testResources = new Mock<ResourceManager>();

            manager.Resources = testResources.Object;

            testHolder.Setup(h => h.Identifier).Returns(identifier.Object);

            var facet = manager.Decorate(testName.Object, testHolder.Object);

            Assert.IsNull(facet);

            identifier.Setup(i => i.ToIdentityString(It.IsAny<IdentifierDepth>())).Returns("NakedObjects.");

            facet = manager.Decorate(testName.Object, testHolder.Object);

            Assert.IsNull(facet);
        }
        public void TestDecorateActionDescription() {
            var manager = new I18NManager();

            var testDescribed = new Mock<IDescribedAsFacet>();
            testDescribed.Setup(n => n.FacetType).Returns(typeof (IDescribedAsFacet));

            var testHolder = new Mock<ISpecification>();
            var identifier = new Mock<IIdentifier>();

            identifier.Setup(i => i.IsField).Returns(false);

            var testResources = new Mock<ResourceManager>();

            testResources.Setup(r => r.GetString(It.Is<string>(s => s == "_action_description"))).Returns("I18N action description");

            manager.Resources = testResources.Object;

            testHolder.Setup(h => h.Identifier).Returns(identifier.Object);

            var facet = manager.Decorate(testDescribed.Object, testHolder.Object);

            Assert.IsInstanceOfType(facet, typeof (DescribedAsFacetI18N));
            Assert.AreEqual("I18N action description", ((DescribedAsFacetI18N) facet).Value);
        }