Skip to content
Merged
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 README.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,10 @@ To run the tests for the application, use Gradle:
./gradlew test
```

### Swagger documentation API

http://localhost:8090/swagger-ui/index.html

## License

This project is licensed under the MIT License.
2 changes: 2 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ dependencies {
implementation 'org.modelmapper:modelmapper:3.2.2'
implementation 'org.hibernate.validator:hibernate-validator:8.0.1.Final'
implementation 'org.glassfish:jakarta.el:4.0.2'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.4'
implementation 'org.springdoc:springdoc-openapi-ui:1.8.0'
testImplementation 'org.junit.jupiter:junit-jupiter:5.8.2'
testImplementation 'org.mockito:mockito-core:4.5.1'
testImplementation 'org.mockito:mockito-junit-jupiter:4.5.1'
Expand Down
17 changes: 17 additions & 0 deletions src/main/java/pl/commit/craft/config/OpenApiConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package pl.commit.craft.config;

import org.springdoc.core.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class OpenApiConfig {

@Bean
public GroupedOpenApi publicApi() {
return GroupedOpenApi.builder()
.group("public-api")
.pathsToMatch("/api/**")
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package pl.commit.craft.controller;

import io.swagger.v3.oas.annotations.Operation;
import org.springframework.web.bind.annotation.*;
import pl.commit.craft.service.CommitTranslateService;

Expand All @@ -13,8 +14,13 @@ public CommitTranslateController(CommitTranslateService commitTranslateService)
this.commitTranslateService = commitTranslateService;
}

@Operation(
summary = "Generate commit translation",
description = "Generates a translated commit message based on the provided request information."
)
@PostMapping("/craft")
public String generateCommit(@RequestBody CommitTranslateRequest commitTranslateRequest) {
public String generateCommit(
@RequestBody CommitTranslateRequest commitTranslateRequest) {
return commitTranslateService.generateTranslateCommit(
commitTranslateRequest.major(),
commitTranslateRequest.type(),
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/pl/commit/craft/flow/CommitFlowController.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package pl.commit.craft.flow;

import io.swagger.v3.oas.annotations.Operation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
Expand All @@ -16,6 +17,10 @@ public CommitFlowController(CommitTranslateService commitTranslateService) {
this.commitTranslateService = commitTranslateService;
}

@Operation(
summary = "Generate a commit message based on the provided commit flow data",
description = "This endpoint receives commit flow details and generates the corresponding commit message."
)
@PostMapping("/craft")
public String generateCommit(@RequestBody CommitFlowRequest commitFlowRequest) {
return commitTranslateService.generateFlowCommit(
Expand Down
14 changes: 13 additions & 1 deletion src/main/java/pl/commit/craft/quick/CommitQuickController.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package pl.commit.craft.quick;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
Expand All @@ -9,12 +12,21 @@
@RestController
@RequestMapping("/api/v1/commit-quick")
@RequiredArgsConstructor
@Tag(name = "Commit Quick Controller", description = "Very quick commit audit or PR review")
public class CommitQuickController {

final CommitQuickService commitQuickService;

@Operation(
summary = "Generate a quick commit message based on the provided details",
description = "This endpoint receives the commit details and generates a quick commit message."
)
@PostMapping("/craft")
public String generateCommit(@RequestBody CommitQuickRequest commitQuickRequest) {
public String generateCommit(
@RequestBody @Parameter(
description = "Request body containing the commit details, including topic scope and Git command flag. Actual use *audit* message - Audit fix, *fix*: message - Pull request comments improved, *test*: message -Fixed tests",
required = true
) CommitQuickRequest commitQuickRequest) {
return commitQuickService.generateQuickCommit(
commitQuickRequest.topicScope(),
commitQuickRequest.isGitCommand()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package pl.commit.craft.template;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
Expand All @@ -14,12 +16,24 @@ public class CommitCraftTemplateController {

private final CommitTemplateService commitTemplateService;

@Operation(
summary = "Get all commit templates",
description = "Fetches a list of all available commit craft templates."
)
@GetMapping("/all")
public ResponseEntity<List<CommitCraftTemplate>> getAllTemplates() throws IOException {
List<CommitCraftTemplate> templates = commitTemplateService.getAllTemplates();
return ResponseEntity.ok(templates);
}

@Operation(
summary = "Create a dedicated commit template",
description = "Creates a new dedicated commit template if the pattern and model scope are valid.",
responses = {
@ApiResponse(responseCode = "200", description = "Template added successfully"),
@ApiResponse(responseCode = "400", description = "Template already exists")
}
)
@PostMapping("/dedicated")
public ResponseEntity<String> createDedicatedTemplate(@RequestBody CommitCraftTemplate template) throws IOException {
boolean patternAndModelScope = CommitDedicatedTemplateValidator.validatePatternAndModelScope(template);
Expand All @@ -30,12 +44,26 @@ public ResponseEntity<String> createDedicatedTemplate(@RequestBody CommitCraftTe
return ResponseEntity.badRequest().body("Template already exists.");
}

@Operation(
summary = "Remove a commit template",
description = "Removes a dedicated commit template by name.",
responses = {
@ApiResponse(responseCode = "200", description = "Template removed successfully")
}
)
@DeleteMapping("/removed/{name}")
public ResponseEntity<String> addTemplate(@PathVariable("name") String name) throws IOException {
commitTemplateService.removeDedicatedTemplate(name);
return ResponseEntity.ok("Template removed successfully.");
}

@Operation(
summary = "Generate commit template JSON",
description = "Generates a JSON representation of the commit template based on its name.",
responses = {
@ApiResponse(responseCode = "200", description = "JSON generated successfully")
}
)
@PostMapping("/generate-json/{name}")
public Map<String, Object> generateJson(@PathVariable String name) throws IOException {
CommitCraftJson commitCraftJson = commitTemplateService.prepareJsonByModel(name);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package pl.commit.craft;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class CommitCraftApplicationTests {

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import org.springframework.test.web.servlet.MockMvc;

import static org.mockito.Mockito.*;
Expand All @@ -19,7 +19,7 @@ class CommitQuickControllerTest {
@Autowired
private MockMvc mockMvc;

@MockBean
@MockitoBean
private CommitQuickService commitQuickService;

private ObjectMapper objectMapper;
Expand Down