// Path: src/main/java/com/hantsylabs/restexample/springmvc/domain/Post.java
// @Data
// @Builder
// @NoArgsConstructor
// @AllArgsConstructor
// @Entity
// @Table(name = "posts")
// public class Post implements Serializable {
// 
//     /**
//      *
//      */
//     private static final long serialVersionUID = 1L;
// 
//     public enum Status {
// 
//         DRAFT,
//         PUBLISHED
//     }
// 
//     public Post(String title, String content) {
//         this.title = title;
//         this.content = content;
//     }
//     
//     @Id()
//     @GeneratedValue(strategy = GenerationType.IDENTITY)
//     @Column(name = "id")
//     private Long id;
// 
//     @Column(name = "title")
//     private String title;
// 
//     @Column(name = "content")
//     @Size(max = 2000)
//     private String content;
// 
//     @Column(name = "status")
//     @Enumerated
//     private Status status = Status.DRAFT;
// 
//     @ManyToOne
//     @JoinColumn(name = "created_by")
//     @CreatedBy
//     private User createdBy;
// 
//     @Column(name = "created_date")
//     @CreatedDate
//     private LocalDateTime createdDate;
// 
//     @ManyToOne
//     @JoinColumn(name = "last_modified_by")
//     @LastModifiedBy
//     private User lastModifiedBy;
// 
//     @Column(name = "last_modified_date")
//     @LastModifiedDate
//     private LocalDateTime lastModifiedDate;
// 
// }
// 
// Path: src/main/java/com/hantsylabs/restexample/springmvc/domain/User.java
// @Data
// @Builder
// @NoArgsConstructor
// @AllArgsConstructor
// @Entity
// @Table(name = "users")
// public class User implements UserDetails, Serializable {
// 
//     /**
//      *
//      */
//     private static final long serialVersionUID = 1L;
// 
//     @Id()
//     @GeneratedValue(strategy = GenerationType.IDENTITY)
//     @Column(name = "id")
//     private Long id;
// 
//     @Column(name = "username")
//     private String username;
// 
//     @Column(name = "password")
//     private String password;
// 
//     @Column(name = "name")
//     private String name;
// 
//     @Column(name = "email")
//     private String email;
// 
//     @Column(name = "role")
//     private String role;
// 
//     @Column(name = "created_date")
//     @CreatedDate
//     private LocalDateTime createdDate;
// 
//     public String getName() {
//         if (this.name == null || this.name.trim().length() == 0) {
//             return this.username;
//         }
//         return name;
//     }
// 
//     @Override
//     public Collection<? extends GrantedAuthority> getAuthorities() {
//         return Arrays.asList(new SimpleGrantedAuthority("ROLE_" + this.role));
//     }
// 
//     @Override
//     public String getPassword() {
//         return this.password;
//     }
// 
//     @Override
//     public String getUsername() {
//         return this.username;
//     }
// 
//     @Override
//     public boolean isAccountNonExpired() {
//         return true;
//     }
// 
//     @Override
//     public boolean isAccountNonLocked() {
//         return true;
//     }
// 
//     @Override
//     public boolean isCredentialsNonExpired() {
//         return true;
//     }
// 
//     @Override
// 
//     public boolean isEnabled() {
//         return true;
//     }
// 
// 
// }
// 
// Path: src/main/java/com/hantsylabs/restexample/springmvc/model/PasswordForm.java
// @Data
// @Builder
// @NoArgsConstructor
// @AllArgsConstructor
// public class PasswordForm implements Serializable {
// 
//     private static final long serialVersionUID = 1L;
// 
//     @NotNull
//     @NotEmpty
//     private String oldPassword;
// 
//     @NotNull
//     @NotEmpty
//     private String newPassword;
// 
//     public String getOldPassword() {
//         return oldPassword;
//     }
// 
// }
// 
// Path: src/main/java/com/hantsylabs/restexample/springmvc/model/UserForm.java
// @Data
// @Builder
// @NoArgsConstructor
// @AllArgsConstructor
// public class UserForm implements Serializable {
// 
//     private static final long serialVersionUID = 1L;
// 
//     @NotNull
//     private String username;
// 
//     @NotNull
//     private String password;
// 
//     @NotNull
//     private String name;
// 
//     @NotNull
//     @Email
//     private String email;
// 
//     @NotNull
//     private String role;
// }


import com.hantsylabs.restexample.springmvc.domain.Post;
import com.hantsylabs.restexample.springmvc.domain.User;
import com.hantsylabs.restexample.springmvc.model.PasswordForm;
import com.hantsylabs.restexample.springmvc.model.UserForm;
package com.hantsylabs.restexample.springmvc.test;


public class Fixtures {

    public static User createUser(String username, String password) {
        return User.builder()
                .username(username)
                .password(password)
                .name("test user")
                .email("hantsy@test.com")
                .build();
    }

    public static UserForm createUserForm(String username, String password) {
        return UserForm.builder()
                .username(username)
                .password(password)
                .name("test user")
                .email("hantsy@test.com")
                .build();
    }

    public static PasswordForm createPasswordForm(String oldPassword, String newPassword) {
        return PasswordForm.builder()
                .oldPassword(oldPassword)
                .newPassword(newPassword)
                .build();
    }

    public static Post createPost(Long id, String title, String content) {
        return Post.builder()
                .id(id)
// Path: src/main/java/com/hantsylabs/restexample/springmvc/domain/Post.java
// @Data
// @Builder
// @NoArgsConstructor
// @AllArgsConstructor
// @Entity
// @Table(name = "posts")
// public class Post implements Serializable {
// 
//     /**
//      *
//      */
//     private static final long serialVersionUID = 1L;
// 
//     public enum Status {
// 
//         DRAFT,
//         PUBLISHED
//     }
// 
//     public Post(String title, String content) {
//         this.title = title;
//         this.content = content;
//     }
//     
//     @Id()
//     @GeneratedValue(strategy = GenerationType.IDENTITY)
//     @Column(name = "id")
//     private Long id;
// 
//     @Column(name = "title")
//     private String title;
// 
//     @Column(name = "content")
//     @Size(max = 2000)
//     private String content;
// 
//     @Column(name = "status")
//     @Enumerated
//     private Status status = Status.DRAFT;
// 
//     @ManyToOne
//     @JoinColumn(name = "created_by")
//     @CreatedBy
//     private User createdBy;
// 
//     @Column(name = "created_date")
//     @CreatedDate
//     private LocalDateTime createdDate;
// 
//     @ManyToOne
//     @JoinColumn(name = "last_modified_by")
//     @LastModifiedBy
//     private User lastModifiedBy;
// 
//     @Column(name = "last_modified_date")
//     @LastModifiedDate
//     private LocalDateTime lastModifiedDate;
// 
// }
// 
// Path: src/main/java/com/hantsylabs/restexample/springmvc/domain/User.java
// @Data
// @Builder
// @NoArgsConstructor
// @AllArgsConstructor
// @Entity
// @Table(name = "users")
// public class User implements UserDetails, Serializable {
// 
//     /**
//      *
//      */
//     private static final long serialVersionUID = 1L;
// 
//     @Id()
//     @GeneratedValue(strategy = GenerationType.IDENTITY)
//     @Column(name = "id")
//     private Long id;
// 
//     @Column(name = "username")
//     private String username;
// 
//     @Column(name = "password")
//     private String password;
// 
//     @Column(name = "name")
//     private String name;
// 
//     @Column(name = "email")
//     private String email;
// 
//     @Column(name = "role")
//     private String role;
// 
//     @Column(name = "created_date")
//     @CreatedDate
//     private LocalDateTime createdDate;
// 
//     public String getName() {
//         if (this.name == null || this.name.trim().length() == 0) {
//             return this.username;
//         }
//         return name;
//     }
// 
//     @Override
//     public Collection<? extends GrantedAuthority> getAuthorities() {
//         return Arrays.asList(new SimpleGrantedAuthority("ROLE_" + this.role));
//     }
// 
//     @Override
//     public String getPassword() {
//         return this.password;
//     }
// 
//     @Override
//     public String getUsername() {
//         return this.username;
//     }
// 
//     @Override
//     public boolean isAccountNonExpired() {
//         return true;
//     }
// 
//     @Override
//     public boolean isAccountNonLocked() {
//         return true;
//     }
// 
//     @Override
//     public boolean isCredentialsNonExpired() {
//         return true;
//     }
// 
//     @Override
// 
//     public boolean isEnabled() {
//         return true;
//     }
// 
// 
// }
// 
// Path: src/main/java/com/hantsylabs/restexample/springmvc/model/PasswordForm.java
// @Data
// @Builder
// @NoArgsConstructor
// @AllArgsConstructor
// public class PasswordForm implements Serializable {
// 
//     private static final long serialVersionUID = 1L;
// 
//     @NotNull
//     @NotEmpty
//     private String oldPassword;
// 
//     @NotNull
//     @NotEmpty
//     private String newPassword;
// 
//     public String getOldPassword() {
//         return oldPassword;
//     }
// 
// }
// 
// Path: src/main/java/com/hantsylabs/restexample/springmvc/model/UserForm.java
// @Data
// @Builder
// @NoArgsConstructor
// @AllArgsConstructor
// public class UserForm implements Serializable {
// 
//     private static final long serialVersionUID = 1L;
// 
//     @NotNull
//     private String username;
// 
//     @NotNull
//     private String password;
// 
//     @NotNull
//     private String name;
// 
//     @NotNull
//     @Email
//     private String email;
// 
//     @NotNull
//     private String role;
// }


// Path: src/test/java/com/hantsylabs/restexample/springmvc/test/Fixtures.java
import com.hantsylabs.restexample.springmvc.domain.Post;
import com.hantsylabs.restexample.springmvc.domain.User;
import com.hantsylabs.restexample.springmvc.model.PasswordForm;
import com.hantsylabs.restexample.springmvc.model.UserForm;

package com.hantsylabs.restexample.springmvc.test;


public class Fixtures {

    public static User createUser(String username, String password) {
        return User.builder()
                .username(username)
                .password(password)
                .name("test user")
                .email("hantsy@test.com")
                .build();
    }

    public static UserForm createUserForm(String username, String password) {
        return UserForm.builder()
                .username(username)
                .password(password)
                .name("test user")
                .email("hantsy@test.com")
                .build();
    }

    public static PasswordForm createPasswordForm(String oldPassword, String newPassword) {
        return PasswordForm.builder()
                .oldPassword(oldPassword)
                .newPassword(newPassword)
                .build();
    }

    public static Post createPost(Long id, String title, String content) {
        return Post.builder()
                .id(id)
                .title(title)