Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions testing/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@
<groupId>org.flywaydb</groupId>
<artifactId>flyway-database-postgresql</artifactId>
</dependency>
<dependency>
<groupId>com.google.testing.compile</groupId>
<artifactId>compile-testing</artifactId>
</dependency>
</dependencies>

<build>
Expand Down
7 changes: 2 additions & 5 deletions testing/src/main/java/at/test/drm/DogEntity.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,16 @@

import at.drm.annotation.Relation;
import at.drm.model.RelationIdentity;
import jakarta.persistence.*;
import lombok.Data;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Relation
@Entity
@Data
public class DogEntity implements RelationIdentity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(unique = true, nullable = false)
private Long id;
}
83 changes: 83 additions & 0 deletions testing/src/test/java/at/test/drm/RelationProcessorTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package at.test.drm;

import com.google.testing.compile.Compilation;
import com.google.testing.compile.CompilationSubject;
import com.google.testing.compile.Compiler;
import com.google.testing.compile.JavaFileObjects;
import org.junit.jupiter.api.Test;

import javax.tools.JavaFileObject;

import static com.google.common.truth.Truth.assertThat;

class RelationProcessorTest {

@Test
void shouldGenerateCodeForRelationAnnotation() {

// 1. Fake input class
JavaFileObject source = JavaFileObjects.forSourceString(
"test.User",
"""
package test;

import at.drm.annotation.Relation;

@Relation
public class User {
}
"""
);

// 2. Run processor
Compilation compilation = Compiler.javac()
.withProcessors(new at.drm.processor.RelationProcessor())
.compile(source);

// 3. Assert compilation success
assertThat(compilation.status())
.isEqualTo(Compilation.Status.SUCCESS);

// 4. Assert something was generated
assertThat(compilation.generatedSourceFiles())
.isNotEmpty();

// 5. Get generated file content
String generated = String.valueOf(CompilationSubject.assertThat(compilation)
.generatedSourceFile("test.UserRelation")
.contentsAsUtf8String());

// 6. Strong assertions
assertThat(generated).contains("package test;");
assertThat(generated).contains("class UserRelation");
}


@Test
void shouldNotGenerateWhenAnnotationMissing() {

// 1. Input WITHOUT @Relation
JavaFileObject source = JavaFileObjects.forSourceString(
"test.User",
"""
package test;

public class User {
}
"""
);

// 2. Run processor
Compilation compilation = Compiler.javac()
.withProcessors(new at.drm.processor.RelationProcessor())
.compile(source);

// 3. Should still compile successfully
assertThat(compilation.status())
.isEqualTo(Compilation.Status.SUCCESS);

// 4. But should NOT generate any files
assertThat(compilation.generatedSourceFiles())
.isEmpty();
}
}
Loading