| /* |
| * Copyright (C) 2013 The Android Open Source Project |
| * |
| * 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.android.tools.idea.gradle.service.notification.errors; |
| |
| import com.android.tools.idea.gradle.service.notification.hyperlink.NotificationHyperlink; |
| import com.intellij.notification.NotificationListener; |
| import com.intellij.openapi.externalSystem.service.notification.NotificationCategory; |
| import com.intellij.openapi.externalSystem.service.notification.NotificationData; |
| import com.intellij.openapi.externalSystem.service.notification.NotificationSource; |
| import com.intellij.openapi.project.Project; |
| import junit.framework.TestCase; |
| import org.jetbrains.annotations.NotNull; |
| |
| import java.util.List; |
| |
| import static org.easymock.EasyMock.*; |
| |
| /** |
| * Tests for {@link AbstractSyncErrorHandler}. |
| */ |
| public class AbstractSyncErrorHandlerTest extends TestCase { |
| private Project myProject; |
| private NotificationHyperlink myHyperlink1; |
| private NotificationHyperlink myHyperlink2; |
| |
| @Override |
| public void setUp() throws Exception { |
| super.setUp(); |
| myProject = createMock(Project.class); |
| myHyperlink1 = new TestingHyperlink("1", "Hyperlink 1"); |
| myHyperlink2 = new TestingHyperlink("2", "Hyperlink 2"); |
| } |
| |
| public void testCreateNotification() { |
| String projectName = "project1"; |
| String errorMsg = "Hello"; |
| |
| expect(myProject.getName()).andReturn(projectName); |
| replay(myProject); |
| |
| NotificationData notification = new NotificationData("title", "msg", NotificationCategory.ERROR, NotificationSource.PROJECT_SYNC); |
| AbstractSyncErrorHandler.updateNotification(notification, myProject, errorMsg, myHyperlink1, myHyperlink2); |
| |
| verify(myProject); |
| |
| String title = notification.getTitle(); |
| assertNotNull(title); |
| assertTrue(title.contains("'" + projectName + "'")); |
| |
| assertEquals(errorMsg + "\n<a href=\"1\">Hyperlink 1</a><br><a href=\"2\">Hyperlink 2</a>", notification.getMessage()); |
| |
| NotificationListener notificationListener = notification.getListener(); |
| assertNotNull(notificationListener); |
| List<String> hyperlinks = notification.getRegisteredListenerIds(); |
| assertEquals(2, hyperlinks.size()); |
| assertTrue(hyperlinks.contains(myHyperlink1.getUrl())); |
| assertTrue(hyperlinks.contains(myHyperlink2.getUrl())); |
| } |
| |
| private static class TestingHyperlink extends NotificationHyperlink { |
| TestingHyperlink(@NotNull String url, @NotNull String text) { |
| super(url, text); |
| } |
| |
| @Override |
| protected void execute(@NotNull Project project) { |
| } |
| } |
| } |