package org.bonitasoft.livingapps.menu; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.BDDMockito.given; import org.bonitasoft.engine.api.ApplicationAPI; import org.bonitasoft.engine.business.application.ApplicationMenu; import org.bonitasoft.engine.business.application.impl.ApplicationMenuImpl; import org.bonitasoft.engine.business.application.impl.ApplicationPageImpl; import org.bonitasoft.livingapps.menu.MenuFactory; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) public class MenuFactoryTest { ApplicationMenuImpl aMenuLink; ApplicationMenuImpl aMenuContainer; ApplicationMenuImpl aNestedMenuLink; ApplicationPageImpl aPage = new ApplicationPageImpl(1L, 2L, "token"); @Mock(answer = Answers.RETURNS_MOCKS) ApplicationAPI applicationApi; @Before public void beforeEach() throws Exception { aMenuLink = new ApplicationMenuImpl("link", 1L, 2L, 1); aMenuLink.setId(1L); aMenuContainer = new ApplicationMenuImpl("container", 1L, null, 2); aMenuContainer.setId(2L); aNestedMenuLink = new ApplicationMenuImpl("nested-link", 1L, 2L, 2); aNestedMenuLink.setId(3L); aNestedMenuLink.setParentId(2L); given(applicationApi.getApplicationPage(aMenuLink.getApplicationPageId())).willReturn(aPage); } @Test public void should_create_a_MenuLink_with_the_page_token_it_is_pointing_at_when_menu_is_a_link() throws Exception { MenuFactory factory = new MenuFactory(applicationApi); assertThat(factory.create(asList((ApplicationMenu) aMenuLink)).get(0).getHtml()) .isEqualTo("<li><a href=\"token\">link</a></li>"); } @Test public void should_create_an_empty_MenuContainer() throws Exception { MenuFactory factory = new MenuFactory(applicationApi); assertThat(factory.create(asList((ApplicationMenu) aMenuContainer)).get(0).getHtml()) .isEqualTo(new StringBuilder() .append("<li class=\"dropdown\"><a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">container <span class=\"caret\"></span></a>") .append("<ul class=\"dropdown-menu\" role=\"menu\">") .append("</ul></li>").toString()); } @Test public void should_create_a_MenuContainer_containing_a_MenuLink() throws Exception { MenuFactory factory = new MenuFactory(applicationApi); assertThat(factory.create(asList((ApplicationMenu) aMenuContainer, aNestedMenuLink)).get(0).getHtml()) .isEqualTo(new StringBuilder() .append("<li class=\"dropdown\"><a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">container <span class=\"caret\"></span></a>") .append("<ul class=\"dropdown-menu\" role=\"menu\">") .append("<li><a href=\"token\">nested-link</a></li>") .append("</ul></li>").toString()); } }