From 27719e7f08756613e65e13ea61b0488fafee34c8 Mon Sep 17 00:00:00 2001 From: Zaine Arch Date: Sat, 3 Jan 2026 12:42:51 +0000 Subject: [PATCH] working on competency api --- .../controller/CompetenciesController.java | 40 ++++++++++++ .../org/zaine/app/model/Competencies.java | 64 +++++++++++++++++++ .../repositories/CompetenciesRepository.java | 9 +++ .../app/service/CompetenciesService.java | 38 +++++++++++ .../app/service/CompetenciesServiceTest.java | 51 +++++++++++++++ 5 files changed, 202 insertions(+) create mode 100644 src/main/java/org/zaine/app/controller/CompetenciesController.java create mode 100644 src/main/java/org/zaine/app/model/Competencies.java create mode 100644 src/main/java/org/zaine/app/repositories/CompetenciesRepository.java create mode 100644 src/main/java/org/zaine/app/service/CompetenciesService.java create mode 100644 src/test/java/org/zaine/app/service/CompetenciesServiceTest.java diff --git a/src/main/java/org/zaine/app/controller/CompetenciesController.java b/src/main/java/org/zaine/app/controller/CompetenciesController.java new file mode 100644 index 0000000..6d5e549 --- /dev/null +++ b/src/main/java/org/zaine/app/controller/CompetenciesController.java @@ -0,0 +1,40 @@ +package org.zaine.app.controller; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.PathVariable; +import org.zaine.app.model.Competencies; +import org.zaine.app.service.CompetenciesService; + +@RestController +public class CompetenciesController { + + @Autowired + private CompetenciesService competenciesService; + + @GetMapping("/competencies/items") + public List getAllCompetencies() { + + return competenciesService.getAllCompetencies(); + } + + @GetMapping("/competencies/item/{id}") + public Competencies getCompetencyById(@PathVariable Long id) { + return competenciesService.getCompetencyById(id); + } + + + @PostMapping("/competencies/items/{id}/state") + public void updateCompetencyState(@RequestParam Long id, @RequestParam String newState) { + Long compId = id; + String state = newState; + + //competenciesService.updateCompetencyState(id, newState); + + } + +} diff --git a/src/main/java/org/zaine/app/model/Competencies.java b/src/main/java/org/zaine/app/model/Competencies.java new file mode 100644 index 0000000..f1240af --- /dev/null +++ b/src/main/java/org/zaine/app/model/Competencies.java @@ -0,0 +1,64 @@ +package org.zaine.app.model; + +import java.time.Instant; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import jakarta.persistence.GeneratedValue; + +@Entity +@Table(name = "competencies") +public class Competencies { + + @Id + @GeneratedValue + @Column(name="id") + private Long id; + + @Column(name="title") + private String title; + + @Column(name="state") + private String state; + + @Column(name="created_at") + private Instant createdAt; + + @Column(name="group") + private String group; + + + public Long getId() { + return id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public Instant getCreatedAt() { + return createdAt; + } + + public String getGroup() { + return group; + } + + public void setGroup(String group) { + this.group = group; + } + +} diff --git a/src/main/java/org/zaine/app/repositories/CompetenciesRepository.java b/src/main/java/org/zaine/app/repositories/CompetenciesRepository.java new file mode 100644 index 0000000..0d90ade --- /dev/null +++ b/src/main/java/org/zaine/app/repositories/CompetenciesRepository.java @@ -0,0 +1,9 @@ +package org.zaine.app.repositories; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.zaine.app.model.Competencies; + + +public interface CompetenciesRepository extends JpaRepository { + +} diff --git a/src/main/java/org/zaine/app/service/CompetenciesService.java b/src/main/java/org/zaine/app/service/CompetenciesService.java new file mode 100644 index 0000000..fd4f740 --- /dev/null +++ b/src/main/java/org/zaine/app/service/CompetenciesService.java @@ -0,0 +1,38 @@ +package org.zaine.app.service; + +import java.lang.System.Logger; +import java.util.List; +import java.util.Optional; + +import org.springframework.stereotype.Service; +import org.zaine.app.model.Competencies; +import org.zaine.app.repositories.CompetenciesRepository; + +@Service +public class CompetenciesService { + + private static final Logger logger = System.getLogger(CompetenciesService.class.getName()); + + private final CompetenciesRepository competenciesRepository; + + public CompetenciesService(CompetenciesRepository competenciesRepository) { + this.competenciesRepository = competenciesRepository; + } + + public List getAllCompetencies() { + return competenciesRepository.findAll(); + + } + + public Competencies getCompetencyById(Long id) { + // Log the method entry + + logger.log(System.Logger.Level.INFO, "Entering getCompetencyById with id: " + id); + + return competenciesRepository.findById(id).get(); + } + + + public void updateCompetencyState(Long id, String newState) { + } +} diff --git a/src/test/java/org/zaine/app/service/CompetenciesServiceTest.java b/src/test/java/org/zaine/app/service/CompetenciesServiceTest.java new file mode 100644 index 0000000..effb504 --- /dev/null +++ b/src/test/java/org/zaine/app/service/CompetenciesServiceTest.java @@ -0,0 +1,51 @@ +package org.zaine.app.service; + +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.zaine.app.repositories.CompetenciesRepository; + +import jakarta.validation.constraints.NotNull; + +import org.zaine.app.model.Competencies; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; +import java.util.Arrays; +import java.util.Optional; + +@ExtendWith(org.mockito.junit.jupiter.MockitoExtension.class) +public class CompetenciesServiceTest { + + @InjectMocks + private CompetenciesService competenciesService; + + @Mock + private CompetenciesRepository competenciesRepository; + + @Test + public void testGetAllCompetencies() { + Competencies comp1 = new Competencies(); + comp1.setTitle("Competency 1"); + Competencies comp2 = new Competencies(); + comp2.setTitle("Competency 2"); + when(competenciesRepository.findAll()).thenReturn(Arrays.asList(comp1, comp2)); + + java.util.List result = competenciesService.getAllCompetencies(); + assertEquals(2, result.size()); + assertSame(comp1, result.get(0)); + assertSame(comp2, result.get(1)); + } + + @Test + public void testGetCompetencyByIdReturnsCompetency() { + Competencies comp = new Competencies(); + @NotNull Long id = comp.getId(); + when(competenciesRepository.findById(id)).thenReturn(Optional.of(comp)); + + + Competencies result = competenciesService.getCompetencyById(id); + assertSame(comp, result); + + } +}