Package org.jtalks.jcommune.plugin.api.web.validation.validators

Source Code of org.jtalks.jcommune.plugin.api.web.validation.validators.BbCodeNestingValidatorTest

/**
* Copyright (C) 2011  JTalks.org Team
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
*/
package org.jtalks.jcommune.plugin.api.web.validation.validators;

import org.jtalks.jcommune.plugin.api.web.validation.annotations.BbCodeNesting;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;

public class BbCodeNestingValidatorTest {
    private BbCodeNestingValidator instance;
       
    @BeforeMethod
    public void initMocks() throws NoSuchFieldException {
        BbCodeNesting annotation = mock(BbCodeNesting.class);
        // limit nesting to 2
        when(annotation.maxNestingValue()).thenReturn(2);
        instance = new BbCodeNestingValidator();
        instance.initialize(annotation);
    }

    @Test
    public void nullAndEmptyStringShouldBeTreatedAsValid() {
        assertTrue(instance.isValid(null, null));
        assertTrue(instance.isValid("", null));
    }
   
    @Test(dataProvider = "validMessages")
    public void testValidMessages(String message, String assertinMessage) {
        assertTrue(instance.isValid(message, null), message + " - " + assertinMessage);
    }
   
    @Test(dataProvider = "invalidMessages")
    public void testInvalidMessages(String message, String assertionMessage) {
        assertFalse(instance.isValid(message, null), message + " - " + assertionMessage);
    }   
   
    @DataProvider
    public String[][] invalidMessages() {
        return new String[][] {
            {"[b][b][b]text", "Open tags without close tags are still counted when validating the nesteness."},
            {"[b][b][b]text[/b][/b][/b]", "Message with depth 3 "
                                        + "when depth limit is 2 should be considered as invalid."}
        };
    }
   
    @DataProvider
    public String[][] validMessages() {
        return new String[][] {
            {"[b][b]text[/b][/b]", "Testing boundary: message with depth 2 "
                                    + "when depth limit is 2 should be considered as valid."},
            {"[*][*][*][*][*]", "List items are not taking into account as nesting. "
                                + "Message should be considered as valid"},
            {"[/b][/b][/b][/b][/b]", "Close tags without respective open tags should be ignored in depth validation."
                                        + "Message should be considered as valid"},
            {"[b]a[/b]b[b]c[/b]d[b]e[/b]a[b]b[/b]c[b]d[/b]e", "Test long sequence of tags with nesting depth 1. "
                                                            + "The message shoud be treated as valid."},
            {"[z][z][z][z][z][z][z][z][z]", "In the depth validation only valid tags should be taken into account. "
                                            + "Invalid tags should be ignored and the message should be treated as valid."}
        };
    }
}
TOP

Related Classes of org.jtalks.jcommune.plugin.api.web.validation.validators.BbCodeNestingValidatorTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.