aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-batch/src/test/java/org/sonar/batch/scan/ScanContainerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'sonar-batch/src/test/java/org/sonar/batch/scan/ScanContainerTest.java')
-rw-r--r--sonar-batch/src/test/java/org/sonar/batch/scan/ScanContainerTest.java72
1 files changed, 72 insertions, 0 deletions
diff --git a/sonar-batch/src/test/java/org/sonar/batch/scan/ScanContainerTest.java b/sonar-batch/src/test/java/org/sonar/batch/scan/ScanContainerTest.java
new file mode 100644
index 00000000000..b8ecbdc8b7a
--- /dev/null
+++ b/sonar-batch/src/test/java/org/sonar/batch/scan/ScanContainerTest.java
@@ -0,0 +1,72 @@
+/*
+ * Sonar, open source software quality management tool.
+ * Copyright (C) 2008-2012 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * Sonar is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * Sonar 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Sonar; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
+ */
+package org.sonar.batch.scan;
+
+import org.apache.commons.configuration.PropertiesConfiguration;
+import org.fest.assertions.Assertions;
+import org.junit.Test;
+import org.mockito.Matchers;
+import org.sonar.api.batch.bootstrap.ProjectDefinition;
+import org.sonar.api.database.model.Snapshot;
+import org.sonar.api.platform.ComponentContainer;
+import org.sonar.api.resources.Project;
+import org.sonar.api.resources.Resource;
+import org.sonar.batch.ProjectTree;
+import org.sonar.batch.bootstrap.BatchSettings;
+import org.sonar.batch.bootstrap.Container;
+import org.sonar.batch.bootstrap.ExtensionInstaller;
+import org.sonar.batch.bootstrap.ProjectSettings;
+import org.sonar.batch.index.ResourcePersister;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+public class ScanContainerTest {
+ @Test
+ public void should_register_project_extensions() {
+ // components injected in the parent container
+ final Project project = new Project("foo");
+ project.setConfiguration(new PropertiesConfiguration());
+ final ProjectTree projectTree = mock(ProjectTree.class);
+ when(projectTree.getProjectDefinition(project)).thenReturn(ProjectDefinition.create());
+ final ResourcePersister resourcePersister = mock(ResourcePersister.class);
+ when(resourcePersister.getSnapshot(Matchers.<Resource>any())).thenReturn(new Snapshot());
+
+ final ExtensionInstaller extensionInstaller = mock(ExtensionInstaller.class);
+ Container batchModule = new Container() {
+ @Override
+ protected void configure() {
+ container.addSingleton(extensionInstaller);
+ container.addSingleton(projectTree);
+ container.addSingleton(resourcePersister);
+ container.addSingleton(new BatchSettings());
+ }
+ };
+
+ batchModule.init();
+ ScanContainer projectModule = new ScanContainer(project);
+ batchModule.installChild(projectModule);
+
+ verify(extensionInstaller).installInspectionExtensions(any(ComponentContainer.class));
+ Assertions.assertThat(projectModule.container().getComponentByType(ProjectSettings.class)).isNotNull();
+ }
+}