working on competency api

This commit is contained in:
2026-01-03 12:42:51 +00:00
parent 983b14e65d
commit 27719e7f08
5 changed files with 202 additions and 0 deletions

View File

@@ -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<Competencies> 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);
}
}

View File

@@ -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;
}
}

View File

@@ -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<Competencies, Long> {
}

View File

@@ -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<Competencies> 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) {
}
}

View File

@@ -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<Competencies> 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);
}
}