Skip to content

Commit

Permalink
Merge pull request #19 from phillip-kruger/main
Browse files Browse the repository at this point in the history
New release and some tests added
  • Loading branch information
phillip-kruger committed Jul 13, 2024
2 parents 1de0851 + 43d1e57 commit c61c748
Show file tree
Hide file tree
Showing 4 changed files with 178 additions and 6 deletions.
Empty file added nbproject/project.properties
Empty file.
50 changes: 45 additions & 5 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>io.mvnpm</groupId>
<artifactId>importmap</artifactId>
<version>1.0.11-SNAPSHOT</version>
<version>1.0.12-SNAPSHOT</version>

<name>importmap</name>
<description>Create an importmap from mvnpm artifacts</description>
Expand Down Expand Up @@ -48,15 +48,16 @@
</distributionManagement>

<properties>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.release>11</maven.compiler.release>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.release>17</maven.compiler.release>
<compiler-plugin.version>3.8.1</compiler-plugin.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<jackson.version>2.16.0</jackson.version>
<jackson.version>2.17.2</jackson.version>
<skipITs>true</skipITs>
<surefire-plugin.version>3.0.0-M7</surefire-plugin.version>
<junit.jupiter.version>5.10.3</junit.jupiter.version>
</properties>

<dependencyManagement>
Expand All @@ -77,6 +78,45 @@
<artifactId>jackson-databind</artifactId>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>5.11.0</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.mvnpm</groupId>
<artifactId>lit</artifactId>
<version>3.1.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mvnpm</groupId>
<artifactId>lit-element</artifactId>
<version>4.0.6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mvnpm</groupId>
<artifactId>lit-html</artifactId>
<version>3.1.4</version>
<scope>test</scope>
</dependency>
</dependencies>

<profiles>
Expand Down
33 changes: 32 additions & 1 deletion src/main/java/io/mvnpm/importmap/Aggregator.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,13 @@
import java.util.Map;
import java.util.Set;
import io.mvnpm.importmap.model.Imports;
import java.io.StringWriter;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* Scans the classpath and create an aggregation of all generated import maps
* @author Phillip Kruger ([email protected])
* TODO: Add support for use supplied import map to be merged in
*/
public class Aggregator {

Expand Down Expand Up @@ -85,14 +87,26 @@ public String aggregateAsJson(){
return aggregateAsJson(true);
}

public String aggregateAsJs(){
return aggregateAsJs(true);
}

public String aggregateAsJson(boolean scanClassPath){
return aggregateAsJson("", scanClassPath);
}

public String aggregateAsJs(boolean scanClassPath){
return aggregateAsJs("", scanClassPath);
}

public String aggregateAsJson(String root){
return aggregateAsJson(root, true);
}

public String aggregateAsJs(String root){
return aggregateAsJs(root, true);
}

public String aggregateAsJson(String root, boolean scanClassPath){
try {
Imports i = aggregate(root, scanClassPath);
Expand All @@ -110,6 +124,23 @@ public String aggregateAsJson(Imports imports) {
}
}

public String aggregateAsJs(String root, boolean scanClassPath){

Imports i = aggregate(root, scanClassPath);
Map<String, String> imports = i.getImports();

try(StringWriter sw = new StringWriter()){

for(Map.Entry<String, String> e:imports.entrySet()){
sw.write("import '" + e.getValue() + "';");
sw.write("\n");
}
return sw.toString();
} catch (IOException ex) {
throw new UncheckedIOException(ex);
}
}

public void reset(){
this.userProvidedImports.clear();
this.userProvidedJarUrls.clear();
Expand Down
101 changes: 101 additions & 0 deletions src/test/java/io/mvnpm/importmap/AggregatorTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
package io.mvnpm.importmap;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Map;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

public class AggregatorTest {

public AggregatorTest() {
}

@BeforeAll
public static void setUpClass() {
}

@AfterAll
public static void tearDownClass() {
}

@BeforeEach
public void setUp() {
}

@AfterEach
public void tearDown() {
}

@Test
public void testAggregateAsJson() throws JsonProcessingException{
Aggregator aggregator = new Aggregator();
String importmap = aggregator.aggregateAsJson();

System.out.println(importmap);

ObjectMapper mapper = new ObjectMapper();
Map<String, Map<String, String>> actualMap = mapper.readValue(importmap, new TypeReference<>() {});

assertEquals("/_static/labs/ssr-dom-shim/1.2.0/", actualMap.get("imports").get("@lit-labs/ssr-dom-shim/"));
assertEquals("/_static/trusted-types/2.0.7/index.js", actualMap.get("imports").get("@types/trusted-types"));
assertEquals("/_static/lit-element/4.0.6/index.js", actualMap.get("imports").get("lit-element"));
assertEquals("/_static/reactive-element/2.0.4/reactive-element.js", actualMap.get("imports").get("@lit/reactive-element"));
assertEquals("/_static/lit/3.1.4/index.js", actualMap.get("imports").get("lit"));
assertEquals("/_static/lit-element/4.0.6/", actualMap.get("imports").get("lit-element/"));
assertEquals("/_static/lit-html/3.1.4/", actualMap.get("imports").get("lit-html/"));
assertEquals("/_static/trusted-types/2.0.7/", actualMap.get("imports").get("@types/trusted-types/"));
assertEquals("/_static/lit/3.1.4/", actualMap.get("imports").get("lit/"));
assertEquals("/_static/reactive-element/2.0.4/", actualMap.get("imports").get("@lit/reactive-element/"));
assertEquals("/_static/lit-html/3.1.4/lit-html.js", actualMap.get("imports").get("lit-html"));
assertEquals("/_static/labs/ssr-dom-shim/1.2.0/index.js", actualMap.get("imports").get("@lit-labs/ssr-dom-shim"));
}


@Test
public void testAggregateAsJs() throws JsonProcessingException{
Aggregator aggregator = new Aggregator();
String importjs = aggregator.aggregateAsJs();

System.out.println(importjs);

assertTrue(importjs.contains("/_static/labs/ssr-dom-shim/1.2.0/"));
assertTrue(importjs.contains("/_static/trusted-types/2.0.7/index.js"));
assertTrue(importjs.contains("/_static/lit-element/4.0.6/index.js"));
assertTrue(importjs.contains("/_static/reactive-element/2.0.4/reactive-element.js"));
assertTrue(importjs.contains("/_static/lit/3.1.4/index.js"));
assertTrue(importjs.contains("/_static/lit-element/4.0.6/"));
assertTrue(importjs.contains("/_static/lit-html/3.1.4/"));
assertTrue(importjs.contains("/_static/trusted-types/2.0.7/"));
assertTrue(importjs.contains("/_static/lit/3.1.4/"));
assertTrue(importjs.contains("/_static/reactive-element/2.0.4/"));
assertTrue(importjs.contains("/_static/lit-html/3.1.4/lit-html.js"));
assertTrue(importjs.contains("/_static/labs/ssr-dom-shim/1.2.0/index.js"));
}

@Test
public void testAggregateAsJsWithRoot() throws JsonProcessingException{
Aggregator aggregator = new Aggregator();
String importjs = aggregator.aggregateAsJs("/node_modules");

System.out.println(importjs);

assertTrue(importjs.contains("/node_modules/_static/labs/ssr-dom-shim/1.2.0/"));
assertTrue(importjs.contains("/node_modules/_static/trusted-types/2.0.7/index.js"));
assertTrue(importjs.contains("/node_modules/_static/lit-element/4.0.6/index.js"));
assertTrue(importjs.contains("/node_modules/_static/reactive-element/2.0.4/reactive-element.js"));
assertTrue(importjs.contains("/node_modules/_static/lit/3.1.4/index.js"));
assertTrue(importjs.contains("/node_modules/_static/lit-element/4.0.6/"));
assertTrue(importjs.contains("/node_modules/_static/lit-html/3.1.4/"));
assertTrue(importjs.contains("/node_modules/_static/trusted-types/2.0.7/"));
assertTrue(importjs.contains("/node_modules/_static/lit/3.1.4/"));
assertTrue(importjs.contains("/node_modules/_static/reactive-element/2.0.4/"));
assertTrue(importjs.contains("/node_modules/_static/lit-html/3.1.4/lit-html.js"));
assertTrue(importjs.contains("/node_modules/_static/labs/ssr-dom-shim/1.2.0/index.js"));
}
}

0 comments on commit c61c748

Please sign in to comment.