게시글 클래스에 설정하지 않았던 값들이 있는데, 바로 글 작성자 / 작성시간 / 수정시간 / 수정자(?) 이다 .
게시글과 댓글 모두 해당 값들이 들어가야 하므로 , 각각 클래스에 선언했던 값들을 다른 클래스를 생성해서 더 보기 좋게 만들어주자.
엔티티 리스너는 엔티티의 변화를 감지하고 테이블의 데이터를 자기가 알아서 조작해주는 역할을 한다.
created_At 이나 modified_At 컬럼 같은 경우에는 글이 작성되고 수정될때 해당 시간값이 알아서 자동으로 입력되게 해야한다. 그걸 수행해준다고 한다.
해당 필드를 가진 클래스는 게시글과 댓글 클래스 양쪽에서 사용이 되어야한다. 부모 클래스처럼 말이다. 그럴때 쓰인다고 한다 (?)
@EnableJpaAuditing 어노테이션을 붙어주어야지 post 메소드로 게시글을 작성할떄, createdAt 이나 By 를 넣지 않아도 알아서 자동으로 값을 넣어준다..
AuditorAware 같은 경우에는 지금은 아직 로그인 기능을 구현 하지 않았기 때문에, 자동으로 들어갈 값을 설정해준다.(생성시간 수정시간 등을 제외한 자동입력값)
이제 해당 게시글과 댓글을 저장할 저장소를 생성하자.
그냥 이렇게 인터페이스를 만들고 , @RepositoryRestResource 어노테이션을 붙인 후에 JpaRepository 를 상속받게 하고 타입안에 저장할 클래스 이름과 id형식 을 입력하면 된다.
자 이제 저장소와 엔티티까지 다 작성했으니 테스트코드를 작성할 차례다..
Jpa Repository 는 기본적으로 여러 메소드들을 제공하는데 테스트코드에서 쓸 메소드들은 find, save, delete, count 정도 이다.
CRUD (Create Read Update Delete) 방식으로 잘 작동하는지 테스트코드를 작성한다.
Given When Then 방식으로 테스트 코드를 작성한다.
일단 테스트 코드에 기본적인 생성자와 어노테이션을 설정해준다.
테스트 클래스에는 무조건 생성자에 Autowired 를 붙여야지 에러가 안난다 ..
(자동입력값을 위해 JpaConfig.class 를 임포트 해주고 DataJpaTest 어노테이션을 붙여준다.)
given when then 방식으로 테스트 코드를 작성해나간다.
작성 전 게시글 갯수를 count 메소드로 불러와주고,
Article 클래스에서 선언한 of 생성자로 제목과 내용, 해시태그를 입력해준다. (나머지 작성시간 작성자는 자동으로 값이 입력된다.)
그리고 Article Repository 에서 save 메소드를 호출한후에 article 객체를 넣어준다.
assertThat 으로 이전 게시글 갯수에서 +1이 됐는지 테스트 해준다.
이런 방식으로 게시글 생성/ 수정/ 삭제/ 불러오기가 되는지 테스트를 해주면 된다.
update : 기존 게시글을 가져와서 세터로 변경을 원하는 부분을 변경해준뒤에 , .hasFieldOrPropertyWithValue 메소드로 변경된 컬럼 이름과 변경값을 입력했을때 boolean 값을 리턴하도록 테스트를 작성하면 된다.
delete : create와 마찬가지로 기존 게시글 갯수에서 삭제후 갯수가 -1 이 되었는지를 테스트하면 된다.
selete : 게시글 전체를 리스트로 가져올 수 있는지를 확인하면 된다 .