test.pl.chilldev.web.spring.config.HandlePageModelBeanDefinitionParserTest.java Source code

Java tutorial

Introduction

Here is the source code for test.pl.chilldev.web.spring.config.HandlePageModelBeanDefinitionParserTest.java

Source

/**
 * This file is part of the ChillDev-Web.
 *
 * @license http://mit-license.org/ The MIT license
 * @copyright 2014  by Rafa Wrzeszcz - Wrzasq.pl.
 */

package test.pl.chilldev.web.spring.config;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;

import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import static org.mockito.Mockito.*;

import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.GenericBeanDefinition;
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.beans.factory.xml.XmlReaderContext;

import org.w3c.dom.Element;

import pl.chilldev.web.core.markup.Generator;
import pl.chilldev.web.core.page.PageMetaModel;

import pl.chilldev.web.spring.config.HandlePageModelBeanDefinitionParser;
import pl.chilldev.web.spring.context.PageMetaModelFactoryBean;

@RunWith(MockitoJUnitRunner.class)
public class HandlePageModelBeanDefinitionParserTest {
    @Mock
    private Element element;

    private XmlReaderContext readerContext;

    @Mock
    private BeanDefinitionRegistry registry;

    @Before
    public void setUp() {
        XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this.registry);
        this.readerContext = new XmlReaderContext(null, null, null, null, reader, null);
    }

    @Test
    public void parse() {
        GenericBeanDefinition pageMetaModelFactoryBean = new GenericBeanDefinition();
        HandlePageModelBeanDefinitionParser parser = new HandlePageModelBeanDefinitionParser(
                pageMetaModelFactoryBean);

        when(this.element.hasAttribute("xhtml")).thenReturn(false);

        parser.parse(this.element, new ParserContext(this.readerContext, null));

        verify(this.registry).registerBeanDefinition(PageMetaModelFactoryBean.class.getName(),
                pageMetaModelFactoryBean);
        verify(this.registry).registerBeanDefinition(eq(PageMetaModel.class.getName()), isA(BeanDefinition.class));
        verify(this.registry, never()).registerBeanDefinition(eq(Generator.class.getName()),
                isA(BeanDefinition.class));
    }

    @Test
    public void parseWithXhtml() {
        GenericBeanDefinition pageMetaModelFactoryBean = new GenericBeanDefinition();
        HandlePageModelBeanDefinitionParser parser = new HandlePageModelBeanDefinitionParser(
                pageMetaModelFactoryBean);

        when(this.element.hasAttribute("xhtml")).thenReturn(true);
        when(this.element.getAttribute("xhtml")).thenReturn("false");

        parser.parse(this.element, new ParserContext(this.readerContext, null));

        verify(this.registry).registerBeanDefinition(PageMetaModelFactoryBean.class.getName(),
                pageMetaModelFactoryBean);
        verify(this.registry).registerBeanDefinition(eq(PageMetaModel.class.getName()), isA(BeanDefinition.class));
        verify(this.registry).registerBeanDefinition(eq(Generator.class.getName()), isA(BeanDefinition.class));
    }
}