From d37f6933084835be6af3d061f03a3cf5b022ced7 Mon Sep 17 00:00:00 2001
From: razzanYoni <13521087@mahasiswa.itb.ac.id>
Date: Thu, 2 Nov 2023 00:39:34 +0700
Subject: [PATCH] feat: add unit test to Subscription model

---
 .../java/org/tonality/model/Subscription.java | 80 +++++++++++++++++++
 1 file changed, 80 insertions(+)

diff --git a/src/main/java/org/tonality/model/Subscription.java b/src/main/java/org/tonality/model/Subscription.java
index 56734ce..776313f 100644
--- a/src/main/java/org/tonality/model/Subscription.java
+++ b/src/main/java/org/tonality/model/Subscription.java
@@ -51,4 +51,84 @@ public class Subscription implements Serializable {
     @Temporal(TemporalType.TIMESTAMP)
     @ColumnDefault("CURRENT_TIMESTAMP(6) on update CURRENT_TIMESTAMP(6)")
     private Date updatedAt;
+
+    @PrePersist
+    public void prePersist() {
+        if (status == null) {
+            status = SubscriptionStatus.PENDING;
+        }
+        updatedAt = new Date();
+    }
+
+    @PreUpdate
+    public void preUpdate() {
+        updatedAt = new Date();
+    }
+
+    public String toString() {
+        return "Subscription: " + subscriptionId + " " + userId + " " + albumId + " " + status;
+    }
+
+    // Test
+    public static void main(String[] args) {
+        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
+
+        // Create subscription
+        try {
+            Session session = sessionFactory.openSession();
+            Transaction tx = session.beginTransaction();
+
+            Subscription subscription = new Subscription();
+            subscription.setUserId(1);
+            subscription.setAlbumId(1);
+            session.save(subscription);
+            tx.commit();
+            session.close();
+        } catch (Exception e) {
+            System.out.println("Error: " + e.getMessage());
+        }
+
+        // Get subscription from database
+        try {
+            Session session = sessionFactory.openSession();
+            Transaction tx = session.beginTransaction();
+
+            Subscription lastSubsId =  session.createQuery("from subscription order by subscriptionId desc", Subscription.class).setMaxResults(1).list().get(0);
+            Subscription subscription = session.get(Subscription.class, lastSubsId.getSubscriptionId());
+            System.out.println(subscription);
+            tx.commit();
+            session.close();
+        } catch (Exception e) {
+            System.out.println("Error: " + e.getMessage());
+        }
+
+        // Update subscription
+        try {
+            Session session = sessionFactory.openSession();
+            Transaction tx = session.beginTransaction();
+
+            Subscription firstSubsId =  session.createQuery("from subscription order by subscriptionId asc", Subscription.class).setMaxResults(1).list().get(0);
+            Subscription subscription = session.get(Subscription.class, firstSubsId.getSubscriptionId());
+            subscription.setStatus(SubscriptionStatus.ACTIVE);
+            session.update(subscription);
+            tx.commit();
+            session.close();
+        } catch (Exception e) {
+            System.out.println("Error: " + e.getMessage());
+        }
+
+        // Delete subscription
+        try {
+            Session session = sessionFactory.openSession();
+            Transaction tx = session.beginTransaction();
+
+            Subscription lastSubsId =  session.createQuery("from subscription order by subscriptionId desc", Subscription.class).setMaxResults(1).list().get(0);
+            Subscription subscription = session.get(Subscription.class, lastSubsId.getSubscriptionId());
+            session.delete(subscription);
+            tx.commit();
+            session.close();
+        } catch (Exception e) {
+            System.out.println("Error: " + e.getMessage());
+        }
+    }
 }
-- 
GitLab