001
014
015 package com.liferay.portal.lar.test;
016
017 import com.liferay.portal.kernel.test.rule.DeleteAfterTestRun;
018 import com.liferay.portal.kernel.test.util.GroupTestUtil;
019 import com.liferay.portal.kernel.util.LongWrapper;
020 import com.liferay.portal.kernel.util.Time;
021 import com.liferay.portal.kernel.xml.Element;
022 import com.liferay.portal.kernel.xml.SAXReaderUtil;
023 import com.liferay.portal.kernel.zip.ZipWriter;
024 import com.liferay.portal.kernel.zip.ZipWriterFactoryUtil;
025 import com.liferay.portal.model.Group;
026 import com.liferay.portlet.PortletPreferencesImpl;
027 import com.liferay.portlet.exportimport.lar.ManifestSummary;
028 import com.liferay.portlet.exportimport.lar.PortletDataContext;
029 import com.liferay.portlet.exportimport.lar.PortletDataContextFactoryUtil;
030 import com.liferay.portlet.exportimport.lar.PortletDataHandler;
031 import com.liferay.portlet.exportimport.lar.PortletDataHandlerBoolean;
032
033 import java.util.Date;
034 import java.util.HashMap;
035 import java.util.LinkedHashMap;
036 import java.util.Map;
037
038 import org.junit.Assert;
039 import org.junit.Before;
040 import org.junit.Test;
041
042
045 public abstract class BasePortletDataHandlerTestCase {
046
047 @Before
048 public void setUp() throws Exception {
049 stagingGroup = GroupTestUtil.addGroup();
050
051 portletDataHandler = createPortletDataHandler();
052 portletId = getPortletId();
053 }
054
055 @Test
056 public void testPrepareManifestSummary() throws Exception {
057 initExport();
058
059 addStagedModels();
060
061 portletDataContext.setEndDate(getEndDate());
062
063 portletDataHandler.prepareManifestSummary(portletDataContext);
064
065 ManifestSummary manifestSummary =
066 portletDataContext.getManifestSummary();
067
068 Map<String, LongWrapper> modelAdditionCounters =
069 manifestSummary.getModelAdditionCounters();
070
071 Map<String, LongWrapper> expectedModelAdditionCounters = new HashMap<>(
072 modelAdditionCounters);
073
074 modelAdditionCounters.clear();
075
076 portletDataHandler.exportData(
077 portletDataContext, portletId, new PortletPreferencesImpl());
078
079 checkManifestSummary(expectedModelAdditionCounters);
080 }
081
082 protected void addBooleanParameter(
083 Map<String, String[]> parameterMap, String namespace, String name,
084 boolean value) {
085
086 PortletDataHandlerBoolean portletDataHandlerBoolean =
087 new PortletDataHandlerBoolean(namespace, name);
088
089 parameterMap.put(
090 portletDataHandlerBoolean.getNamespacedControlName(),
091 new String[] {String.valueOf(value)});
092 }
093
094 protected void addParameters(Map<String, String[]> parameterMap) {
095 }
096
097 protected abstract void addStagedModels() throws Exception;
098
099 protected void checkManifestSummary(
100 Map<String, LongWrapper> expectedModelAdditionCounters) {
101
102 ManifestSummary manifestSummary =
103 portletDataContext.getManifestSummary();
104
105 Map<String, LongWrapper> modelAdditionCounters =
106 manifestSummary.getModelAdditionCounters();
107
108 int expectedModelAdditionCountersSize =
109 expectedModelAdditionCounters.size();
110
111 for (String manifestSummaryKey :
112 expectedModelAdditionCounters.keySet()) {
113
114 LongWrapper expectedModelAdditionCounter =
115 expectedModelAdditionCounters.get(manifestSummaryKey);
116 LongWrapper modelAdditionCounter = modelAdditionCounters.get(
117 manifestSummaryKey);
118
119 if ((expectedModelAdditionCounter.getValue() == 0) &&
120 (modelAdditionCounter == null)) {
121
122 expectedModelAdditionCountersSize--;
123 }
124 else {
125 Assert.assertEquals(
126 expectedModelAdditionCounter.getValue(),
127 modelAdditionCounter.getValue());
128 }
129 }
130
131 Assert.assertEquals(
132 expectedModelAdditionCountersSize, modelAdditionCounters.size());
133 }
134
135 protected abstract PortletDataHandler createPortletDataHandler();
136
137 protected Date getEndDate() {
138 return new Date();
139 }
140
141 protected abstract String getPortletId();
142
143 protected Date getStartDate() {
144 return new Date(System.currentTimeMillis() - Time.HOUR);
145 }
146
147 protected void initExport() throws Exception {
148 Map<String, String[]> parameterMap = new LinkedHashMap<>();
149
150 addParameters(parameterMap);
151
152 zipWriter = ZipWriterFactoryUtil.getZipWriter();
153
154 portletDataContext =
155 PortletDataContextFactoryUtil.createExportPortletDataContext(
156 stagingGroup.getCompanyId(), stagingGroup.getGroupId(),
157 parameterMap, getStartDate(), getEndDate(), zipWriter);
158
159 rootElement = SAXReaderUtil.createElement("root");
160
161 portletDataContext.setExportDataRootElement(rootElement);
162
163 missingReferencesElement = SAXReaderUtil.createElement(
164 "missing-references");
165
166 portletDataContext.setMissingReferencesElement(
167 missingReferencesElement);
168 }
169
170 protected Element missingReferencesElement;
171 protected PortletDataContext portletDataContext;
172 protected PortletDataHandler portletDataHandler;
173 protected String portletId;
174 protected Element rootElement;
175
176 @DeleteAfterTestRun
177 protected Group stagingGroup;
178
179 protected ZipWriter zipWriter;
180
181 }