public void WillAddImportanceDirectiveIfImportant()
            {
                var testable = new TestableCssImageTransformer();
                var css      =
                    @"
.localnavigation {    
    background: url('http://i1.social.microsoft.com/contentservice/798d3f43-7d1e-41a1-9b09-9dad00d8a996/subnav_technet.png') no-repeat 0 -30px;
    width: 50;
}";
                var expected =
                    @"
.localnavigation {    
    background: url('spriteUrl') no-repeat 0 -30px;
    width: 50;
;background-position: -120px 0 !important;}";
                var sprite = new SpritedImage(1, new BackgroundImageClass(css, 0)
                {
                    Important = true
                }, null)
                {
                    Url = "spriteUrl", Position = 120
                };

                var result = testable.ClassUnderTest.InjectSprite(css, sprite);

                Assert.Equal(expected, result);
            }
            public void WillAddUrlWithSpriteUrlAndIfItIsNotInCss()
            {
                var testable = new TestableCssImageTransformer();
                var css      =
                    @"
.Localnavigation {    
    background-position: 0 -30px;
    width: 50;
}";
                var expected =
                    @"
.Localnavigation {    
    background-position: 0 -30px;
    width: 50;
;background-image: url('spriteUrl');background-position: -120px 0;}";
                var sprite = new SpritedImage(1, new BackgroundImageClass(css, 0)
                {
                    ImageUrl = "nonRRsprite"
                }, null)
                {
                    Url = "spriteUrl", Position = 120
                };

                var result = testable.ClassUnderTest.InjectSprite(css, sprite);

                Assert.Equal(expected, result);
            }
Ejemplo n.º 3
0
            public void WillDefaultYOffsetToZero()
            {
                var testable = new TestableCssImageTransformer();
                var css      =
                    @"
.localnavigation {    
    background: url('http://i1.social.microsoft.com/contentservice/798d3f43-7d1e-41a1-9b09-9dad00d8a996/subnav_technet.png') no-repeat;
    width: 50;
}";
                var expected =
                    @"
.localnavigation {    
    background: url('spriteUrl') no-repeat;
    width: 50;
;background-position: -120px 0;}";
                var sprite = new SpritedImage(1, new BackgroundImageClass(css, "http://server/content/style.css"), null)
                {
                    Url = "spriteUrl", Position = 120
                };


                var result = testable.ClassUnderTest.InjectSprite(css, sprite);

                Assert.Equal(expected, result);
            }
Ejemplo n.º 4
0
            public void WillReturnAllImagesOrderedByColor()
            {
                var testable = new TestableSpriteContainer();
                var image1   = new SpritedImage(20, null, null);
                var image2   = new SpritedImage(10, null, null);

                testable.ClassUnderTest.AddSpritedImage(image1);
                testable.ClassUnderTest.AddSpritedImage(image2);

                var results = testable.ClassUnderTest.ToArray();

                Assert.Equal(image1, results[1]);
                Assert.Equal(image2, results[0]);
            }
Ejemplo n.º 5
0
            public void WillInjectSpritesToCssAfterFlush()
            {
                var testable = new TestableCssReducer();
                var image1   = new BackgroundImageClass("", "http://server/content/style.css")
                {
                    ImageUrl = "image1"
                };
                var image2 = new BackgroundImageClass("", "http://server/content/style.css")
                {
                    ImageUrl = "image2"
                };
                var css             = "css";
                var mockWebResponse = new Mock <WebResponse>();

                mockWebResponse.Setup(x => x.GetResponseStream()).Returns(new MemoryStream(new UTF8Encoding().GetBytes(css)));
                testable.Mock <IWebClientWrapper>().Setup(x => x.Download <CssResource>(It.IsAny <string>())).Returns(mockWebResponse.Object);
                testable.Mock <ICssImageTransformer>().Setup(x => x.ExtractImageUrls(ref css, It.IsAny <string>())).Returns(new[] { image1, image2 });
                var sprite1 = new SpritedImage(1, null, null)
                {
                    Position = -100
                };
                var sprite2 = new SpritedImage(2, null, null)
                {
                    Position = -100
                };
                var sprites = new List <SpritedImage> {
                    sprite1, sprite2
                };

                testable.Mock <ISpriteManager>().Setup(x => x.GetEnumerator()).Returns(sprites.GetEnumerator());
                bool flushIsCalled = false;
                bool flushCalled   = false;

                testable.Mock <ISpriteManager>().Setup(x => x.Flush()).Callback(() => flushIsCalled = true);
                testable.Mock <ICssImageTransformer>().Setup(x => x.InjectSprite(It.IsAny <string>(), It.IsAny <SpritedImage>())).Callback(() => flushCalled = flushIsCalled);

                testable.ClassUnderTest.Process("http://host/css2.css");

                testable.Mock <ICssImageTransformer>().Verify(x => x.InjectSprite(It.IsAny <string>(), sprite1), Times.Once());
                testable.Mock <ICssImageTransformer>().Verify(x => x.InjectSprite(It.IsAny <string>(), sprite2), Times.Once());
                Assert.True(flushCalled);
            }
            public void WillNotReplaceClassWithSameBodyAndDifferentSelector()
            {
                var testable = new TestableCssImageTransformer();
                var css      =
                    @"
.localnavigation {    
    background: url('http://i1.social.microsoft.com/contentservice/798d3f43-7d1e-41a1-9b09-9dad00d8a996/subnav_technet.png') no-repeat 0 -30px;
    width: 50;
}

.localnavigation2 {    
    background: url('http://i1.social.microsoft.com/contentservice/798d3f43-7d1e-41a1-9b09-9dad00d8a996/subnav_technet.png') no-repeat 0 -30px;
    width: 50;
}";
                var imageCss = @".localnavigation {    
    background: url('http://i1.social.microsoft.com/contentservice/798d3f43-7d1e-41a1-9b09-9dad00d8a996/subnav_technet.png') no-repeat 0 -30px;
    width: 50;
}";
                var expected =
                    @"
.localnavigation {    
    background: url('spriteUrl') no-repeat 0 -30px;
    width: 50;
;background-position: -120px 0;}

.localnavigation2 {    
    background: url('http://i1.social.microsoft.com/contentservice/798d3f43-7d1e-41a1-9b09-9dad00d8a996/subnav_technet.png') no-repeat 0 -30px;
    width: 50;
}";
                var sprite = new SpritedImage(1, new BackgroundImageClass(imageCss, 0), null)
                {
                    Url = "spriteUrl", Position = 120
                };

                var result = testable.ClassUnderTest.InjectSprite(css, sprite);

                Assert.Equal(expected, result);
            }
            public void WillSetImageAbsoluteUrlFromBackgroundImageStyleAndReplaceRelativeUrl()
            {
                var css =
                    @"
.LocalNavigation .TabOn,.LocalNavigation .TabOn:hover {
    background-image: url(""subnav_on_technet.png"");
}";
                var expectedCss =
                    @"
.LocalNavigation .TabOn,.LocalNavigation .TabOn:hover {
    background-image: url(""newUrl"");
;background-position: -0px 0;}";
                var testable        = new TestableCssImageTransformer();
                var backgroundImage = new BackgroundImageClass(css, 0);
                var sprite          = new SpritedImage(1, backgroundImage, null)
                {
                    Url = "newUrl", Position = 0
                };

                var result = testable.ClassUnderTest.InjectSprite(css, sprite);

                Assert.Equal(expectedCss, result);
            }
Ejemplo n.º 8
0
 public void AddSpritedImage(SpritedImage image)
 {
     images.Add(image);
 }