/* * Copyright 2014 gitblit.com. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.gitblit.tests; import java.io.File; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.io.FileUtils; import org.bouncycastle.util.Arrays; import org.eclipse.jgit.lib.Repository; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.gitblit.IStoredSettings; import com.gitblit.Keys; import com.gitblit.manager.INotificationManager; import com.gitblit.manager.IPluginManager; import com.gitblit.manager.IRepositoryManager; import com.gitblit.manager.IRuntimeManager; import com.gitblit.manager.IUserManager; import com.gitblit.manager.NotificationManager; import com.gitblit.manager.PluginManager; import com.gitblit.manager.RepositoryManager; import com.gitblit.manager.RuntimeManager; import com.gitblit.manager.UserManager; import com.gitblit.models.Mailing; import com.gitblit.models.RepositoryModel; import com.gitblit.models.TicketModel; import com.gitblit.models.TicketModel.Attachment; import com.gitblit.models.TicketModel.Change; import com.gitblit.models.TicketModel.Field; import com.gitblit.models.TicketModel.Patchset; import com.gitblit.models.TicketModel.Priority; import com.gitblit.models.TicketModel.Severity; import com.gitblit.models.TicketModel.Status; import com.gitblit.models.TicketModel.Type; import com.gitblit.tests.mock.MemorySettings; import com.gitblit.tickets.ITicketService; import com.gitblit.tickets.ITicketService.TicketFilter; import com.gitblit.tickets.QueryResult; import com.gitblit.tickets.TicketIndexer.Lucene; import com.gitblit.tickets.BranchTicketService; import com.gitblit.tickets.TicketLabel; import com.gitblit.tickets.TicketMilestone; import com.gitblit.tickets.TicketNotifier; import com.gitblit.utils.JGitUtils; import com.gitblit.utils.XssFilter; import com.gitblit.utils.XssFilter.AllowXssFilter; /** * Generates the range of tickets to ease testing of the look and feel of tickets */ public class UITicketTest extends GitblitUnitTest { private ITicketService service; final String repoName = "UITicketTest.git"; final RepositoryModel repo = new RepositoryModel(repoName, null, null, null); protected ITicketService getService(boolean deleteAll) throws Exception { IStoredSettings settings = getSettings(deleteAll); XssFilter xssFilter = new AllowXssFilter(); IRuntimeManager runtimeManager = new RuntimeManager(settings, xssFilter).start(); IPluginManager pluginManager = new PluginManager(runtimeManager).start(); INotificationManager notificationManager = new NotificationManager(settings).start(); IUserManager userManager = new UserManager(runtimeManager, pluginManager).start(); IRepositoryManager repositoryManager = new RepositoryManager(runtimeManager, pluginManager, userManager, null).start(); BranchTicketService service = new BranchTicketService( runtimeManager, pluginManager, notificationManager, userManager, repositoryManager).start(); if (deleteAll) { service.deleteAll(repo); } return service; } protected IStoredSettings getSettings(boolean deleteAll) throws Exception { File dir = new File(GitBlitSuite.REPOSITORIES, repoName); if (deleteAll) { FileUtils.deleteDirectory(dir); JGitUtils.createRepository(GitBlitSuite.REPOSITORIES, repoName).close(); } File luceneDir = new File(dir, "tickets/lucene"); luceneDir.mkdirs(); Map map = new HashMap(); map.put(Keys.git.repositoriesFolder, GitBlitSuite.REPOSITORIES.getAbsolutePath()); map.put(Keys.tickets.indexFolder, luceneDir.getAbsolutePath()); IStoredSettings settings = new MemorySettings(map); return settings; } @Before public void setup() throws Exception { service = getService(true); } @After public void cleanup() { service.stop(); } @Test public void UITicketOptions() throws Exception { for (TicketModel.Type t : TicketModel.Type.values()) { for (TicketModel.Priority p : TicketModel.Priority.values()) { for (TicketModel.Severity s : TicketModel.Severity.values()) { assertNotNull(service.createTicket(repo, newChange(t, p, s))); } } } } private Change newChange(Type type, Priority priority, Severity severity) { Change change = new Change("JUnit"); change.setField(Field.title, String.format("Type: %s | Priority: %s | Severity: %s", type, priority, severity)); change.setField(Field.type, type); change.setField(Field.severity, severity); change.setField(Field.priority, priority); return change; } }