From 1f535d5604a51e7cfc3e60e23ae2123512109e82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BB=D0=B0=D0=B2=D0=B0?= Date: Mon, 27 Jan 2025 18:05:31 +0400 Subject: [PATCH 1/3] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20?= =?UTF-8?q?=D1=82=D0=B7=2010=D0=BE=D0=B3=D0=BE=20=D1=81=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D0=BD=D1=82=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filmorate/FilmorateApplication.java | 6 +- .../filmorate/controller/FilmController.java | 60 +++++++++++- .../filmorate/controller/UserController.java | 63 ++++++++++++ .../exception/ValidationException.java | 7 ++ .../practicum/filmorate/model/Film.java | 16 ++- .../practicum/filmorate/model/User.java | 17 ++++ .../controller/FilmControllerTest.java | 91 +++++++++++++++++ .../controller/UserControllerTest.java | 98 +++++++++++++++++++ 8 files changed, 350 insertions(+), 8 deletions(-) create mode 100644 src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java create mode 100644 src/main/java/ru/yandex/practicum/filmorate/exception/ValidationException.java create mode 100644 src/main/java/ru/yandex/practicum/filmorate/model/User.java create mode 100644 src/test/java/ru/yandex/practicum/filmorate/controller/FilmControllerTest.java create mode 100644 src/test/java/ru/yandex/practicum/filmorate/controller/UserControllerTest.java diff --git a/src/main/java/ru/yandex/practicum/filmorate/FilmorateApplication.java b/src/main/java/ru/yandex/practicum/filmorate/FilmorateApplication.java index dca451b..843905e 100644 --- a/src/main/java/ru/yandex/practicum/filmorate/FilmorateApplication.java +++ b/src/main/java/ru/yandex/practicum/filmorate/FilmorateApplication.java @@ -5,8 +5,8 @@ @SpringBootApplication public class FilmorateApplication { - public static void main(String[] args) { - SpringApplication.run(FilmorateApplication.class, args); - } + public static void main(String[] args) { + SpringApplication.run(FilmorateApplication.class, args); + } } diff --git a/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java b/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java index 08cf0a1..1bd6af6 100644 --- a/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java +++ b/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java @@ -1,7 +1,65 @@ package ru.yandex.practicum.filmorate.controller; -import org.springframework.web.bind.annotation.RestController; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; +import ru.yandex.practicum.filmorate.exception.ValidationException; +import ru.yandex.practicum.filmorate.model.Film; + +import java.time.LocalDate; +import java.time.Month; +import java.util.ArrayList; +import java.util.List; @RestController +@RequestMapping("/films") +@Slf4j public class FilmController { + private final List films = new ArrayList<>(); + private int nextId = 1; + + @GetMapping + public List getFilms() { + return films; + } + + + @PostMapping + public Film createFilm(@RequestBody Film film) { + LocalDate date = LocalDate.of(1895, Month.DECEMBER, 28); + if (film.getName() == null || film.getName().isEmpty()) { + throw new ValidationException("Название фильма не может быть пустым"); + } + if (film.getDescription().length() > 200) { + throw new ValidationException("Максимальная длина описания — 200 символов"); + } + if (film.getReleaseDate().isBefore(date)) { + throw new ValidationException("Дата релиза — не раньше 28 декабря 1895 года"); + } + if (film.getDuration() <= 0) { + throw new ValidationException("Продолжительность фильма должна быть положительным числом"); + } + film.setId(getNextId()); + films.add(film); + log.debug("Фильм успешно добавлен"); + return film; + + } + + @PutMapping + public Film updateFilm(@RequestBody Film newFilm) { + for (Film film : films) { + if (newFilm != null && film.getId() == newFilm.getId()) { + films.remove(film); + films.add(newFilm); + log.debug("Фильм успешно изменён"); + return newFilm; + } + } + throw new ValidationException("Некорректный Id"); + } + + private int getNextId() { + return nextId++; + + } } diff --git a/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java b/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java new file mode 100644 index 0000000..9762ac8 --- /dev/null +++ b/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java @@ -0,0 +1,63 @@ +package ru.yandex.practicum.filmorate.controller; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; +import ru.yandex.practicum.filmorate.exception.ValidationException; +import ru.yandex.practicum.filmorate.model.User; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + +@RestController +@RequestMapping("/users") +@Slf4j +public class UserController { + private final List users = new ArrayList<>(); + private int nextId = 1; + + @GetMapping + public List getUsers() { + return users; + } + + @PostMapping + public User createUser(@RequestBody User user) { + if (user.getEmail().isEmpty() || !user.getEmail().contains("@")) { + throw new ValidationException("Электронная почта не может быть пустой и должна содержать символ @"); + } + if (user.getLogin().isEmpty() || user.getLogin().contains(" ")) { + throw new ValidationException("Логин не может быть пустым и содержать пробелы"); + } + if (user.getName() == null) { + user.setName(user.getLogin()); + } + if (user.getBirthday().isAfter(LocalDate.now())) { + throw new ValidationException("Дата рождения не может быть в будущем"); + } + user.setId(getNextId()); + users.add(user); + log.debug("Пользователь успешно добавлен"); + return user; + } + + @PutMapping + public User updateUser(@RequestBody User newUser) { + for (User user : users) { + if (newUser != null && user.getId() == newUser.getId()) { + users.remove(user); + users.add(newUser); + log.debug("Пользователь успешно изменён"); + return newUser; + } + } + throw new ValidationException("Некорректный Id"); + + } + + + private int getNextId() { + return nextId++; + + } +} diff --git a/src/main/java/ru/yandex/practicum/filmorate/exception/ValidationException.java b/src/main/java/ru/yandex/practicum/filmorate/exception/ValidationException.java new file mode 100644 index 0000000..52dc49c --- /dev/null +++ b/src/main/java/ru/yandex/practicum/filmorate/exception/ValidationException.java @@ -0,0 +1,7 @@ +package ru.yandex.practicum.filmorate.exception; + +public class ValidationException extends RuntimeException { + public ValidationException(String message) { + super(message); + } +} diff --git a/src/main/java/ru/yandex/practicum/filmorate/model/Film.java b/src/main/java/ru/yandex/practicum/filmorate/model/Film.java index 3614a44..741d3d6 100644 --- a/src/main/java/ru/yandex/practicum/filmorate/model/Film.java +++ b/src/main/java/ru/yandex/practicum/filmorate/model/Film.java @@ -1,12 +1,20 @@ package ru.yandex.practicum.filmorate.model; -import lombok.Getter; -import lombok.Setter; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; /** * Film. */ -@Getter -@Setter +@Data +@NoArgsConstructor public class Film { + private Integer id; + private String name; + private String description; + private LocalDate releaseDate; + private Long duration; + } diff --git a/src/main/java/ru/yandex/practicum/filmorate/model/User.java b/src/main/java/ru/yandex/practicum/filmorate/model/User.java new file mode 100644 index 0000000..0bdc83c --- /dev/null +++ b/src/main/java/ru/yandex/practicum/filmorate/model/User.java @@ -0,0 +1,17 @@ +package ru.yandex.practicum.filmorate.model; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; + +@Data +@NoArgsConstructor +public class User { + private Integer id; + private String email; + private String login; + private String name; + private LocalDate birthday; + +} diff --git a/src/test/java/ru/yandex/practicum/filmorate/controller/FilmControllerTest.java b/src/test/java/ru/yandex/practicum/filmorate/controller/FilmControllerTest.java new file mode 100644 index 0000000..a828ece --- /dev/null +++ b/src/test/java/ru/yandex/practicum/filmorate/controller/FilmControllerTest.java @@ -0,0 +1,91 @@ +package ru.yandex.practicum.filmorate.controller; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import ru.yandex.practicum.filmorate.exception.ValidationException; +import ru.yandex.practicum.filmorate.model.Film; + +import java.time.LocalDate; +import java.util.Collection; + +import static org.junit.jupiter.api.Assertions.*; + +@SpringBootTest +public class FilmControllerTest { + + @Autowired + private FilmController filmController; + + @Test + public void returnFilmsTest() { + Film film1 = new Film(); + film1.setName("filmName1"); + film1.setDescription("Descr1"); + film1.setReleaseDate(LocalDate.of(2023, 12, 15)); + film1.setDuration(168L); + + Film film2 = new Film(); + film2.setName("filmName2"); + film2.setDescription("Descr2"); + film2.setReleaseDate(LocalDate.of(2023, 12, 15)); + film2.setDuration(168L); + + filmController.createFilm(film1); + filmController.createFilm(film2); + + Collection films = filmController.getFilms(); + + assertTrue(films.contains(film1)); + assertTrue(films.contains(film2)); + } + + @Test + void filmsValidTest() { + Film film = new Film(); + film.setName("filmName1"); + film.setDescription("Descr1"); + film.setReleaseDate(LocalDate.of(2023, 12, 15)); + film.setDuration(168L); + + Film savedFilm = filmController.createFilm(film); + + assertNotNull(savedFilm.getId()); + assertEquals("filmName1", savedFilm.getName()); + assertEquals("Descr1", savedFilm.getDescription()); + assertEquals(LocalDate.of(2023, 12, 15), savedFilm.getReleaseDate()); + assertEquals(168L, savedFilm.getDuration()); + + film.setName(null); + assertThrows(ValidationException.class, () -> filmController.createFilm(film)); + + film.setName("filmName1"); + film.setDescription("1111111111111111111111111111111111111111111111111111111111111111111" + + "111111111111111111111111111111111111111111111111111111111111111111111111111111111" + + "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"); + assertThrows(ValidationException.class, () -> filmController.createFilm(film)); + + film.setDescription("Descr1"); + film.setReleaseDate(LocalDate.of(1894, 12, 15)); + assertThrows(ValidationException.class, () -> filmController.createFilm(film)); + + film.setReleaseDate(LocalDate.of(2023, 12, 15)); + film.setDuration(-1L); + assertThrows(ValidationException.class, () -> filmController.createFilm(film)); + } + + @Test + void updateFilmTest() { + Film film = new Film(); + film.setName("filmName1"); + film.setDescription("Descr1"); + film.setReleaseDate(LocalDate.of(2023, 12, 15)); + film.setDuration(168L); + + filmController.createFilm(film); + + Film filmUpdate = new Film(); + filmUpdate.setId(8); + assertThrows(ValidationException.class, () -> filmController.updateFilm(filmUpdate)); + } +} diff --git a/src/test/java/ru/yandex/practicum/filmorate/controller/UserControllerTest.java b/src/test/java/ru/yandex/practicum/filmorate/controller/UserControllerTest.java new file mode 100644 index 0000000..a997ea0 --- /dev/null +++ b/src/test/java/ru/yandex/practicum/filmorate/controller/UserControllerTest.java @@ -0,0 +1,98 @@ +package ru.yandex.practicum.filmorate.controller; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import ru.yandex.practicum.filmorate.exception.ValidationException; +import ru.yandex.practicum.filmorate.model.User; + +import java.time.LocalDate; +import java.util.Collection; + +import static org.junit.jupiter.api.Assertions.*; + + +@SpringBootTest +public class UserControllerTest { + + @Autowired + private UserController userController = new UserController(); + + @Test + public void returnsUsersTest() { + User user1 = new User(); + user1.setEmail("user1@yandex.ru"); + user1.setLogin("user1"); + user1.setName("User1"); + user1.setBirthday(LocalDate.of(1999, 8, 6)); + + User user2 = new User(); + user2.setEmail("user2@yandex.ru"); + user2.setLogin("user2"); + user2.setName("User2"); + user2.setBirthday(LocalDate.of(1991, 3, 20)); + + userController.createUser(user1); + userController.createUser(user2); + + Collection users = userController.getUsers(); + + assertTrue(users.contains(user1)); + assertTrue(users.contains(user2)); + } + + @Test + void userValidTest() { + User user = new User(); + user.setEmail("user1@yandex.ru"); + user.setLogin("user1"); + user.setName("user1"); + user.setBirthday(LocalDate.of(1999, 8, 6)); + + User savedUser1 = userController.createUser(user); + + assertNotNull(savedUser1.getId()); + assertEquals("user1@yandex.ru", savedUser1.getEmail()); + assertEquals("user1", savedUser1.getLogin()); + assertEquals("user1", savedUser1.getName()); + assertEquals(LocalDate.of(1999, 8, 6), savedUser1.getBirthday()); + + user.setEmail("12345"); + assertThrows(RuntimeException.class, () -> userController.createUser(user)); + + user.setEmail("user3.com"); + assertThrows(ValidationException.class, () -> userController.createUser(user)); + + user.setEmail("user1@yandex.ru"); + user.setLogin(""); + assertThrows(RuntimeException.class, () -> userController.createUser(user)); + + user.setLogin(null); + assertThrows(RuntimeException.class, () -> userController.createUser(user)); + + user.setLogin("user 1"); + assertThrows(ValidationException.class, () -> userController.createUser(user)); + + user.setBirthday(LocalDate.now().plusMonths(5)); + assertThrows(ValidationException.class, () -> userController.createUser(user)); + } + + @Test + void updateUserTest() { + User user1 = new User(); + user1.setEmail("user1@yandex.ru"); + user1.setLogin("user1"); + user1.setName(null); + user1.setBirthday(LocalDate.of(1999, 8, 6)); + + userController.createUser(user1); + + User userUpdate = new User(); + userUpdate.setEmail("user1@yandex.ru"); + userUpdate.setLogin("user1"); + userUpdate.setName(null); + userUpdate.setBirthday(LocalDate.of(1999, 8, 6)); + userUpdate.setId(8); + assertThrows(ValidationException.class, () -> userController.updateUser(userUpdate)); + } +} From b74f0a4d6bdfd249c6ded329187c459d7f93edb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BB=D0=B0=D0=B2=D0=B0?= Date: Mon, 27 Jan 2025 18:10:07 +0400 Subject: [PATCH 2/3] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20?= =?UTF-8?q?=D1=82=D0=B7=2010=D0=BE=D0=B3=D0=BE=20=D1=81=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D0=BD=D1=82=D0=B0.=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=BB=D1=8F=20=D1=82?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../practicum/filmorate/controller/UserControllerTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/ru/yandex/practicum/filmorate/controller/UserControllerTest.java b/src/test/java/ru/yandex/practicum/filmorate/controller/UserControllerTest.java index a997ea0..b627774 100644 --- a/src/test/java/ru/yandex/practicum/filmorate/controller/UserControllerTest.java +++ b/src/test/java/ru/yandex/practicum/filmorate/controller/UserControllerTest.java @@ -15,6 +15,7 @@ @SpringBootTest public class UserControllerTest { + @Autowired private UserController userController = new UserController(); From e5352987df34cc12b7cc8f704760b99f9a22454d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BB=D0=B0=D0=B2=D0=B0?= Date: Tue, 28 Jan 2025 20:54:20 +0400 Subject: [PATCH 3/3] =?UTF-8?q?=D0=92=D1=82=D0=BE=D1=80=D0=B0=D1=8F=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20?= =?UTF-8?q?=D1=82=D0=B7=2010=D0=BE=D0=B3=D0=BE=20=D1=81=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D0=BD=D1=82=D0=B0=20=D1=81=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC=20=D0=BE=D1=88=D0=B8?= =?UTF-8?q?=D0=B1=D0=BE=D0=BA.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 +++ .../filmorate/controller/FilmController.java | 32 +++++++++---------- .../filmorate/controller/UserController.java | 32 +++++++++---------- .../exception/ValidationException.java | 2 +- .../practicum/filmorate/model/Film.java | 6 ++-- .../practicum/filmorate/model/User.java | 6 ++-- .../controller/FilmControllerTest.java | 10 +++--- .../controller/UserControllerTest.java | 12 +++---- 8 files changed, 56 insertions(+), 49 deletions(-) diff --git a/pom.xml b/pom.xml index 0cad031..9522a8a 100644 --- a/pom.xml +++ b/pom.xml @@ -22,6 +22,11 @@ spring-boot-starter-web + + org.springframework.boot + spring-boot-starter-validation + + org.projectlombok lombok diff --git a/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java b/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java index 1bd6af6..752734a 100644 --- a/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java +++ b/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java @@ -1,5 +1,6 @@ package ru.yandex.practicum.filmorate.controller; +import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import ru.yandex.practicum.filmorate.exception.ValidationException; @@ -7,29 +8,30 @@ import java.time.LocalDate; import java.time.Month; -import java.util.ArrayList; -import java.util.List; +import java.util.Collection; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; @RestController @RequestMapping("/films") @Slf4j public class FilmController { - private final List films = new ArrayList<>(); + private final Map films = new ConcurrentHashMap<>(); private int nextId = 1; @GetMapping - public List getFilms() { - return films; + public Collection getFilms() { + return films.values(); } @PostMapping - public Film createFilm(@RequestBody Film film) { + public Film createFilm(@Valid @RequestBody Film film) throws ValidationException { LocalDate date = LocalDate.of(1895, Month.DECEMBER, 28); if (film.getName() == null || film.getName().isEmpty()) { throw new ValidationException("Название фильма не может быть пустым"); } - if (film.getDescription().length() > 200) { + if (film.getDescription() == null || film.getDescription().length() > 200) { throw new ValidationException("Максимальная длина описания — 200 символов"); } if (film.getReleaseDate().isBefore(date)) { @@ -39,21 +41,19 @@ public Film createFilm(@RequestBody Film film) { throw new ValidationException("Продолжительность фильма должна быть положительным числом"); } film.setId(getNextId()); - films.add(film); + films.put(film.getId(), film); log.debug("Фильм успешно добавлен"); return film; } @PutMapping - public Film updateFilm(@RequestBody Film newFilm) { - for (Film film : films) { - if (newFilm != null && film.getId() == newFilm.getId()) { - films.remove(film); - films.add(newFilm); - log.debug("Фильм успешно изменён"); - return newFilm; - } + public Film updateFilm(@RequestBody Film newFilm) throws ValidationException { + + if (newFilm.getId() != null && films.containsKey(newFilm.getId())) { + films.put(newFilm.getId(), newFilm); + log.debug("Фильм успешно изменён"); + return newFilm; } throw new ValidationException("Некорректный Id"); } diff --git a/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java b/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java index 9762ac8..3d67a63 100644 --- a/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java +++ b/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java @@ -6,27 +6,28 @@ import ru.yandex.practicum.filmorate.model.User; import java.time.LocalDate; -import java.util.ArrayList; -import java.util.List; +import java.util.Collection; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; @RestController @RequestMapping("/users") @Slf4j public class UserController { - private final List users = new ArrayList<>(); + private final Map users = new ConcurrentHashMap<>(); private int nextId = 1; @GetMapping - public List getUsers() { - return users; + public Collection getUsers() { + return users.values(); } @PostMapping - public User createUser(@RequestBody User user) { + public User createUser(@RequestBody User user) throws ValidationException { if (user.getEmail().isEmpty() || !user.getEmail().contains("@")) { throw new ValidationException("Электронная почта не может быть пустой и должна содержать символ @"); } - if (user.getLogin().isEmpty() || user.getLogin().contains(" ")) { + if (user.getLogin() == null || user.getLogin().isEmpty() || user.getLogin().contains(" ")) { throw new ValidationException("Логин не может быть пустым и содержать пробелы"); } if (user.getName() == null) { @@ -36,21 +37,20 @@ public User createUser(@RequestBody User user) { throw new ValidationException("Дата рождения не может быть в будущем"); } user.setId(getNextId()); - users.add(user); + users.put(user.getId(), user); log.debug("Пользователь успешно добавлен"); return user; } @PutMapping - public User updateUser(@RequestBody User newUser) { - for (User user : users) { - if (newUser != null && user.getId() == newUser.getId()) { - users.remove(user); - users.add(newUser); - log.debug("Пользователь успешно изменён"); - return newUser; - } + public User updateUser(@RequestBody User newUser) throws ValidationException { + + if (newUser.getId() != null && users.containsKey(newUser.getId())) { + users.put(newUser.getId(), newUser); + log.debug("Пользователь успешно изменён"); + return newUser; } + throw new ValidationException("Некорректный Id"); } diff --git a/src/main/java/ru/yandex/practicum/filmorate/exception/ValidationException.java b/src/main/java/ru/yandex/practicum/filmorate/exception/ValidationException.java index 52dc49c..fd0100a 100644 --- a/src/main/java/ru/yandex/practicum/filmorate/exception/ValidationException.java +++ b/src/main/java/ru/yandex/practicum/filmorate/exception/ValidationException.java @@ -1,6 +1,6 @@ package ru.yandex.practicum.filmorate.exception; -public class ValidationException extends RuntimeException { +public class ValidationException extends Exception { public ValidationException(String message) { super(message); } diff --git a/src/main/java/ru/yandex/practicum/filmorate/model/Film.java b/src/main/java/ru/yandex/practicum/filmorate/model/Film.java index 741d3d6..8063357 100644 --- a/src/main/java/ru/yandex/practicum/filmorate/model/Film.java +++ b/src/main/java/ru/yandex/practicum/filmorate/model/Film.java @@ -1,14 +1,16 @@ package ru.yandex.practicum.filmorate.model; -import lombok.Data; +import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.Setter; import java.time.LocalDate; /** * Film. */ -@Data +@Getter +@Setter @NoArgsConstructor public class Film { private Integer id; diff --git a/src/main/java/ru/yandex/practicum/filmorate/model/User.java b/src/main/java/ru/yandex/practicum/filmorate/model/User.java index 0bdc83c..a489737 100644 --- a/src/main/java/ru/yandex/practicum/filmorate/model/User.java +++ b/src/main/java/ru/yandex/practicum/filmorate/model/User.java @@ -1,11 +1,13 @@ package ru.yandex.practicum.filmorate.model; -import lombok.Data; +import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.Setter; import java.time.LocalDate; -@Data +@Getter +@Setter @NoArgsConstructor public class User { private Integer id; diff --git a/src/test/java/ru/yandex/practicum/filmorate/controller/FilmControllerTest.java b/src/test/java/ru/yandex/practicum/filmorate/controller/FilmControllerTest.java index a828ece..af87af4 100644 --- a/src/test/java/ru/yandex/practicum/filmorate/controller/FilmControllerTest.java +++ b/src/test/java/ru/yandex/practicum/filmorate/controller/FilmControllerTest.java @@ -18,7 +18,7 @@ public class FilmControllerTest { private FilmController filmController; @Test - public void returnFilmsTest() { + public void returnFilmsTest() throws ValidationException { Film film1 = new Film(); film1.setName("filmName1"); film1.setDescription("Descr1"); @@ -41,7 +41,7 @@ public void returnFilmsTest() { } @Test - void filmsValidTest() { + void filmsValidTest() throws ValidationException { Film film = new Film(); film.setName("filmName1"); film.setDescription("Descr1"); @@ -60,9 +60,7 @@ void filmsValidTest() { assertThrows(ValidationException.class, () -> filmController.createFilm(film)); film.setName("filmName1"); - film.setDescription("1111111111111111111111111111111111111111111111111111111111111111111" + - "111111111111111111111111111111111111111111111111111111111111111111111111111111111" + - "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"); + film.setDescription("1111111111111111111111111111111111111111111111111111111111111111111" + "111111111111111111111111111111111111111111111111111111111111111111111111111111111" + "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"); assertThrows(ValidationException.class, () -> filmController.createFilm(film)); film.setDescription("Descr1"); @@ -75,7 +73,7 @@ void filmsValidTest() { } @Test - void updateFilmTest() { + void updateFilmTest() throws ValidationException { Film film = new Film(); film.setName("filmName1"); film.setDescription("Descr1"); diff --git a/src/test/java/ru/yandex/practicum/filmorate/controller/UserControllerTest.java b/src/test/java/ru/yandex/practicum/filmorate/controller/UserControllerTest.java index b627774..8f40a1a 100644 --- a/src/test/java/ru/yandex/practicum/filmorate/controller/UserControllerTest.java +++ b/src/test/java/ru/yandex/practicum/filmorate/controller/UserControllerTest.java @@ -20,7 +20,7 @@ public class UserControllerTest { private UserController userController = new UserController(); @Test - public void returnsUsersTest() { + public void returnsUsersTest() throws ValidationException { User user1 = new User(); user1.setEmail("user1@yandex.ru"); user1.setLogin("user1"); @@ -43,7 +43,7 @@ public void returnsUsersTest() { } @Test - void userValidTest() { + void userValidTest() throws ValidationException { User user = new User(); user.setEmail("user1@yandex.ru"); user.setLogin("user1"); @@ -59,17 +59,17 @@ void userValidTest() { assertEquals(LocalDate.of(1999, 8, 6), savedUser1.getBirthday()); user.setEmail("12345"); - assertThrows(RuntimeException.class, () -> userController.createUser(user)); + assertThrows(ValidationException.class, () -> userController.createUser(user)); user.setEmail("user3.com"); assertThrows(ValidationException.class, () -> userController.createUser(user)); user.setEmail("user1@yandex.ru"); user.setLogin(""); - assertThrows(RuntimeException.class, () -> userController.createUser(user)); + assertThrows(ValidationException.class, () -> userController.createUser(user)); user.setLogin(null); - assertThrows(RuntimeException.class, () -> userController.createUser(user)); + assertThrows(ValidationException.class, () -> userController.createUser(user)); user.setLogin("user 1"); assertThrows(ValidationException.class, () -> userController.createUser(user)); @@ -79,7 +79,7 @@ void userValidTest() { } @Test - void updateUserTest() { + void updateUserTest() throws ValidationException { User user1 = new User(); user1.setEmail("user1@yandex.ru"); user1.setLogin("user1");