Skip to content
This repository was archived by the owner on May 11, 2025. It is now read-only.

#6 Desenvolvimento de API de Projetos #47

Open
wants to merge 109 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
9eb0f31
feat: add project_entity repository
damatomos Jan 31, 2025
ef44955
feat: add create project usecase
damatomos Feb 3, 2025
0080f53
feat: add create project gateway
damatomos Feb 3, 2025
48c77ac
refactor: change return of create project usecase
damatomos Feb 3, 2025
8d293c2
feat: add InternalServerErrorException
damatomos Feb 4, 2025
10bd3f9
feat: add create project usecase implementation
damatomos Feb 4, 2025
82b3fe0
chore: move all to infrastruture package from infrastructure layer
damatomos Feb 8, 2025
736491b
feat: add project mapper to tranform core project to entity project
damatomos Feb 9, 2025
fc1cf54
feat: add create project gateway implementation
damatomos Feb 9, 2025
d0cc97b
merge: resolve conflicts
damatomos Feb 9, 2025
745564c
test: ensures that ICreateProjectGateway is called correctly
damatomos Feb 9, 2025
16845b2
test: ensures that InternalServerErrorException is thrown when ICreat…
damatomos Feb 9, 2025
60c41b3
test: ensures that a success message is returned when ICreateProjectG…
damatomos Feb 9, 2025
9d19337
test: ensures that IProjectEntityRepository.save is called correctly
damatomos Feb 9, 2025
0e0b89c
refactor: rename display from CreateProjectGatewayImplTest test01
damatomos Feb 9, 2025
d62ab46
test: ensures that CreateProjectGatewayImpl returns true when success
damatomos Feb 9, 2025
1528c20
test: ensures that returns false when InternalServerErrorException is…
damatomos Feb 9, 2025
4f49e25
feat: add project config to generate project beans with spring
damatomos Feb 9, 2025
fced1ae
feat: add create project request dto
damatomos Feb 9, 2025
8017e9e
feat: add project controller with POST create project
damatomos Feb 9, 2025
c481ed2
test: ensures creation of project when POST ProjectController create
damatomos Feb 10, 2025
111d73a
test: ensures that return BadRequest when POST ProjectController crea…
damatomos Feb 10, 2025
18addc6
docs: documentation to POST create project in ProjectController
damatomos Feb 10, 2025
8fe8c2f
refactor: rename project api
damatomos Feb 18, 2025
8ef193e
remove lombok of root build.gradle
damatomos Feb 18, 2025
a065a26
refactor: remove InternalErrorException of project api
damatomos Feb 18, 2025
14348db
feat: add FindAllProjects in usecase layer
damatomos Feb 18, 2025
53b6772
feat: add FindAllProjectsGateway in application layer
damatomos Feb 18, 2025
6c71023
feat: add FindAllProjectsImpl in application layer
damatomos Feb 18, 2025
cb66e29
refactor: update Project in core layer
damatomos Feb 18, 2025
9e0b680
refactor: rename toEntity and add fromEntity in ProjectMapper
damatomos Feb 18, 2025
9ba971b
feat: implements FindAllProjectsGateway in ProjectGateway
damatomos Feb 18, 2025
4626f72
test: ensures that ProjectRepository.findAll is called correctly
damatomos Feb 18, 2025
526ff9a
refactor: rename projectRepository field in ProjectGateway
damatomos Feb 18, 2025
51efa53
feat: add findAllProjects in ProjectConfig
damatomos Feb 18, 2025
847cb82
feat: add findAll in ProjectController
damatomos Feb 18, 2025
b6e8686
test: ensures that a empty Project list is returned
damatomos Feb 18, 2025
b433b9d
test: ensures that return all projects correctly
damatomos Feb 20, 2025
aa47dad
feat: add RemoveProject in usecase layer
damatomos Feb 20, 2025
3c7284e
feat: add RemoveProjectGateway in application layer
damatomos Feb 20, 2025
ec8fed0
feat: add RemoveProjectImpl in application layer
damatomos Feb 20, 2025
ade0207
test: ensures that RemoveProjectGateway was called correctly
damatomos Feb 20, 2025
0ddad3e
test: ensures that a success message is returned when RemoveProjectGa…
damatomos Feb 20, 2025
abcd9e9
feat: add remove and ProjectGateway
damatomos Mar 18, 2025
b8b9fe3
test: ensures that ProjectRepository.remove is called correctly
damatomos Mar 18, 2025
94eb9d4
test: ensures that ProjectRepository.remove returns true when success
damatomos Mar 18, 2025
ad58507
test: ensures that a Project will be removed
damatomos Mar 18, 2025
5145f4c
feat: add removeProject in ProjectConfig
damatomos Mar 18, 2025
b1733ee
feat: add delete method in ProjectController
damatomos Mar 18, 2025
21a7e4d
refactor: dissolve remove of ProjectController to RemoveProjectContro…
damatomos Apr 1, 2025
94c286e
refactor: dissolve remove test of ProjectControllerTest to RemoveProj…
damatomos Apr 1, 2025
ce2fb08
refactor: dissolve create of ProjectController to CreateProjectContro…
damatomos Apr 13, 2025
4684fc8
feat: add response errors dto
damatomos Apr 13, 2025
f868c7e
feat: add ValidateFieldsExceptionHandler
damatomos Apr 13, 2025
09061bf
feat: add messages to CreateProjectRequestDTO
damatomos Apr 13, 2025
84e64b3
docs: documentation to POST create project in CreateProjectController
damatomos Apr 13, 2025
a36bd1c
docs: documentation to DELETE delete project in RemoveProjectController
damatomos Apr 13, 2025
9dd7622
docs: update tag to CreateProjectController
damatomos Apr 13, 2025
5e0aa31
refactor: dissolve findAll of ProjectController to FindAllProjectCont…
damatomos Apr 13, 2025
26bd58d
test: ensures that return 422 when request is invalid to CreateProjec…
damatomos Apr 13, 2025
396500f
feat: add UpdateProject in usecase layer
damatomos Apr 13, 2025
46eefdb
feat: add UpdateProjectGateway in application layer
damatomos Apr 13, 2025
7babb08
feat: add UpdateProjectImpl in application layer
damatomos Apr 13, 2025
ea47857
feat: add updateProject bean to ProjectConfig in infrastructure layer
damatomos Apr 13, 2025
d9bc24e
feat: add update to ProjectGateway in infrastructure layer
damatomos Apr 13, 2025
e4bc2cc
test: ensures that ProjectRepository.save is called correctly when up…
damatomos Apr 13, 2025
a0c53ac
test: ensures that returns true on success when update in ProjectGate…
damatomos Apr 13, 2025
8367429
feat: add UpdateProjectRequestDTO
damatomos Apr 13, 2025
919c184
fix: modify data of input to entity before update in ProjectGateway u…
damatomos Apr 13, 2025
fc1d334
feat: add UpdateProjectController
damatomos Apr 13, 2025
e6b0f37
docs: documentation to PUT update project in UpdateProjectController
damatomos Apr 13, 2025
17da3be
docs: documentation to GET find all project in FindAllProjectController
damatomos Apr 13, 2025
eed44f2
refactor: update find all projects
damatomos Apr 30, 2025
934f274
refactor: clear CreateProjectRequestDTO
damatomos Apr 30, 2025
64279d3
refactor: clear UpdateProjectRequestDTO
damatomos Apr 30, 2025
e9ff6d9
fix: update call of ProjectEntity in Test
damatomos Apr 30, 2025
6baab49
test: ensures that return all projects filtered by name
damatomos Apr 30, 2025
17bde9b
test: ensures that return all projects filtered by vacancies
damatomos Apr 30, 2025
27129d5
refactor: clear FindAllProjectControllerTest
damatomos Apr 30, 2025
dfee807
refactor: rename FindAllProjectControllerTest to FindAllProjectContro…
damatomos Apr 30, 2025
3ce23c4
refactor: rename infrastuture module to infrastructure
damatomos Apr 30, 2025
0b8399b
test: ensures that ProjectRepository.findAll is called correctly
damatomos Apr 30, 2025
7e5e14b
fix: update return of test when acceptTerms and when request is invalid
damatomos Apr 30, 2025
fe9f66c
refactor: change SignUpControllerTest to SignUpControllerIT
damatomos Apr 30, 2025
48160be
merge: resolve conflicts
damatomos Apr 30, 2025
5c2e3df
refactor: move MethodArgumentNotValidException to GlobalExceptionHandler
damatomos May 2, 2025
8767022
fix: resolve UUID to userId params
damatomos May 2, 2025
aa734b0
feat: add FindAllProjectsParams as params type of FindAllProjects
damatomos May 2, 2025
f5a08f6
refactor: resolve descriptions of tests in AddProjectImplTest
damatomos May 2, 2025
2ca836a
refactor: translate messages of UpdateProjectRequestDTO
damatomos May 2, 2025
634cae5
refactor: translate messages of CreateProjectRequestDTO
damatomos May 2, 2025
9020fab
fix: resolve multiple userGateway beans used by spring and add TokenD…
damatomos May 2, 2025
58f8df2
refactor: resolve UUID of userId in UpdateUserProfileSkillControllerIT
damatomos May 2, 2025
592c11f
feat: add FindProjectById in usecase layer
damatomos May 2, 2025
58091a6
feat: add FindProjectByIdGateway in application layer
damatomos May 2, 2025
c546a08
test: ensures that FindProjectByIdGateway is called correctly
damatomos May 2, 2025
7d1a845
test: ensures that FindProjectByIdGateway returns a project when called
damatomos May 2, 2025
db4f7c4
test: ensures that FindProjectByIdGateway returns null when a project…
damatomos May 2, 2025
ff93c5a
feat: add FindProjectByIdImpl
damatomos May 2, 2025
b0a6151
fix: add constructor to FindProjectByIdImpl
damatomos May 2, 2025
2cf9c95
feat: implements FindProjectById in ProjectGateway
damatomos May 2, 2025
8248f9c
feat: add FindProjectById bean in ProjectConfig
damatomos May 2, 2025
c3b7152
refactor: use FindProjectById and change dual responsability of updat…
damatomos May 2, 2025
7ab697c
feat: add RegisterAlreadyExistsException
damatomos May 2, 2025
db26378
feat: add RegisterDoesNotExistsException
damatomos May 2, 2025
25b271f
test: split test in respective identify classes for tests
damatomos May 3, 2025
9d9a753
test: ensures that ProjectRepository.findById is called correctly
damatomos May 3, 2025
dea0f88
test: ensures that projectGateway returns a Project when success
damatomos May 3, 2025
1356f7b
test: ensures that projectGateway throws RegisterDoesNotExistsExcepti…
damatomos May 3, 2025
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.nucleo42.application.gateway;

import com.nucleo42.entity.Project;

public interface AddProjectGateway {
Boolean create(Project project);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.nucleo42.application.gateway;

import com.nucleo42.entity.Project;
import com.nucleo42.usecase.findall.FindAllProjectsParams;

import java.util.List;

public interface FindAllProjectsGateway {
public List<Project> findAll(FindAllProjectsParams dto);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.nucleo42.application.gateway;

import com.nucleo42.entity.Project;

import java.util.UUID;

public interface FindProjectByIdGateway {
public Project findById(UUID id);
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package com.nucleo42.application.gateway;

import java.util.List;
import java.util.UUID;

import com.nucleo42.entity.Skill;

public interface IUpdateUserProfileSkillGateway {
boolean updateSkills(List<Skill> skills, String userId);
boolean updateSkills(List<Skill> skills, UUID userId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.nucleo42.application.gateway;

import java.util.UUID;

public interface RemoveProjectGateway {
Boolean remove(UUID id);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.nucleo42.application.gateway;

import com.nucleo42.entity.Project;

public interface UpdateProjectGateway {
Boolean update(Project project);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.nucleo42.application.usecase;

import com.nucleo42.application.gateway.AddProjectGateway;
import com.nucleo42.entity.Project;
import com.nucleo42.usecase.AddProject;

public class AddProjectImpl implements AddProject {

private final AddProjectGateway createProjectGateway;

public AddProjectImpl(AddProjectGateway createProjectGateway)
{
this.createProjectGateway = createProjectGateway;
}

@Override
public String create(Project project) {
createProjectGateway.create(project);
return "Project created successfully";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.nucleo42.application.usecase;

import com.nucleo42.application.gateway.FindAllProjectsGateway;
import com.nucleo42.entity.Project;
import com.nucleo42.usecase.findall.FindAllProjects;
import com.nucleo42.usecase.findall.FindAllProjectsParams;

import java.util.List;

public class FindAllProjectsImpl implements FindAllProjects {

private final FindAllProjectsGateway findAllProjectsGateway;

public FindAllProjectsImpl(FindAllProjectsGateway findAllProjectsGateway) {
this.findAllProjectsGateway = findAllProjectsGateway;
}

@Override
public List<Project> findAll(FindAllProjectsParams params) {
return findAllProjectsGateway.findAll(params);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.nucleo42.application.usecase;

import com.nucleo42.application.gateway.FindProjectByIdGateway;
import com.nucleo42.entity.Project;
import com.nucleo42.usecase.FindProjectById;

import java.util.UUID;

public class FindProjectByIdImpl implements FindProjectById {

private final FindProjectByIdGateway findProjectByIdGateway;

public FindProjectByIdImpl(FindProjectByIdGateway findProjectByIdGateway)
{
this.findProjectByIdGateway = findProjectByIdGateway;
}

@Override
public Project findById(UUID id) {
return findProjectByIdGateway.findById(id);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.nucleo42.application.usecase;

import com.nucleo42.application.gateway.RemoveProjectGateway;
import com.nucleo42.usecase.RemoveProject;

import java.util.UUID;

public class RemoveProjectImpl implements RemoveProject {

private RemoveProjectGateway removeProjectGateway;

public RemoveProjectImpl(RemoveProjectGateway removeProjectGateway) {
this.removeProjectGateway = removeProjectGateway;
}

@Override
public String remove(UUID id) {
this.removeProjectGateway.remove(id);
return "Project successfully removed";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.nucleo42.application.usecase;

import com.nucleo42.application.gateway.UpdateProjectGateway;
import com.nucleo42.entity.Project;
import com.nucleo42.usecase.UpdateProject;

public class UpdateProjectImpl implements UpdateProject {

private final UpdateProjectGateway updateProjectGateway;

public UpdateProjectImpl(UpdateProjectGateway updateProjectGateway) {
this.updateProjectGateway = updateProjectGateway;
}

@Override
public String update(Project project) {
this.updateProjectGateway.update(project);
return "Project updated successfully";
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.nucleo42.application.usecase;

import java.util.List;
import java.util.UUID;

import com.nucleo42.application.gateway.IUpdateUserProfileSkillGateway;
import com.nucleo42.entity.Skill;
Expand All @@ -14,7 +15,7 @@ public UpdateUserProfileSkillCaseImpl(IUpdateUserProfileSkillGateway skillGatewa
}

@Override
public boolean updateSkills(List<Skill> skills, String userId) {
public boolean updateSkills(List<Skill> skills, UUID userId) {
return skillGateway.updateSkills(skills, userId);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package com.nucleo42.application.usecase;

import com.nucleo42.application.gateway.AddProjectGateway;
import com.nucleo42.entity.Project;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;

import java.util.ArrayList;

import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;

@ExtendWith(MockitoExtension.class)
class AddProjectImplTest {

@InjectMocks
private AddProjectImpl addProjectImpl;

@Mock
private AddProjectGateway addProjectGateway;

private Project project;

@BeforeEach
void setup()
{
project = new Project(
"NucleoProject",
"Its a project",
12,
"Make a project",
new ArrayList<>(),
new ArrayList<>());
lenient().when(addProjectGateway.create(project)).thenReturn(true);
}

@Test
@DisplayName("Should call AddProjectGateway with correct value")
void test01() {
addProjectImpl.create(project);
verify(addProjectGateway).create(project);
}

@Test
@DisplayName("Should return success message when AddProjectGateway returns true")
void test3() {
when(addProjectGateway.create(project)).thenReturn(true);
assertEquals("Project created successfully", addProjectImpl.create(project));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package com.nucleo42.application.usecase;

import com.nucleo42.application.gateway.FindProjectByIdGateway;
import com.nucleo42.entity.Project;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;

import java.util.ArrayList;
import java.util.UUID;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.mockito.Mockito.*;

@ExtendWith(MockitoExtension.class)
public class FindProjectByIdTest {

@InjectMocks
private FindProjectByIdImpl findProjectById;

@Mock
private FindProjectByIdGateway findProjectByIdGateway;

private Project project;

private UUID projectId;

@BeforeEach
void setup()
{
projectId = UUID.randomUUID();
project = new Project(
projectId,
"NucleoProject",
"Its a project",
12,
"Make a project",
new ArrayList<>(),
new ArrayList<>(),
null,
null);
lenient().when(findProjectByIdGateway.findById(projectId)).thenReturn(project);
}

@Test
@DisplayName("Should call FindProjectByIdGateway with correct value")
void test01() {
findProjectById.findById(projectId);
verify(findProjectByIdGateway).findById(projectId);
}

@Test
@DisplayName("Should return the project when FindProjectByIdGateway is called")
void test2() {
when(findProjectByIdGateway.findById(projectId)).thenReturn(project);
assertEquals(project, findProjectById.findById(projectId));
}

@Test
@DisplayName("Should return null when project no exists")
void test03() {
UUID uuid = UUID.randomUUID();
when(findProjectByIdGateway.findById(uuid)).thenReturn(null);
assertNull(findProjectById.findById(uuid));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package com.nucleo42.application.usecase;

import com.nucleo42.application.gateway.RemoveProjectGateway;
import com.nucleo42.entity.Project;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;

import java.util.ArrayList;
import java.util.UUID;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.*;


@ExtendWith(MockitoExtension.class)
class RemoveProjectImplTest {

@InjectMocks
private RemoveProjectImpl removeProject;

@Mock
private RemoveProjectGateway removeProjectGateway;

private Project project;

@BeforeEach
void setup()
{
project = new Project(
UUID.randomUUID(),
"NucleoProject",
"Its a project",
12,
"Make a project",
new ArrayList<>(),
new ArrayList<>(),
null,
null);
lenient().when(removeProjectGateway.remove(project.getId())).thenReturn(true);
}

@Test
@DisplayName("Should call RemoveProjectGateway with correct value")
void test01() {
removeProject.remove(project.getId());
verify(removeProjectGateway).remove(project.getId());
}

@Test
@DisplayName("Should return success message when RemoveProjectGateway returns true")
void test2() {
when(removeProjectGateway.remove(project.getId())).thenReturn(true);
assertEquals("Project successfully removed", removeProject.remove(project.getId()));
}

}
2 changes: 0 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ repositories {
}

dependencies {
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

testImplementation platform('org.junit:junit-bom:5.10.0')
testImplementation 'org.junit.jupiter:junit-jupiter'
Expand Down
Loading