Skip to content

Commit

Permalink
[Admin cabinet] Fix Position and PositionDTOs, Add tests to all Posit…
Browse files Browse the repository at this point in the history
…ion DTOs (#1147)

* Added test for Position DTOS

* Changed fields from nameEN to nameEn

* Change annotation to @DaTa

* Replaced lombok.*

* deleted unnecessary import
  • Loading branch information
ospodaryk authored Jun 23, 2023
1 parent cbc162c commit 4e097fb
Show file tree
Hide file tree
Showing 20 changed files with 215 additions and 63 deletions.
2 changes: 1 addition & 1 deletion core/src/test/java/greencity/ModelUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ public static PositionDto getPositionDto() {
return PositionDto.builder()
.id(1L)
.name("Водій")
.nameEN("Driver")
.nameEn("Driver")
.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public class Position {
private String name;

@Column(nullable = false, length = 30, unique = true, name = "name_eng")
private String nameEN;
private String nameEn;

@ManyToMany(mappedBy = "employeePosition")
private Set<Employee> employees;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
package greencity.dto.position;

import lombok.*;

import lombok.Data;
import lombok.Builder;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString
@Data
public class AddingPositionDto {
@NotNull
@Pattern(regexp = "[ЁёІіЇїҐґЄєА-Яа-яA-Za-z-'\\s.]{1,30}")
private String name;
@Pattern(regexp = "[A-Za-z-'\\s.]{1,30}")
private String nameEN;
private String nameEn;
}
Original file line number Diff line number Diff line change
@@ -1,22 +1,11 @@
package greencity.dto.position;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

import java.util.List;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString
@EqualsAndHashCode
@Data
public class PositionAuthoritiesDto {
List<Long> positionId;
List<String> authorities;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,17 @@
package greencity.dto.position;

import lombok.*;

import lombok.Data;
import lombok.Builder;
import javax.validation.constraints.Min;
import javax.validation.constraints.Pattern;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@EqualsAndHashCode
@ToString
@Data
public class PositionDto {
@Min(1)
private Long id;
@Pattern(regexp = "[ЁёІіЇїҐґЄєА-Яа-яA-Za-z-'\\s.]{1,30}")
private String name;
@Pattern(regexp = "[A-Za-z-'\\s.]{1,30}")
private String nameEN;
private String nameEn;
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
package greencity.dto.position;

import lombok.*;

import lombok.Data;
import lombok.Builder;
import javax.validation.constraints.Min;
import java.util.Map;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@EqualsAndHashCode
@ToString
@Data
public class PositionWithTranslateDto {
@Min(1)
private Long id;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package greencity.dto.position;

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;

import java.lang.reflect.Field;

import static org.junit.jupiter.api.Assertions.assertEquals;

class AddingPositionDtoTest {
void nameRegex(String name, boolean validates) throws NoSuchFieldException {
Field field = AddingPositionDto.class.getDeclaredField("name");
javax.validation.constraints.Pattern[] annotations =
field.getAnnotationsByType(javax.validation.constraints.Pattern.class);
assertEquals(name.matches(annotations[0].regexp()), validates);
}

@ParameterizedTest
@ValueSource(
strings = {"John Doe", "абвгґіїьяюєАБВГҐІЇЬЯЮЄ", "John-Doe", "John Doe", "John'Doe",
"SymbolsIsValidNameLength"})
void testValidName(String name) throws NoSuchFieldException {
nameRegex(name, true);
}

@ParameterizedTest
@ValueSource(
strings = {"", "31SymbolsIsInvalidNameLengthForAddingPosition"})
void testInvalidName(String name) throws NoSuchFieldException {
nameRegex(name, false);
}

void nameEnRegex(String nameEn, boolean validates) throws NoSuchFieldException {
Field field = AddingPositionDto.class.getDeclaredField("nameEn");
javax.validation.constraints.Pattern[] annotations =
field.getAnnotationsByType(javax.validation.constraints.Pattern.class);
assertEquals(nameEn.matches(annotations[0].regexp()), validates);
}

@ParameterizedTest
@ValueSource(
strings = {"John Doe", "John-Doe", "John Doe", "John'Doe",
"SymbolsIsValidNameLengthForAdd"})
void testValidNameEn(String nameEn) throws NoSuchFieldException {
nameEnRegex(nameEn, true);
}

@ParameterizedTest
@ValueSource(
strings = {"", "31SymbolsIsInvalidNameLengthForAddingPosition"})
void testInvalidNameEn(String nameEn) throws NoSuchFieldException {
nameEnRegex(nameEn, false);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package greencity.dto.position;

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;

import java.lang.reflect.Field;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;

class PositionDtoTest {

void nameRegex(String name, boolean validates) throws NoSuchFieldException {
Field field = PositionDto.class.getDeclaredField("name");
javax.validation.constraints.Pattern[] annotations =
field.getAnnotationsByType(javax.validation.constraints.Pattern.class);
assertEquals(name.matches(annotations[0].regexp()), validates);
}

void nameEnRegex(String nameEn, boolean validates) throws NoSuchFieldException {
Field field = PositionDto.class.getDeclaredField("nameEn");
javax.validation.constraints.Pattern[] annotations =
field.getAnnotationsByType(javax.validation.constraints.Pattern.class);
assertEquals(nameEn.matches(annotations[0].regexp()), validates);
}

@ParameterizedTest
@ValueSource(longs = {1, 2, 3, 1000, 10000})
void testValidId(Long id) throws NoSuchFieldException {
Field field = PositionDto.class.getDeclaredField("id");
javax.validation.constraints.Min[] annotations =
field.getAnnotationsByType(javax.validation.constraints.Min.class);
assertTrue(id >= annotations[0].value());
}

@ParameterizedTest
@ValueSource(longs = {0, -1, -100, -1000})
void testInvalidId(Long id) throws NoSuchFieldException {
Field field = PositionDto.class.getDeclaredField("id");
javax.validation.constraints.Min[] annotations =
field.getAnnotationsByType(javax.validation.constraints.Min.class);
assertTrue(id < annotations[0].value());
}

@ParameterizedTest
@ValueSource(
strings = {"John Doe", "абвгґіїьяюєАБВГҐІЇЬЯЮЄ", "John-Doe", "John Doe", "John'Doe",
"SymbolsIsValidNameLength"})
void testValidName(String name) throws NoSuchFieldException {
nameRegex(name, true);
}

@ParameterizedTest
@ValueSource(
strings = {"", "31SymbolsIsInvalidNameLengthForAddingPosition"})
void testInvalidName(String name) throws NoSuchFieldException {
nameRegex(name, false);
}

@ParameterizedTest
@ValueSource(
strings = {"John Doe", "John-Doe", "John Doe", "John'Doe",
"SymbolsIsValidNameLengthForAdd"})
void testValidNameEn(String nameEn) throws NoSuchFieldException {
nameEnRegex(nameEn, true);
}

@ParameterizedTest
@ValueSource(
strings = {"", "31SymbolsIsInvalidNameLengthForAddingPosition"})
void testInvalidNameEn(String nameEn) throws NoSuchFieldException {
nameEnRegex(nameEn, false);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package greencity.dto.position;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;

import java.lang.reflect.Field;
import java.util.Map;

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

class PositionWithTranslateDtoTest {

void idValidation(Long id, boolean validates) throws NoSuchFieldException {
Field field = PositionWithTranslateDto.class.getDeclaredField("id");
javax.validation.constraints.Min[] annotations =
field.getAnnotationsByType(javax.validation.constraints.Min.class);
assertEquals(id >= annotations[0].value(), validates);
}

@ParameterizedTest
@ValueSource(longs = {1, 2, 3, 1000, 10000})
void testValidId(Long id) throws NoSuchFieldException {
idValidation(id, true);
}

@ParameterizedTest
@ValueSource(longs = {0, -1, -100, -1000})
void testInvalidId(Long id) throws NoSuchFieldException {
idValidation(id, false);
}

@Test
void testValidNameMap() {
PositionWithTranslateDto dto =
new PositionWithTranslateDto(1L, Map.of("en", "Valid Name", "ua", "Дійсне ім'я"));
assertEquals("Valid Name", dto.getName().get("en"));
assertEquals("Дійсне ім'я", dto.getName().get("ua"));
}

@Test
void testInvalidNameMap() {
PositionWithTranslateDto dto = new PositionWithTranslateDto(1L, Map.of("", "Name"));
assertTrue(dto.getName().containsKey(""));
dto = new PositionWithTranslateDto(1L, Map.of("en", ""));
assertTrue(dto.getName().containsValue(""));
dto = new PositionWithTranslateDto(1L, null);
assertNull(dto.getName());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ protected Employee convert(AddEmployeeDto dto) {
.map(p -> Position.builder()
.id(p.getId())
.name(p.getName())
.nameEN(p.getNameEN())
.nameEn(p.getNameEn())
.build())
.collect(Collectors.toSet()))
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ protected EmployeeWithTariffsIdDto convert(Employee employee) {
.map(position -> PositionDto.builder()
.id(position.getId())
.name(position.getName())
.nameEN(position.getNameEN())
.nameEn(position.getNameEn())
.build())
.collect(Collectors.toList()))
.build())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ protected EmployeeWithTariffsDto convert(Employee employee) {
.map(position -> PositionDto.builder()
.id(position.getId())
.name(position.getName())
.nameEN(position.getNameEN())
.nameEn(position.getNameEn())
.build())
.collect(Collectors.toList()))
.build())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ protected PositionDto convert(Position position) {
return PositionDto.builder()
.id(position.getId())
.name(position.getName())
.nameEN(position.getNameEN())
.nameEn(position.getNameEn())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package greencity.mapping.employee;

import greencity.dto.position.PositionDto;
import greencity.dto.position.PositionWithTranslateDto;
import greencity.entity.user.employee.Position;
import org.modelmapper.AbstractConverter;
Expand All @@ -25,7 +24,7 @@ public class PositionDtoWithTranslateMapper extends AbstractConverter<Position,
protected PositionWithTranslateDto convert(Position position) {
Map<String, String> nameTranslations = new HashMap<>();
nameTranslations.put("ua", position.getName());
nameTranslations.put("en", position.getNameEN());
nameTranslations.put("en", position.getNameEn());

return PositionWithTranslateDto.builder()
.id(position.getId())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ protected Position convert(PositionDto positionDto) {
return Position.builder()
.id(positionDto.getId())
.name(positionDto.getName())
.nameEN(positionDto.getNameEN())
.nameEn(positionDto.getNameEn())
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ protected Employee convert(EmployeeWithTariffsIdDto employeeWithTariffsIdDto) {
.map(positionDto -> Position.builder()
.id(positionDto.getId())
.name(positionDto.getName())
.nameEN(positionDto.getNameEN())
.nameEn(positionDto.getNameEn())
.build())
.collect(Collectors.toSet()))
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ protected PositionDto convert(EmployeeFilterView employeeFilterView) {
return PositionDto.builder()
.id(employeeFilterView.getPositionId())
.name(employeeFilterView.getPositionName())
.nameEN(employeeFilterView.getPositionNameEn())
.nameEn(employeeFilterView.getPositionNameEn())
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ private void signUpEmployee(Employee employee) {
.map(position -> PositionDto.builder()
.id(position.getId())
.name(position.getName())
.nameEN(position.getNameEN())
.nameEn(position.getNameEn())
.build())
.collect(Collectors.toList()))
.isUbs(true)
Expand Down Expand Up @@ -321,7 +321,7 @@ public PositionDto create(AddingPositionDto dto) {
private Position buildPosition(AddingPositionDto dto) {
return Position.builder()
.name(dto.getName())
.nameEN(dto.getNameEN())
.nameEn(dto.getNameEn())
.build();
}

Expand Down
Loading

0 comments on commit 4e097fb

Please sign in to comment.