Coverage Summary for Class: User (com.github.malyshevhen.domain.models)
Class |
Method, %
|
Branch, %
|
Line, %
|
User |
50%
(1/2)
|
50%
(7/14)
|
64.3%
(9/14)
|
User$HibernateInstantiator$PTxTwUHA |
User$HibernateProxy$Vv4rLdYn |
Total |
50%
(1/2)
|
50%
(7/14)
|
64.3%
(9/14)
|
package com.github.malyshevhen.domain.models;
import static jakarta.persistence.CascadeType.ALL;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Objects;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
import org.hibernate.proxy.HibernateProxy;
import jakarta.annotation.Nullable;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.OneToOne;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Past;
import jakarta.validation.constraints.Pattern;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Entity
@Table(name = "users")
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;
@NotNull
@Pattern(regexp = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$")
@Column(name = "email", nullable = false, unique = true)
private String email;
@NotNull
@NotBlank
@Column(name = "first_name", nullable = false)
private String firstName;
@NotNull
@NotBlank
@Column(name = "last_name", nullable = false)
private String lastName;
@Past
@NotNull
@Column(name = "birth_date", nullable = false)
private LocalDate birthDate;
@Nullable
@OneToOne(cascade = ALL)
@JoinColumn(name = "address_id")
private Address address;
@Nullable
@Column(name = "phone", unique = true)
private String phone;
@CreationTimestamp
private LocalDateTime createdAt;
@UpdateTimestamp
private LocalDateTime updatedAt;
@Override
public final boolean equals(Object o) {
if (this == o) return true;
if (o == null) return false;
Class<?> oEffectiveClass = o instanceof HibernateProxy proxy
? proxy.getHibernateLazyInitializer().getPersistentClass()
: o.getClass();
Class<?> thisEffectiveClass = this instanceof HibernateProxy proxy
? proxy.getHibernateLazyInitializer().getPersistentClass()
: this.getClass();
if (thisEffectiveClass != oEffectiveClass) return false;
User user = (User) o;
return getId() != null && Objects.equals(getId(), user.getId());
}
@Override
public final int hashCode() {
return this instanceof HibernateProxy proxy
? proxy.getHibernateLazyInitializer().getPersistentClass().hashCode()
: getClass().hashCode();
}
}