Ejemplo n.º 1
0
        public void Create_CreatesFlexiCardBlock()
        {
            // Arrange
            const int                      dummyColumn                = 2;
            var                            dummyLine                  = new StringSlice("dummyText", 3, 8);
            const string                   dummyUrl                   = "dummyUrl";
            const string                   dummyBackgroundIcon        = "dummyBackgroundIcon";
            IFlexiCardBlockOptions         dummyDefaultCardOptions    = _mockRepository.Create <IFlexiCardBlockOptions>().Object;
            Mock <IFlexiCardsBlockOptions> mockFlexiCardsBlockOptions = _mockRepository.Create <IFlexiCardsBlockOptions>();

            mockFlexiCardsBlockOptions.Setup(f => f.DefaultCardOptions).Returns(dummyDefaultCardOptions);
            Mock <BlockParser>   dummyBlockParser          = _mockRepository.Create <BlockParser>();
            ProxyFlexiCardsBlock dummyProxyFlexiCardsBlock = CreateProxyFlexiCardsBlock(mockFlexiCardsBlockOptions.Object, blockParser: dummyBlockParser.Object);
            BlockProcessor       dummyBlockProcessor       = MarkdigTypesFactory.CreateBlockProcessor();

            // Following 3 lines set dummyBlockProcessor.CurrentContainer
            dummyBlockParser.Setup(b => b.TryContinue(dummyBlockProcessor, dummyProxyFlexiCardsBlock)).Returns(BlockState.ContinueDiscard);
            dummyBlockProcessor.Open(dummyProxyFlexiCardsBlock);
            dummyBlockProcessor.ProcessLine(new StringSlice(string.Empty));
            dummyBlockProcessor.Column = dummyColumn;
            dummyBlockProcessor.Line   = dummyLine;
            var dummyAttributes = new ReadOnlyDictionary <string, string>(new Dictionary <string, string>());
            Mock <IFlexiCardBlockOptions> mockFlexiCardBlockOptions = _mockRepository.Create <IFlexiCardBlockOptions>();

            mockFlexiCardBlockOptions.Setup(f => f.Url).Returns(dummyUrl);
            mockFlexiCardBlockOptions.Setup(f => f.BackgroundIcon).Returns(dummyBackgroundIcon);
            mockFlexiCardBlockOptions.Setup(f => f.Attributes).Returns(dummyAttributes);
            Mock <IBlockOptionsFactory <IFlexiCardBlockOptions> > mockFlexiCardBlockOptionsFactory = _mockRepository.
                                                                                                     Create <IBlockOptionsFactory <IFlexiCardBlockOptions> >();

            mockFlexiCardBlockOptionsFactory.Setup(f => f.Create(dummyDefaultCardOptions, dummyBlockProcessor)).Returns(mockFlexiCardBlockOptions.Object);
            FlexiCardBlockFactory testSubject = CreateFlexiCardBlockFactory(mockFlexiCardBlockOptionsFactory.Object);

            // Act
            FlexiCardBlock result = testSubject.Create(dummyBlockProcessor, dummyBlockParser.Object);

            // Assert
            _mockRepository.VerifyAll();
            Assert.Equal(dummyUrl, result.Url);
            Assert.Equal(dummyBackgroundIcon, result.BackgroundIcon);
            Assert.Same(dummyAttributes, result.Attributes);
            Assert.Same(dummyBlockParser.Object, result.Parser);
            Assert.Equal(dummyColumn, result.Column);
            Assert.Equal(dummyLine.Start, result.Span.Start);
            Assert.Equal(0, result.Span.End);
        }
        public void Create_CreatesFlexiCardsBlock()
        {
            // Arrange
            var                            dummySpan                  = new SourceSpan(6, 19);
            const int                      dummyLine                  = 5;
            const int                      dummyColumn                = 2;
            BlockParser                    dummyBlockParser           = _mockRepository.Create <BlockParser>().Object;
            const string                   dummyBlockName             = "dummyBlockName";
            const string                   dummyResolvedBlockName     = "dummyResolvedBlockName";
            const FlexiCardBlockSize       dummyCardSize              = FlexiCardBlockSize.Medium;
            var                            dummyAttributes            = new ReadOnlyDictionary <string, string>(new Dictionary <string, string>());
            Mock <IFlexiCardsBlockOptions> mockFlexiCardsBlockOptions = _mockRepository.Create <IFlexiCardsBlockOptions>();

            mockFlexiCardsBlockOptions.Setup(f => f.BlockName).Returns(dummyBlockName);
            mockFlexiCardsBlockOptions.Setup(f => f.CardSize).Returns(dummyCardSize);
            mockFlexiCardsBlockOptions.Setup(f => f.Attributes).Returns(dummyAttributes);
            ProxyFlexiCardsBlock dummyProxyFlexiCardsBlock = CreateProxyFlexiCardsBlock(mockFlexiCardsBlockOptions.Object, blockParser: dummyBlockParser);

            dummyProxyFlexiCardsBlock.Line   = dummyLine;
            dummyProxyFlexiCardsBlock.Column = dummyColumn;
            dummyProxyFlexiCardsBlock.Span   = dummySpan;
            Mock <FlexiCardsBlockFactory> mockTestSubject = CreateMockFlexiCardsBlockFactory();

            mockTestSubject.CallBase = true;
            mockTestSubject.Setup(t => t.ResolveBlockName(dummyBlockName)).Returns(dummyResolvedBlockName);
            mockTestSubject.Setup(t => t.ValidateCardSize(dummyCardSize));
            mockTestSubject.Protected().Setup("MoveChildren", dummyProxyFlexiCardsBlock, ItExpr.IsAny <FlexiCardsBlock>());

            // Act
            FlexiCardsBlock result = mockTestSubject.Object.Create(dummyProxyFlexiCardsBlock, null);

            // Assert
            _mockRepository.VerifyAll();
            Assert.Equal(dummyResolvedBlockName, result.BlockName);
            Assert.Equal(dummyCardSize, result.CardSize);
            Assert.Same(dummyAttributes, result.Attributes);
            Assert.Same(dummyBlockParser, result.Parser);
            Assert.Equal(dummyColumn, result.Column);
            Assert.Equal(dummyLine, result.Line);
            Assert.Equal(dummySpan, result.Span);
        }
        public void CreateProxyFencedBlock_CreatesProxyFencedBlock()
        {
            // Arrange
            const int      dummyOpeningFenceIndent    = 5;
            const int      dummyOpeningFenceCharCount = 6;
            const int      dummyColumn         = 2;
            var            dummyLine           = new StringSlice("dummyText", 3, 8);
            BlockProcessor dummyBlockProcessor = MarkdigTypesFactory.CreateBlockProcessor();

            dummyBlockProcessor.Column = dummyColumn;
            dummyBlockProcessor.Line   = dummyLine;
            Mock <BlockParser>      dummyBlockParser            = _mockRepository.Create <BlockParser>();
            IFlexiCardsBlockOptions dummyFlexiCardsBlockOptions = _mockRepository.Create <IFlexiCardsBlockOptions>().Object;
            Mock <IOptionsService <IFlexiCardsBlockOptions, IFlexiCardsBlocksExtensionOptions> > mockOptionsService = _mockRepository.
                                                                                                                      Create <IOptionsService <IFlexiCardsBlockOptions, IFlexiCardsBlocksExtensionOptions> >();

            mockOptionsService.Setup(f => f.CreateOptions(dummyBlockProcessor)).
            Returns((dummyFlexiCardsBlockOptions, (IFlexiCardsBlocksExtensionOptions)null));
            Mock <FlexiCardsBlockFactory> mockTestSubject = CreateMockFlexiCardsBlockFactory(mockOptionsService.Object);

            mockTestSubject.CallBase = true;
            mockTestSubject.Setup(t => t.ValidateDefaultCardOptions(dummyFlexiCardsBlockOptions));

            // Act
            ProxyFlexiCardsBlock result = mockTestSubject.Object.CreateProxyFencedBlock(dummyOpeningFenceIndent,
                                                                                        dummyOpeningFenceCharCount,
                                                                                        dummyBlockProcessor,
                                                                                        dummyBlockParser.Object);

            // Assert
            _mockRepository.VerifyAll();
            Assert.Same(dummyFlexiCardsBlockOptions, result.FlexiCardsBlockOptions);
            Assert.Equal(dummyOpeningFenceIndent, result.OpeningFenceIndent);
            Assert.Equal(dummyOpeningFenceCharCount, result.OpeningFenceCharCount);
            Assert.Same(dummyBlockParser.Object, result.Parser);
            Assert.Equal(dummyColumn, result.Column);
            Assert.Equal(dummyLine.Start, result.Span.Start);
            Assert.Equal(0, result.Span.End);
        }