diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml new file mode 100644 index 0000000..26779d9 --- /dev/null +++ b/.github/workflows/build-and-test.yml @@ -0,0 +1,37 @@ +name: Build and Test +on: + push: + branches: + - "main" + pull_request: + branches: + - "main" + +jobs: + build-and-test: + runs-on: ubuntu-latest + + steps: + # Checks out code from GitHub + - name: Checkout code + uses: actions/checkout@v6 + + # Sets up Java 25 (Temurin) and cache Maven-dependencies + - name: Set up JDK 25 + uses: actions/setup-java@v5 + with: + java-version: '25' + distribution: 'temurin' + cache: 'maven' + + # Make sure Maven Wrapper is executable + - name: Make mvnw executable + run: chmod +x mvnw + + # Compile and run tests + - name: Compile and run tests + run: ./mvnw -B test + + # Control code format with spotless + - name: Run spotless check + run: ./mvnw -B spotless:check diff --git a/pom.xml b/pom.xml index a47ba94..c96890d 100644 --- a/pom.xml +++ b/pom.xml @@ -38,10 +38,10 @@ org.springframework.boot spring-boot-starter-data-jpa - - org.springframework.boot - spring-boot-starter-flyway - + + + + org.springframework.boot spring-boot-starter-security @@ -62,10 +62,10 @@ org.springframework.boot spring-boot-starter-webmvc - - org.flywaydb - flyway-database-postgresql - + + + + org.thymeleaf.extras thymeleaf-extras-springsecurity6 @@ -98,11 +98,11 @@ spring-boot-starter-data-jpa-test test - - org.springframework.boot - spring-boot-starter-flyway-test - test - + + + + + org.springframework.boot spring-boot-starter-security-oauth2-client-test @@ -158,10 +158,44 @@ + + org.apache.maven.plugins + maven-compiler-plugin + + + + org.projectlombok + lombok + ${lombok.version} + + + + org.springframework.boot spring-boot-maven-plugin + + com.diffplug.spotless + spotless-maven-plugin + 2.44.3 + + + + + + + + + verify + + + check + + + + + diff --git a/src/main/java/org/example/visacasemanagementsystem/audit/entity/AuditLog.java b/src/main/java/org/example/visacasemanagementsystem/audit/entity/AuditLog.java index e3e7cd4..d49163f 100644 --- a/src/main/java/org/example/visacasemanagementsystem/audit/entity/AuditLog.java +++ b/src/main/java/org/example/visacasemanagementsystem/audit/entity/AuditLog.java @@ -24,18 +24,14 @@ public class AuditLog { @Column(name = "audit_id", nullable = false) private Long id; - @NotNull - @CreatedDate + @NotNull @CreatedDate private LocalDateTime timeStamp; - @NotNull - private Long userId; // Vem gjorde vad? + @NotNull private Long userId; // Vem gjorde vad? - @NotNull - private Long visaCaseId; // Vilket ärende rör det? + @NotNull private Long visaCaseId; // Vilket ärende rör det? - @NotNull - @Enumerated(EnumType.STRING) + @NotNull @Enumerated(EnumType.STRING) private AuditEventType auditEventType; private String description; // Beskrivning av händelse diff --git a/src/main/java/org/example/visacasemanagementsystem/audit/mapper/AuditMapper.java b/src/main/java/org/example/visacasemanagementsystem/audit/mapper/AuditMapper.java index cb0c3bd..0e9f516 100644 --- a/src/main/java/org/example/visacasemanagementsystem/audit/mapper/AuditMapper.java +++ b/src/main/java/org/example/visacasemanagementsystem/audit/mapper/AuditMapper.java @@ -5,7 +5,6 @@ import org.example.visacasemanagementsystem.audit.entity.AuditLog; import org.springframework.stereotype.Component; -import java.time.LocalDateTime; @Component public class AuditMapper { diff --git a/src/main/java/org/example/visacasemanagementsystem/comment/entity/Comment.java b/src/main/java/org/example/visacasemanagementsystem/comment/entity/Comment.java index 0ae9a1e..128f026 100644 --- a/src/main/java/org/example/visacasemanagementsystem/comment/entity/Comment.java +++ b/src/main/java/org/example/visacasemanagementsystem/comment/entity/Comment.java @@ -33,8 +33,7 @@ public class Comment { @JoinColumn(name = "author_id", nullable = false) private User author; - @NotBlank - @Column(columnDefinition = "TEXT") + @NotBlank @Column(columnDefinition = "TEXT") private String text; @CreatedDate diff --git a/src/main/java/org/example/visacasemanagementsystem/user/entity/User.java b/src/main/java/org/example/visacasemanagementsystem/user/entity/User.java index 49d05dd..829ff50 100644 --- a/src/main/java/org/example/visacasemanagementsystem/user/entity/User.java +++ b/src/main/java/org/example/visacasemanagementsystem/user/entity/User.java @@ -22,20 +22,16 @@ public class User { @Column(nullable = false, updatable = false) private Long id; - @NotBlank - @Column(nullable = false) + @NotBlank @Column(nullable = false) private String fullName; - @NotBlank - @Column(unique = true) + @NotBlank @Column(unique = true) private String email; //Placeholder password storage solution - @NotBlank - private String password; + @NotBlank private String password; - @NotNull - @Enumerated(EnumType.STRING) + @NotNull @Enumerated(EnumType.STRING) private UserAuthorization userAuthorization; @Override diff --git a/src/main/java/org/example/visacasemanagementsystem/visa/entity/Visa.java b/src/main/java/org/example/visacasemanagementsystem/visa/entity/Visa.java index d476a04..31905b0 100644 --- a/src/main/java/org/example/visacasemanagementsystem/visa/entity/Visa.java +++ b/src/main/java/org/example/visacasemanagementsystem/visa/entity/Visa.java @@ -30,16 +30,13 @@ public class Visa { @Column(name = "visa_id", nullable = false, updatable = false) private Long id; - @NotNull - @Enumerated(EnumType.STRING) + @NotNull @Enumerated(EnumType.STRING) private VisaType visaType; - @NotNull - @Enumerated(EnumType.STRING) + @NotNull @Enumerated(EnumType.STRING) private VisaStatus visaStatus; - @NotBlank - private String nationality; + @NotBlank private String nationality; @ManyToOne @JoinColumn(name = "applicant_id", nullable = false) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 3c32fb8..f981dd9 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -6,7 +6,7 @@ spring.datasource.username=${DB_USER:user} spring.datasource.password=${DB_PASSWORD:secret} # application.properties (default/test/prod) -spring.jpa.hibernate.ddl-auto=validate +spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=false spring.jpa.properties.hibernate.format_sql=false