/** * This file is part of lavagna. * * lavagna is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * lavagna 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with lavagna. If not, see <http://www.gnu.org/licenses/>. */ package io.lavagna.service; import io.lavagna.config.PersistenceAndServiceConfig; import io.lavagna.model.*; import io.lavagna.service.config.TestServiceConfig; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; import java.io.IOException; import java.util.*; import static io.lavagna.common.Constants.SYSTEM_LABEL_MILESTONE; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { TestServiceConfig.class, PersistenceAndServiceConfig.class }) @Transactional public class ExcelExportServiceTest { @Autowired private ExcelExportService excelExportService; @Autowired private BoardRepository boardRepository; @Autowired private UserRepository userRepository; @Autowired private BoardColumnRepository boardColumnRepository; @Autowired private CardService cardService; @Autowired private PermissionService permissionService; @Autowired private ProjectService projectService; @Autowired private CardLabelRepository cardLabelRepository; Project project; UserWithPermission user; @Before public void prepare() { Helper.createUser(userRepository, "test", "test-user"); User u = userRepository.findUserByName("test", "test-user"); Role r = new Role("TEST"); permissionService.createRole(r); permissionService.updatePermissionsToRole(r, EnumSet.of(Permission.READ)); permissionService.assignRolesToUsers(Collections.singletonMap(r, Collections.singleton(u.getId()))); user = new UserWithPermission(u, permissionService.findBasePermissionByUserId(u.getId()), Collections.<String, Set<Permission>>emptyMap(), Collections.<Integer, Set<Permission>>emptyMap()); project = projectService.create("test", "TEST", "desc"); CardLabel lnull = cardLabelRepository .addLabel(project.getId(), false, CardLabel.LabelType.NULL, CardLabel.LabelDomain.USER, "null", 0); CardLabel lstring = cardLabelRepository .addLabel(project.getId(), false, CardLabel.LabelType.STRING, CardLabel.LabelDomain.USER, "string", 0); CardLabel ltimestamp = cardLabelRepository .addLabel(project.getId(), false, CardLabel.LabelType.TIMESTAMP, CardLabel.LabelDomain.USER, "date", 0); CardLabel luser = cardLabelRepository .addLabel(project.getId(), false, CardLabel.LabelType.USER, CardLabel.LabelDomain.USER, "user", 0); CardLabel lcard = cardLabelRepository .addLabel(project.getId(), false, CardLabel.LabelType.CARD, CardLabel.LabelDomain.USER, "card", 0); CardLabel lint = cardLabelRepository .addLabel(project.getId(), false, CardLabel.LabelType.INT, CardLabel.LabelDomain.USER, "int", 0); CardLabel llist = cardLabelRepository .addLabel(project.getId(), false, CardLabel.LabelType.LIST, CardLabel.LabelDomain.USER, "list", 0); LabelListValue llistVal = cardLabelRepository.addLabelListValue(llist.getId(), "abcd"); // Init new card Board board = boardRepository .createNewBoard("test-label", "LABEL", "label", projectService.findByShortName("TEST").getId()); List<BoardColumnDefinition> definitions = projectService.findColumnDefinitionsByProjectId(project.getId()); BoardColumn column = boardColumnRepository.addColumnToBoard("label-column", definitions.get(0).getId(), BoardColumn.BoardColumnLocation.BOARD, board.getId()); Card card = cardService.createCard("card", column.getId(), new Date(), user); // Init milestone CardLabel l = cardLabelRepository.findLabelByName(project.getId(), SYSTEM_LABEL_MILESTONE, CardLabel.LabelDomain.SYSTEM); LabelListValue mlv = cardLabelRepository.addLabelListValue(l.getId(), "1.0"); // Add labels cardLabelRepository.addLabelValueToCard(l, card.getId(), new CardLabelValue.LabelValue(null, null, null, null, null, mlv.getId())); cardLabelRepository.addLabelValueToCard(lnull, card.getId(), new CardLabelValue.LabelValue(null, null, null, null, null, null)); cardLabelRepository.addLabelValueToCard(lstring, card.getId(), new CardLabelValue.LabelValue("ABC")); cardLabelRepository.addLabelValueToCard(ltimestamp, card.getId(), new CardLabelValue.LabelValue(new Date())); cardLabelRepository.addLabelValueToCard(luser, card.getId(), new CardLabelValue.LabelValue(null, null, null, null, u.getId(), null)); cardLabelRepository.addLabelValueToCard(lcard, card.getId(), new CardLabelValue.LabelValue(null, null, null, card.getId(), null, null)); cardLabelRepository.addLabelValueToCard(lint, card.getId(), new CardLabelValue.LabelValue(null, null, 999, null, null, null)); cardLabelRepository.addLabelValueToCard(llist, card.getId(), new CardLabelValue.LabelValue(null, null, null, null, null, llistVal.getId())); } @Test public void testGetWrongMilestone() { LabelListValueWithMetadata m = excelExportService.getMilestone(project.getId(), "AAAA"); Assert.assertNull(m); } @Test public void testGetMilestone() { LabelListValueWithMetadata m = excelExportService.getMilestone(project.getId(), "1.0"); Assert.assertNotNull(m); } @Test(expected = IllegalArgumentException.class) public void testExportMilestoneToExcelWrongValue() throws IOException { excelExportService.exportMilestoneToExcel(project.getShortName(), "AAA", user); } @Test public void testExportMilestoneToExcel() throws IOException { HSSFWorkbook w = excelExportService.exportMilestoneToExcel(project.getShortName(), "1.0", user); Assert.assertNotNull(w); Assert.assertEquals(1, w.getSheet("1.0").getLastRowNum()); // 0 based -> 1 means 2 rows (header + 1 card) } @Test public void testExportProjectToExcel() throws IOException { HSSFWorkbook w = excelExportService.exportProjectToExcel(project.getShortName(), user); Assert.assertNotNull(w); Assert.assertEquals(1, w.getSheet(project.getName()).getLastRowNum()); // 0 based -> 1 means 2 rows (header + 1 card) } }