1+ package com .sdl .webapp .common .impl .taglib .xpm ;
2+
3+ import com .sdl .webapp .common .api .WebRequestContext ;
4+ import com .sdl .webapp .common .api .localization .Localization ;
5+ import com .sdl .webapp .common .api .model .RegionModel ;
6+ import com .sdl .webapp .common .api .model .region .RegionModelImpl ;
7+ import com .sdl .webapp .common .markup .html .HtmlNode ;
8+ import com .sdl .webapp .common .util .ApplicationContextHolder ;
9+ import org .junit .Test ;
10+ import org .junit .runner .RunWith ;
11+ import org .springframework .context .annotation .Bean ;
12+ import org .springframework .context .annotation .Configuration ;
13+ import org .springframework .test .context .ActiveProfiles ;
14+ import org .springframework .test .context .ContextConfiguration ;
15+ import org .springframework .test .context .junit4 .SpringJUnit4ClassRunner ;
16+ import org .springframework .test .context .support .AnnotationConfigContextLoader ;
17+
18+ import java .util .HashMap ;
19+
20+ import static org .junit .Assert .assertEquals ;
21+ import static org .mockito .Matchers .anyString ;
22+ import static org .mockito .Mockito .doReturn ;
23+ import static org .mockito .Mockito .mock ;
24+ import static org .mockito .Mockito .when ;
25+
26+ @ RunWith (SpringJUnit4ClassRunner .class )
27+ @ ContextConfiguration (loader = AnnotationConfigContextLoader .class )
28+ @ ActiveProfiles ("test" )
29+ public class XpmButtonTagTest {
30+
31+ @ Test
32+ public void shouldGenerateXpmButtonHtmlForNonInclude () {
33+ //given
34+ RegionModel region = mock (RegionModel .class );
35+ doReturn (new HashMap <String , Object >() {{
36+ put (RegionModelImpl .INCLUDED_FROM_PAGE_TITLE_XPM_METADATA_KEY , "INCLUDED_FROM_PAGE_TITLE_XPM_METADATA_KEY" );
37+ put (RegionModelImpl .INCLUDED_FROM_PAGE_FILE_NAME_XPM_METADATA_KEY , "INCLUDED_FROM_PAGE_FILE_NAME_XPM_METADATA_KEY" );
38+ put (RegionModelImpl .INCLUDED_FROM_PAGE_ID_XPM_METADATA_KEY , "INCLUDED_FROM_PAGE_ID_XPM_METADATA_KEY" );
39+ }}).when (region ).getXpmMetadata ();
40+
41+ XpmButtonTag tag = new XpmButtonTag ();
42+ tag .setRegion (region );
43+ tag .setCssClass ("cssClass" );
44+
45+ //when
46+ HtmlNode markup = tag .generateXpmMarkup ();
47+
48+ //then
49+ assertEquals ("<div class=\" xpm-button cssClass\" >" +
50+ "<a href=\" localized-path\" class=\" fa-stack fa-lg\" title=\" Edit INCLUDED_FROM_PAGE_TITLE_XPM_METADATA_KEY\" >" +
51+ "<i class=\" fa fa-square fa-stack-2x\" ></i>" +
52+ "<i class=\" fa fa-pencil fa-inverse fa-stack-1x\" ></i>" +
53+ "</a>" +
54+ "</div>" , markup .renderHtml ());
55+ }
56+
57+
58+ @ Test
59+ public void shouldGenerateXpmButtonHtmlForInclude () {
60+ //given
61+ RegionModel region = mock (RegionModel .class );
62+ doReturn (new HashMap <String , Object >()).when (region ).getXpmMetadata ();
63+
64+ XpmButtonTag tag = new XpmButtonTag ();
65+ tag .setRegion (region );
66+ tag .setCssClass ("cssClass" );
67+
68+ //when
69+ HtmlNode markup = tag .generateXpmMarkup ();
70+
71+ //then
72+ assertEquals ("<div class=\" xpm-button cssClass\" >" +
73+ "<a href=\" javascript:history.back()\" class=\" fa-stack fa-lg\" title=\" Go Back\" >" +
74+ "<i class=\" fa fa-square fa-stack-2x\" ></i>" +
75+ "<i class=\" fa fa-arrow-left fa-inverse fa-stack-1x\" ></i>" +
76+ "</a>" +
77+ "</div>" , markup .renderHtml ());
78+ }
79+
80+ @ Configuration
81+ public static class SpringConfigurationContext {
82+
83+ @ Bean
84+ public ApplicationContextHolder applicationContextHolder () {
85+ return new ApplicationContextHolder ();
86+ }
87+
88+ @ Bean
89+ public WebRequestContext webRequestContext () {
90+ Localization localization = mock (Localization .class );
91+ when (localization .localizePath (anyString ())).thenReturn ("localized-path" );
92+
93+ WebRequestContext mock = mock (WebRequestContext .class );
94+ when (mock .getLocalization ()).thenReturn (localization );
95+ return mock ;
96+ }
97+ }
98+
99+ }
0 commit comments