Skip to content

Commit

Permalink
RI-205: ajoute le champ posted_by a job posting (#213)
Browse files Browse the repository at this point in the history
  • Loading branch information
PaFlu-SDV committed Dec 12, 2021
1 parent 562fb67 commit 472001d
Show file tree
Hide file tree
Showing 10 changed files with 58 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.dynonuggets.refonteimplicaction.dto.JobPostingDto;
import com.dynonuggets.refonteimplicaction.model.Company;
import com.dynonuggets.refonteimplicaction.model.JobPosting;
import com.dynonuggets.refonteimplicaction.model.User;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;

Expand All @@ -15,6 +16,8 @@ public class JobPostingAdapter {

public JobPostingDto toDto(JobPosting model) {

final String username = model.getPoster() != null ? model.getPoster().getUsername() : "";
final Long userId = model.getPoster() != null ? model.getPoster().getId() : null;
CompanyDto companyDto = companyAdapter.toDto(model.getCompany());

return JobPostingDto.builder()
Expand All @@ -31,10 +34,12 @@ public JobPostingDto toDto(JobPosting model) {
.archive(model.isArchive())
.businessSector(model.getBusinessSector())
.valid(model.isValid())
.posterName(username)
.posterId(userId)
.build();
}

public JobPosting toModel(JobPostingDto dto) {
public JobPosting toModel(JobPostingDto dto, User user) {

Company company = companyAdapter.toModel(dto.getCompany());

Expand All @@ -52,6 +57,7 @@ public JobPosting toModel(JobPostingDto dto) {
.createdAt(dto.getCreatedAt())
.archive(dto.isArchive())
.valid(dto.isValid())
.poster(user)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,6 @@ public class JobPostingDto {
private boolean archive;
private boolean apply;
private boolean valid;

private Long posterId;
private String posterName;
}
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,9 @@ public class JobPosting {

@Column(name = "valid")
private boolean valid;

@ManyToOne
@JoinColumn(name = "posted_by")
private User poster;

}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public class JobPostingService {

public JobPostingDto createJob(JobPostingDto jobPostingDto) {

JobPosting jobPosting = jobPostingAdapter.toModel(jobPostingDto);
JobPosting jobPosting = jobPostingAdapter.toModel(jobPostingDto, authService.getCurrentUser());
jobPosting.setCreatedAt(Instant.now());
JobPosting jobSaved = jobPostingRepository.save(jobPosting);
return jobPostingAdapter.toDto(jobSaved);
Expand Down Expand Up @@ -73,7 +73,7 @@ private List<Long> getAllAppliesWithJobIdsIn(List<Long> jobIds, Long userId) {

@Transactional
public JobPostingDto saveOrUpdateJobPosting(final JobPostingDto jobPostingDto) {
JobPosting jobPosting = jobPostingAdapter.toModel(jobPostingDto);
JobPosting jobPosting = jobPostingAdapter.toModel(jobPostingDto, authService.getCurrentUser());
final JobPosting save = jobPostingRepository.save(jobPosting);
return jobPostingAdapter.toDto(save);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ class JobApplicationAdapterTest extends ControllerIntegrationTestBase {
@Test
void given_company_should_return_dto() {
// given
Company company = new Company(1234L, "World Company", "http://logo.com", "La World Company est une multinationale imaginaire basée aux États-Unis", "http://word-company.com");
JobPosting job = new JobPosting(34L, company, "Job de folie", "blablabla", "blablabla", "Paris", "240k", null, CDD, BusinessSectorEnum.ASSURANCE, Instant.now(), false, true);
User user = User.builder().id(87L).build();
Company company = new Company(1234L, "World Company", "http://logo.com", "La World Company est une multinationale imaginaire basée aux États-Unis", "http://word-company.com");
JobPosting job = new JobPosting(34L, company, "Job de folie", "blablabla", "blablabla", "Paris", "240k", null, CDD, BusinessSectorEnum.ASSURANCE, Instant.now(), false, true, user);
JobApplication model = new JobApplication(123L, job, user, PENDING, Instant.now(), false);

// when
Expand All @@ -40,8 +40,8 @@ void given_company_should_return_dto() {
void given_no_company_should_return_dto() {
// given
Company company = null;
JobPosting job = new JobPosting(34L, company, "Job de folie", "blablabla", "blablabla", "Paris", "240k", null, CDD, BusinessSectorEnum.ASSURANCE, Instant.now(), false, true);
User user = User.builder().id(87L).build();
JobPosting job = new JobPosting(34L, company, "Job de folie", "blablabla", "blablabla", "Paris", "240k", null, CDD, BusinessSectorEnum.ASSURANCE, Instant.now(), false, true, user);
JobApplication model = new JobApplication(123L, job, user, PENDING, Instant.now(), false);

// when
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

import com.dynonuggets.refonteimplicaction.dto.CompanyDto;
import com.dynonuggets.refonteimplicaction.dto.JobPostingDto;
import com.dynonuggets.refonteimplicaction.model.BusinessSectorEnum;
import com.dynonuggets.refonteimplicaction.model.Company;
import com.dynonuggets.refonteimplicaction.model.JobPosting;
import com.dynonuggets.refonteimplicaction.model.User;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

Expand All @@ -16,15 +18,20 @@ class JobPostingAdapterTest {
CompanyDto companyDto;
Company company;
JobPosting jobPosting;
JobPostingDto expectedJobPostingDto;
JobPostingAdapter jobPostingAdapter;
CompanyAdapter companyAdapter;
User user;
Instant createdAt;

@BeforeEach
public void setUp() {
companyAdapter = new CompanyAdapter();
jobPostingAdapter = new JobPostingAdapter(companyAdapter);
company = new Company(1L, "urlModel", "logo", "name", "description");
companyDto = new CompanyDto(1L, "urlModel", "logo", "name", "description");
user = User.builder().id(2L).username("user").build();
createdAt = Instant.now();

jobPosting = JobPosting.builder()
.id(7L)
Expand All @@ -36,31 +43,45 @@ public void setUp() {
.salary("salary")
.keywords("keywords")
.contractType(CDD)
.createdAt(Instant.now())
.businessSector(BusinessSectorEnum.ASSURANCE)
.createdAt(createdAt)
.archive(false)
.valid(true)
.poster(user)
.build();

expectedJobPostingDto = JobPostingDto.builder()
.id(7L)
.company(companyDto)
.title("title")
.shortDescription("short_description")
.description("description")
.location("location")
.salary("salary")
.keywords("keywords")
.contractType(CDD)
.businessSector(BusinessSectorEnum.ASSURANCE)
.createdAt(createdAt)
.archive(false)
.valid(true)
.posterId(user.getId())
.posterName(user.getUsername())
.build();
}

@Test
void toDtoTest() {

JobPostingDto jobPostingDto = jobPostingAdapter.toDto(jobPosting);

assertThat(jobPostingDto.getId()).isEqualTo(jobPosting.getId());
assertThat(jobPostingDto.getTitle()).isEqualTo(jobPosting.getTitle());
assertThat(jobPostingDto.getShortDescription()).isEqualTo(jobPosting.getShortDescription());
assertThat(jobPostingDto.getDescription()).isEqualTo(jobPosting.getDescription());
assertThat(jobPostingDto.getLocation()).isEqualTo(jobPosting.getLocation());
assertThat(jobPostingDto.getSalary()).isEqualTo(jobPosting.getSalary());
assertThat(jobPostingDto.getKeywords()).isEqualTo(jobPosting.getKeywords());
assertThat(jobPostingDto.getContractType()).isEqualTo(CDD);
assertThat(jobPostingDto.getCreatedAt()).isEqualTo(jobPosting.getCreatedAt());
assertThat(jobPostingDto).usingRecursiveComparison()
.isEqualTo(expectedJobPostingDto);
}

@Test
void toModelTest() {
final JobPostingDto dto = jobPostingAdapter.toDto(jobPosting);

final JobPosting expectedJobPosting = jobPostingAdapter.toModel(dto);
final JobPosting expectedJobPosting = jobPostingAdapter.toModel(dto, user);

assertThat(jobPosting).usingRecursiveComparison()
.isEqualTo(expectedJobPosting);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ class JobApplicationServiceTest extends ControllerIntegrationTestBase {
void should_create_apply() {
// given
JobApplicationRequest request = new JobApplicationRequest(123L, PENDING, null);
JobPosting job = new JobPosting(123L, Company.builder().id(23L).build(), "Mon super job", "Il est trop cool", "Blablabla", "Paris", "140k", null, CDI, BusinessSectorEnum.ASSURANCE, Instant.now(), false, true);
final User currentUser = User.builder().id(45L).build();
JobPosting job = new JobPosting(123L, Company.builder().id(23L).build(), "Mon super job", "Il est trop cool", "Blablabla", "Paris", "140k", null, CDI, BusinessSectorEnum.ASSURANCE, Instant.now(), false, true, currentUser);
JobApplication jobApplication = new JobApplication(67L, job, currentUser, request.getStatus(), Instant.now(), false);
JobApplicationDto expectedDto = new JobApplicationDto(jobApplication.getId(), jobApplication.getJob().getId(), jobApplication.getJob().getTitle(), jobApplication.getJob().getCompany().getName(), jobApplication.getJob().getCompany().getLogo(), jobApplication.getStatus().name(), "Paris (75)", CDI, false);
given(jobRepository.findById(anyLong())).willReturn(Optional.of(job));
Expand Down Expand Up @@ -103,8 +103,8 @@ void should_throw_exception_when_creating_with_already_applied_job() {
JobApplicationRequest request = new JobApplicationRequest(jobId, PENDING, null);
IllegalArgumentException expectedException = new IllegalArgumentException(String.format(APPLY_ALREADY_EXISTS_FOR_JOB, jobId));
final JobApplication apply = JobApplication.builder().id(123L).build();
JobPosting job = new JobPosting(123L, Company.builder().id(23L).build(), "Mon super job", "Il est trop cool", "Blablabla", "Paris", "140k", null, CDI, BusinessSectorEnum.ASSURANCE, Instant.now(), false, true);
User currentUser = User.builder().id(123L).build();
JobPosting job = new JobPosting(123L, Company.builder().id(23L).build(), "Mon super job", "Il est trop cool", "Blablabla", "Paris", "140k", null, CDI, BusinessSectorEnum.ASSURANCE, Instant.now(), false, true, currentUser);
given(jobRepository.findById(anyLong())).willReturn(Optional.of(job));
given(authService.getCurrentUser()).willReturn(currentUser);
given(applyRepository.findByJob_IdAndUser_id(anyLong(), anyLong())).willReturn(Optional.of(apply));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ export class LoginComponent implements OnInit {
.subscribe(
params => this.router
.navigateByUrl(params.returnUrl || Univers.HOME.url)
.then(() => this.toaster.success('Félicitations', 'Vous êtes maintenant connecté')),
.then(() => this.toaster.success('Success', 'Login Successful')),
error => console.log(error)
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ export class HeaderComponent implements OnInit, OnDestroy {
this.router
.navigateByUrl('/')
.then(() => {
this.toaster.success('Félicitations', 'Vous êtes deconnecté!');
this.toaster.success('Success', 'You are now logged out!');
});
});
}
Expand Down
2 changes: 2 additions & 0 deletions frontend-implicaction/src/app/shared/models/job-posting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,6 @@ export interface JobPosting {
apply?: boolean;
archive?: boolean;
active?: boolean;
posterId?: string;
posterName?: string;
}

0 comments on commit 472001d

Please sign in to comment.