diff --git a/app/build.gradle b/app/build.gradle
index c625ae84b595f1c9bf2720826c48f2f230683133..e8617ea5fd07065c26f822143f73fde2d09b9832 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -59,7 +59,7 @@ dependencies {
         exclude group: 'stax', module: 'stax-api'
         exclude group: 'stax', module: 'stax'
     }
-    
+
     compile 'com.android.support:support-annotations:' + rootProject.supportLibVersion;
     // Force usage of support annotations in the test app, since it is internally used by the runner module.
     androidTestCompile 'com.android.support:support-annotations:' + rootProject.supportLibVersion;
diff --git a/app/src/androidTest/java/id/ac/ui/cs/myui/NewsDetailInstrumentedTest.java b/app/src/androidTest/java/id/ac/ui/cs/myui/NewsDetailInstrumentedTest.java
index 03747417069dee91dcc478d3b8a670a55b2d956d..cd0cc499a666c372bf4a4894f4714201b528dbce 100644
--- a/app/src/androidTest/java/id/ac/ui/cs/myui/NewsDetailInstrumentedTest.java
+++ b/app/src/androidTest/java/id/ac/ui/cs/myui/NewsDetailInstrumentedTest.java
@@ -1,5 +1,9 @@
 package id.ac.ui.cs.myui;
 
+import android.content.Context;
+import android.content.Intent;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.espresso.action.ViewActions;
 import android.support.test.filters.LargeTest;
 import android.support.test.rule.ActivityTestRule;
 import android.support.test.runner.AndroidJUnit4;
@@ -10,8 +14,10 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 
 import id.ac.ui.cs.myui.activity.NewsDetailActivity;
+import id.ac.ui.cs.myui.activity.NewsHomeActivity;
 import id.ac.ui.cs.myui.helper.AppsHelper;
 
+import static android.support.test.espresso.Espresso.onData;
 import static android.support.test.espresso.Espresso.onView;
 import static android.support.test.espresso.action.ViewActions.click;
 import static android.support.test.espresso.action.ViewActions.closeSoftKeyboard;
@@ -21,9 +27,17 @@ import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
 import static android.support.test.espresso.matcher.ViewMatchers.withId;
 import static android.support.test.espresso.matcher.ViewMatchers.withResourceName;
 import static android.support.test.espresso.matcher.ViewMatchers.withText;
+import static java.lang.Thread.sleep;
+import static org.hamcrest.Matchers.anything;
+
 /**
  * Created by Ivan on 7/19/17.
  */
+
+/**
+ * modified by muhmmad.yusuf43 and eka naradhipa on 26/07/17 15:59.
+ */
+
 @RunWith(AndroidJUnit4.class)
 @LargeTest
 public class NewsDetailInstrumentedTest {
@@ -33,14 +47,19 @@ public class NewsDetailInstrumentedTest {
     @Before
     public void initValidString() {
         // Specify a valid string.
-
     }
 
     @Rule
-    public ActivityTestRule<NewsDetailActivity> mActivityRule = new ActivityTestRule(NewsDetailActivity.class);
+    public ActivityTestRule<NewsHomeActivity> mActivityRule = new ActivityTestRule(NewsHomeActivity.class);
+
+    @Test
+    public void testNewsHomeActivity() {
+        onView(withId(R.id.list_news)).check(matches(isDisplayed()));
+    }
 
     @Test
     public void testNewsDetailActivity() {
+        onData(anything()).inAdapterView(withId(R.id.list_news)).atPosition(0).perform(click());
         onView(withId(R.id.pubdate)).check(matches(isDisplayed()));
         onView(withId(R.id.button_wa)).check(matches(isDisplayed()));
         onView(withId(R.id.button_line)).check(matches(isDisplayed()));
@@ -51,13 +70,25 @@ public class NewsDetailInstrumentedTest {
 
     @Test
     public void testShareButtonLine() {
+        onData(anything()).inAdapterView(withId(R.id.list_news)).atPosition(0).perform(click());
+        ViewActions.scrollTo(); // scroll to the bottom screen in case it has a long description
         onView(withId(R.id.button_line)).perform(click());
         AppsHelper.isAppRunning(NewsDetailActivity.context, PACKAGE_LINE);
     }
 
     @Test
     public void testShareButtonWA() {
+        onData(anything()).inAdapterView(withId(R.id.list_news)).atPosition(0).perform(click());
+        ViewActions.scrollTo(); // scroll to the bottom screen in case it has a long description
         onView(withId(R.id.button_wa)).perform(click());
         AppsHelper.isAppRunning(NewsDetailActivity.context, PACKAGE_WA);
     }
+
+    @Test
+    public void testBookmarkButton() {
+        onData(anything()).inAdapterView(withId(R.id.list_news)).atPosition(0).perform(click());
+        ViewActions.scrollTo(); // scroll to the bottom screen in case it has a long description
+        onView(withId(R.id.button_bookmark)).perform(click());
+        // TODO perform check toast message
+    }
 }
diff --git a/app/src/androidTest/java/id/ac/ui/cs/myui/NotificationInstrumentedTest.java b/app/src/androidTest/java/id/ac/ui/cs/myui/NotificationInstrumentedTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b878cffc7db1c686e58c537628fd012a3cf86844
--- /dev/null
+++ b/app/src/androidTest/java/id/ac/ui/cs/myui/NotificationInstrumentedTest.java
@@ -0,0 +1,50 @@
+package id.ac.ui.cs.myui;
+
+import android.support.test.rule.ActivityTestRule;
+
+import org.junit.Rule;
+import org.junit.Test;
+
+import id.ac.ui.cs.myui.activity.NotificationActivity;
+
+import static android.support.test.espresso.Espresso.onData;
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.action.ViewActions.click;
+import static android.support.test.espresso.action.ViewActions.swipeLeft;
+import static android.support.test.espresso.assertion.ViewAssertions.matches;
+import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static android.support.test.espresso.matcher.ViewMatchers.withId;
+import static org.hamcrest.Matchers.anything;
+
+
+/**
+ * Created by ekanaradhipa.d on 26/07/17.
+ */
+
+public class NotificationInstrumentedTest {
+
+    @Rule
+    public ActivityTestRule<NotificationActivity> mActivityRule = new ActivityTestRule(NotificationActivity.class);
+
+    @Test
+    public void testNotificationActivity() {
+//        onView(withId(R.id.)).check(matches(isDisplayed()));
+//        onView(withId(R.id.)).check(matches(isDisplayed()));
+//        onView(withId(R.id.)).check(matches(isDisplayed()));
+//        onView(withId(R.id.)).check(matches(isDisplayed()));
+//        onView(withId(R.id.)).check(matches(isDisplayed()));
+//        onView(withId(R.id.)).check(matches(isDisplayed()));
+
+    }
+
+//    @Test
+//    public void deleteNotification() {
+//        onData(anything()).inAdapterView(withId(R.id.list_notification)).atPosition(0).perform(swipeLeft());
+//    }
+//
+//    @Test
+//    public void clickNotification() {
+//        onView(withId(R.id.)).perform(click());
+//    }
+
+}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c2c8dca6a33d7ae955d249995addeeb275b63396..98b0df6bacc9268063ef684c217646e967ea929c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="id.ac.ui.cs.myui">
+
     <uses-permission android:name="android.permission.INTERNET" />
 
     <application
@@ -10,52 +11,65 @@
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
         android:theme="@style/AppTheme">
-        <activity android:name=".activity.LoginActivity"
-            android:theme="@style/Theme.AppCompat.Light.NoActionBar"
-            android:fullBackupContent="true">
-        </activity>
+        <activity
+            android:name=".activity.LoginActivity"
+            android:fullBackupContent="true"
+            android:theme="@style/Theme.AppCompat.Light.NoActionBar"></activity>
         <activity android:name=".activity.HomeActivity" />
         <activity android:name=".activity.DetailActivity" />
-        <activity android:name=".activity.NewsDetailActivity"
-            android:label="Detail News"/>
-        <activity android:name=".activity.NewsHomeActivity"
+        <activity
+            android:name=".activity.NewsDetailActivity"
+            android:label="Detail News" />
+        <activity
+            android:name=".activity.NewsHomeActivity"
+            android:theme="@style/AppTheme.NoActionBar"></activity>
+        <activity
+            android:name=".activity.CalendarActivity"
+            android:exported="true"
             android:theme="@style/AppTheme.NoActionBar">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
         </activity>
-        <activity android:name=".activity.CalendarActivity"
+        <activity
+            android:name=".activity.NotificationActivity"
             android:exported="true"
             android:theme="@style/AppTheme.NoActionBar">
-
-        </activity>>
-        <activity android:name=".activity.CalendarDetailActivity"/>
-        <activity android:name=".activity.BookmarkNewsActivity"
-            android:theme="@style/AppTheme.NoActionBar">
         </activity>
+
+        <activity android:name=".activity.CalendarDetailActivity" />
+        <activity
+            android:name=".activity.BookmarkNewsActivity"
+            android:theme="@style/AppTheme.NoActionBar"></activity>
         <activity
             android:name=".activity.DrawerActivity"
             android:label="@string/title_activity_bookmark"
-            android:theme="@style/AppTheme.NoActionBar">
-        </activity>
+            android:theme="@style/AppTheme.NoActionBar"></activity>
 
         <service android:name=".firebase_notification.MyFirebaseMessagingService">
             <intent-filter>
-                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
+                <action android:name="com.google.firebase.MESSAGING_EVENT" />
             </intent-filter>
         </service>
-
         <service android:name=".firebase_notification.FirebaseIDService">
             <intent-filter>
-                <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
+                <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
             </intent-filter>
         </service>
-
+        <service
+            android:name=".service.BackgroundServiceNewsSchedule"
+            android:enabled="true"></service>
 
         <meta-data
             android:name="io.fabric.ApiKey"
             android:value="99acc7a22ccc8b155fab53154477e9752b4604ba" />
+
+        <activity android:name=".activity.SplashActivity"
+            android:theme="@style/SplashTheme">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+
+        </activity>
     </application>
 
 </manifest>
\ No newline at end of file
diff --git a/app/src/main/java/id/ac/ui/cs/myui/activity/CalendarActivity.java b/app/src/main/java/id/ac/ui/cs/myui/activity/CalendarActivity.java
index bedefc7619d28877aa2b7bc74a3cf35a15d4a3ae..bed68b1d883262f8f7a636fc95d53bbcf4ee973c 100644
--- a/app/src/main/java/id/ac/ui/cs/myui/activity/CalendarActivity.java
+++ b/app/src/main/java/id/ac/ui/cs/myui/activity/CalendarActivity.java
@@ -3,6 +3,7 @@ package id.ac.ui.cs.myui.activity;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
+import android.os.Handler;
 import android.util.Log;
 import android.view.View;
 import android.widget.AdapterView;
@@ -12,12 +13,16 @@ import android.widget.ListView;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Timer;
+import java.util.TimerTask;
 
 import id.ac.ui.cs.myui.R;
 import id.ac.ui.cs.myui.adapter.ListCalendarAdapter;
 import id.ac.ui.cs.myui.database.DatabaseHandler;
 import id.ac.ui.cs.myui.model.CalendarItem;
+import id.ac.ui.cs.myui.service.BackgroundServiceNewsSchedule;
 import id.ac.ui.cs.myui.task.CalendarTask;
+import id.ac.ui.cs.myui.task.NewsSceleTask;
 
 public class CalendarActivity extends DrawerActivity {
 
@@ -43,8 +48,6 @@ public class CalendarActivity extends DrawerActivity {
 
 
 
-
-
     }
 
 
diff --git a/app/src/main/java/id/ac/ui/cs/myui/activity/NewsDetailActivity.java b/app/src/main/java/id/ac/ui/cs/myui/activity/NewsDetailActivity.java
index d5c2aaa8a76ffd1bf57164af9c426f057dbf8aa5..67a37530428c63e1a7e40549a860a4820ea93880 100644
--- a/app/src/main/java/id/ac/ui/cs/myui/activity/NewsDetailActivity.java
+++ b/app/src/main/java/id/ac/ui/cs/myui/activity/NewsDetailActivity.java
@@ -37,7 +37,7 @@ public class NewsDetailActivity extends AppCompatActivity {
     ImageButton ibShareWA;
 
     DatabaseHandler databaseHandler;
-    String parent; //Activity that showed before this activity. It can be bookmark activity or news home activity.
+    String parent = ""; //Activity that showed before this activity. It can be bookmark activity or news home activity.
     //If former activity was bookmark: parent.equals("bookmark"), otherwise: parent.equals("newsHome").
 
     @Override
@@ -55,14 +55,14 @@ public class NewsDetailActivity extends AppCompatActivity {
         final String author = intent.getStringExtra("Author");
         final String title = intent.getStringExtra("Title");
         final String link = intent.getStringExtra("link");
-        parent = getIntent().getStringExtra("contextParent");
+        parent = intent.getStringExtra("contextParent");
+     //   System.out.println("parent : " + parent);
 
 
         ibShareLine = (ImageButton) findViewById(R.id.button_line);
         ibShare = (ImageButton) findViewById(R.id.button_share);
         ibShareWA = (ImageButton) findViewById(R.id.button_wa);
 
-        Log.d("desc",description);
         final TextView pubDate = (TextView) findViewById(R.id.pubdate);
         final TextView news_title = (TextView) findViewById(R.id.news_title);
         final TextView news_author = (TextView) findViewById(R.id.news_author);
@@ -80,12 +80,10 @@ public class NewsDetailActivity extends AppCompatActivity {
         news_title.setText(title);
         news_author.setText(author);
 
-
-        news_author.setText(intent.getStringExtra("author"));
         news_author.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                Log.d("CLICK", "Next update can see author profile");
+                Toast.makeText(context,"Next update can see author profile",Toast.LENGTH_SHORT).show();
             }
         });
 
diff --git a/app/src/main/java/id/ac/ui/cs/myui/activity/NewsHomeActivity.java b/app/src/main/java/id/ac/ui/cs/myui/activity/NewsHomeActivity.java
index 14adbc0229c52f31cd0765973852e9017c487058..427be67c279930325c6b6449418ba7df77fc7709 100644
--- a/app/src/main/java/id/ac/ui/cs/myui/activity/NewsHomeActivity.java
+++ b/app/src/main/java/id/ac/ui/cs/myui/activity/NewsHomeActivity.java
@@ -4,14 +4,30 @@ import android.content.Intent;
 
 import android.os.Bundle;
 
+import android.os.Handler;
+import android.view.View;
+import android.widget.AdapterView;
 import android.widget.FrameLayout;
+import android.widget.ListView;
 
 
 import com.crashlytics.android.Crashlytics;
+
+import java.util.ArrayList;
+import java.util.Timer;
+import java.util.TimerTask;
+
 import id.ac.ui.cs.myui.R;
+import id.ac.ui.cs.myui.adapter.NewsAdapter;
+import id.ac.ui.cs.myui.database.DatabaseHandler;
+import id.ac.ui.cs.myui.model.News;
+import id.ac.ui.cs.myui.service.BackgroundServiceNewsSchedule;
 import id.ac.ui.cs.myui.task.NewsSceleTask;
+import id.ac.ui.cs.myui.task.NotificationTask;
 import io.fabric.sdk.android.Fabric;
-
+/**
+ * modified by agni.wira dan irma on 26/07/17.
+ */
 public class NewsHomeActivity extends DrawerActivity {
 
     @Override
@@ -23,9 +39,38 @@ public class NewsHomeActivity extends DrawerActivity {
 
         FrameLayout contentFrameLayout = (FrameLayout) findViewById(R.id.content_bookmark); //Remember this is the FrameLayout area within your activity_main.xml
         getLayoutInflater().inflate(R.layout.activity_news_home, contentFrameLayout);
-        
 
-        new NewsSceleTask(this).execute();
+
+        //new NewsSceleTask(this).execute();
+
+        DatabaseHandler dbhandler = new DatabaseHandler(getApplicationContext());
+        ArrayList<News> listMenuItems = dbhandler.getAllNews();
+
+        final ListView listView = (ListView) findViewById(R.id.list_news);
+
+        final NewsAdapter listMenuAdapter = new NewsAdapter(NewsHomeActivity.this, R.layout.news_item_layout, listMenuItems);
+        listView.setAdapter(listMenuAdapter);
+        final Intent intent = new Intent(NewsHomeActivity.this, NewsDetailActivity.class);
+
+        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
+                String title = listMenuAdapter.getItem(i).getTitle();
+                String description = listMenuAdapter.getItem(i).getDescription();
+                String date = listMenuAdapter.getItem(i).getDate();
+                String author = listMenuAdapter.getItem(i).getAuthor();
+                String link = listMenuAdapter.getItem(i).getLink();
+                intent.putExtra("Description", description);
+                intent.putExtra("Date", date);
+                intent.putExtra("Author", author);
+                intent.putExtra("Title", title);
+                intent.putExtra("link", link);
+                intent.putExtra("contextParent", "newsHome");
+
+                startActivity(intent);
+            }
+        });
+
 
     }
 
diff --git a/app/src/main/java/id/ac/ui/cs/myui/activity/NotificationActivity.java b/app/src/main/java/id/ac/ui/cs/myui/activity/NotificationActivity.java
new file mode 100644
index 0000000000000000000000000000000000000000..8d915573f7f1cf7664e774dc16dad7daf789e5c1
--- /dev/null
+++ b/app/src/main/java/id/ac/ui/cs/myui/activity/NotificationActivity.java
@@ -0,0 +1,55 @@
+package id.ac.ui.cs.myui.activity;
+
+import android.app.Notification;
+import android.content.Intent;
+import android.os.Bundle;
+import android.widget.FrameLayout;
+
+import com.crashlytics.android.Crashlytics;
+
+import java.util.ArrayList;
+
+import id.ac.ui.cs.myui.R;
+import id.ac.ui.cs.myui.database.DatabaseHandler;
+import id.ac.ui.cs.myui.model.NotificationItem;
+import id.ac.ui.cs.myui.task.NotificationTask;
+import io.fabric.sdk.android.Fabric;
+
+/**
+ * Created by ayu.annisa41 and muhammad.ivan41 on 26/07/17.
+ */
+
+public class NotificationActivity extends DrawerActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        Fabric.with(this, new Crashlytics());
+        setTitle("Notifications");
+        //setContentView(R.layout.activity_news_home);
+
+        //id nya diganti disesuaikan dengan layout notification
+        FrameLayout contentFrameLayout = (FrameLayout) findViewById(R.id.content_bookmark); //Remember this is the FrameLayout area within your activity_main.xml
+        getLayoutInflater().inflate(R.layout.activity_news_home, contentFrameLayout);
+
+        DatabaseHandler dbhandler = new DatabaseHandler(getApplicationContext());
+        ArrayList<NotificationItem> items = (ArrayList) dbhandler.getAllNotification();
+
+        for(int i=0; i<items.size();i++){
+            dbhandler.updateNotification(items.get(i));
+        }
+
+
+
+
+    }
+
+    @Override
+    public void onBackPressed() {
+        Intent intent = new Intent(Intent.ACTION_MAIN);
+        intent.addCategory(Intent.CATEGORY_HOME);
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        startActivity(intent);
+
+    }
+}
diff --git a/app/src/main/java/id/ac/ui/cs/myui/activity/SplashActivity.java b/app/src/main/java/id/ac/ui/cs/myui/activity/SplashActivity.java
new file mode 100644
index 0000000000000000000000000000000000000000..eca10b20157b5572d7bbeac07b87dd966b6265c6
--- /dev/null
+++ b/app/src/main/java/id/ac/ui/cs/myui/activity/SplashActivity.java
@@ -0,0 +1,47 @@
+package id.ac.ui.cs.myui.activity;
+
+import android.content.Intent;
+import android.os.Handler;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+
+import java.util.Timer;
+import java.util.TimerTask;
+
+import id.ac.ui.cs.myui.R;
+import id.ac.ui.cs.myui.service.BackgroundServiceNewsSchedule;
+/**
+ * Created by agni.wira dan irma on 26/07/17.
+ */
+public class SplashActivity extends AppCompatActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        final Handler handler = new Handler();
+        handler.postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                Intent intent = new Intent(SplashActivity.this, NewsHomeActivity.class);
+                startActivity(intent);
+                finish();
+            }
+        }, 2000);
+
+
+        TimerTask timertask = new TimerTask() {
+            @Override
+            public void run() {
+                handler.post(new Runnable() {
+                    public void run() {
+                        startService(new Intent(SplashActivity.this, BackgroundServiceNewsSchedule.class));
+                    }
+                });
+            }
+        };
+        Timer timer = new Timer();
+        timer.schedule(timertask, 0, 10000);
+
+    }
+}
diff --git a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java
index 23569b3b5cd413f0fd5a5b088e88ae93c2dc0aa5..498889adfe592a00f7a9ba8f87d27c2efd1939c8 100644
--- a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java
+++ b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java
@@ -18,16 +18,18 @@ import java.util.List;
 
 import id.ac.ui.cs.myui.model.CalendarItem;
 import id.ac.ui.cs.myui.model.News;
+import id.ac.ui.cs.myui.model.NotificationItem;
 import id.ac.ui.cs.myui.schema.CalendarSchema;
 import id.ac.ui.cs.myui.schema.NewsSchema;
+import id.ac.ui.cs.myui.schema.NotificationSchema;
 
 /**
  * Created by muhammad.ghozi41 on 18/07/17.
  */
 /**
  * modified by Agni wira Buana on 24/07/17 15:23.
- * modified by M Ivan & Ekanaradhipa on 25/07/17 15:23.
- *
+ * modified by M Ivan & Ekanaradhipa on 25/07/17
+ * modifid by M Ghozi & Rifki Adrian on 25/07017 add delete notification
  */
 
 public class DatabaseHandler extends SQLiteOpenHelper {
@@ -66,9 +68,28 @@ public class DatabaseHandler extends SQLiteOpenHelper {
                     CalendarSchema.CalendarTable.COLUMN_NAME_EXECUTOR + " TEXT, " +
                     CalendarSchema.CalendarTable.COLUMN_NAME_EVENT_NAME + " TEXT"+")";
 
+    private String CREATE_NOTIFICATION_TABLE = "CREATE TABLE " + NotificationSchema.NotificationTable.TABLE_NAME +
+            "("+ COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+            + NotificationSchema.NotificationTable.COLUMN_NAME_TITLE + " TEXT,"
+            + NotificationSchema.NotificationTable.COLUMN_NAME_DESCRIPTION + " TEXT,"
+            + NotificationSchema.NotificationTable.COLUMN_NAME_DATE + " TEXT,"  +
+            NotificationSchema.NotificationTable.COLUMN_NAME_TYPE +" TEXT"+")";
+
     private static final String SQL_DROP_TABLE =
             "DROP TABLE IF EXIST " + CalendarSchema.CalendarTable.TABLE_NAME;
 
+    private static final String SQL_CREATE_NOTIFICATIONS_TABLE =
+            "CREATE TABLE " + NotificationSchema.NotificationTable.TABLE_NAME + "(" +
+                    NotificationSchema.NotificationTable._ID + " INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "+
+                    NotificationSchema.NotificationTable.COLUMN_NAME_TITLE + " TEXT, " +
+                    NotificationSchema.NotificationTable.COLUMN_NAME_DESCRIPTION + " TEXT, " +
+                    NotificationSchema.NotificationTable.COLUMN_NAME_DATE + " TEXT, " +
+                    NotificationSchema.NotificationTable.COLUMN_NAME_TYPE + " TEXT," +
+                    NotificationSchema.NotificationTable.COLUMN_NAME_SEEN + " INT)";
+
+    private static final String SQL_DROP_NOTIFICATIONS_TABLE =
+            "DROP TABLE IF EXIST " + NotificationSchema.NotificationTable.TABLE_NAME;
+
     private SQLiteDatabase db;
     private String databasePath;
 
@@ -86,6 +107,7 @@ public class DatabaseHandler extends SQLiteOpenHelper {
     public void onCreate(SQLiteDatabase db) {
         db.execSQL(CREATE_NEWS_TABLE);
         db.execSQL(SQL_SCHEDULE_TABLE);
+        db.execSQL(SQL_CREATE_NOTIFICATIONS_TABLE);
         Log.d("buatdb","buat db");
     }
 
@@ -93,8 +115,10 @@ public class DatabaseHandler extends SQLiteOpenHelper {
     @Override
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 
-        //Drop User Table if exist
+        //Drop User Table if exists
         db.execSQL(DROP_NEWS_TABLE);
+        db.execSQL(SQL_DROP_TABLE); //punya table schedule
+        db.execSQL(SQL_DROP_NOTIFICATIONS_TABLE);
 
         // Create tables again
         onCreate(db);
@@ -114,15 +138,19 @@ public class DatabaseHandler extends SQLiteOpenHelper {
         if(!checkTable(CalendarSchema.CalendarTable.TABLE_NAME)) {
             Log.d("DEBUG", "Table is not exist, create new one");
             db.execSQL(SQL_SCHEDULE_TABLE);
-        }
-        else
+        } else
+            Log.d("DEBUG", "Table exists");
+
+        if(!checkTable(NotificationSchema.NotificationTable.TABLE_NAME)) {
+            Log.d("DEBUG", "Table is not exist, create new one");
+            db.execSQL(SQL_CREATE_NOTIFICATIONS_TABLE);
+        } else
             Log.d("DEBUG", "Table exists");
 
         if(!checkTable(TABLE_NEWS)) {
             Log.d("DEBUG", "Table is not exist, create new one");
             db.execSQL(CREATE_NEWS_TABLE);
-        }
-        else
+        } else
             Log.d("DEBUG", "Table exists");
     }
 
@@ -187,7 +215,7 @@ public class DatabaseHandler extends SQLiteOpenHelper {
     // DONE
     // Insert a News into databse
     public void addNews(News news){
-        SQLiteDatabase db = this.getWritableDatabase();
+        db = this.getWritableDatabase();
 
         ContentValues values = new ContentValues();
         values.put(COLUMN_TITLE, news.getTitle());
@@ -206,8 +234,7 @@ public class DatabaseHandler extends SQLiteOpenHelper {
     // DONE
     // Set bookmark on a News
     public void setBookmark(News news){
-
-        SQLiteDatabase db = this.getWritableDatabase();
+        db = this.getWritableDatabase();
 
         ContentValues values = new ContentValues();
         values.put(COLUMN_BOOKMARKED, 1);
@@ -222,7 +249,7 @@ public class DatabaseHandler extends SQLiteOpenHelper {
     }
 
     public void deleteBookmark(News news){
-        SQLiteDatabase db = this.getWritableDatabase();
+        db = this.getWritableDatabase();
 
         ContentValues values = new ContentValues();
         values.put(COLUMN_BOOKMARKED, 0);
@@ -232,13 +259,14 @@ public class DatabaseHandler extends SQLiteOpenHelper {
 //        db.insert(TABLE_NEWS, null, values);
         db.update(TABLE_NEWS,values, COLUMN_TITLE + " = '"+news.getTitle()+"'", null);
         // String "UPDATE myTable SET Column1 = someValue WHERE columnId = "+ someValue;
+
         db.close();
     }
 
     // DONE
     // Update bookmark on a News
     public void updateBookmark(News news){
-        SQLiteDatabase db = this.getWritableDatabase();
+        db = this.getWritableDatabase();
 
         ContentValues values = new ContentValues();
         values.put(COLUMN_TITLE, news.getTitle());
@@ -287,9 +315,11 @@ public class DatabaseHandler extends SQLiteOpenHelper {
         List<News> currNewsList= getAllNews();
         for (News currNews : currNewsList) {
             if (currNews.getTitle().equalsIgnoreCase(title)) {
+                Log.d("newsnotif","true"+currNewsList.size());
                 return true;
             }
         }
+        Log.d("newsnotif","false");
         return false;
     }
 
@@ -499,4 +529,130 @@ public class DatabaseHandler extends SQLiteOpenHelper {
 
 
 
+    public List<NotificationItem> getAllNotification() {
+        db = this.getReadableDatabase();
+        List<NotificationItem> notificationItemList = new ArrayList<NotificationItem>();
+        String query = "SELECT * FROM "+ NotificationSchema.NotificationTable.TABLE_NAME;
+        Cursor cur = db.rawQuery(query, null);
+        Log.d("DEBUG ALL PARENT", "Total Menu = "+cur.getCount());
+        if(cur.getCount() > 0) {
+            if(cur.moveToFirst()) {
+                Log.i("tes", "masuk ke 1");
+                while(!cur.isAfterLast()) {
+
+                    NotificationItem item = new NotificationItem();
+                    item.setTitle(cur.getString(cur.getColumnIndex(NotificationSchema.NotificationTable.COLUMN_NAME_TITLE)));
+                    item.setDate(cur.getString(cur.getColumnIndex(NotificationSchema.NotificationTable.COLUMN_NAME_DATE)));
+                    item.setDescription(cur.getString(cur.getColumnIndex(NotificationSchema.NotificationTable.COLUMN_NAME_DESCRIPTION)));
+                    item.setType(cur.getString(cur.getColumnIndex(NotificationSchema.NotificationTable.COLUMN_NAME_TYPE)));
+                    notificationItemList.add(item);
+                    cur.moveToNext();
+                }
+            }
+        }
+        cur.close();
+        db.close();
+        return notificationItemList;
+    }
+    public void deleteNotification(List<NotificationItem> notificationItemList){
+        db = this.getWritableDatabase();
+        for (NotificationItem ni:notificationItemList) {
+            db.delete(NotificationSchema.NotificationTable.TABLE_NAME,NotificationSchema.NotificationTable.COLUMN_NAME_TITLE
+                    +" = '"+ni.getTitle()+"'",null);
+        }
+        db.close();
+
+    }
+
+    public void deleteAllNotification(){
+        db = this.getWritableDatabase();
+        db.execSQL("delete from "+ NotificationSchema.NotificationTable.TABLE_NAME);
+        db.close();
+    }
+
+
+    // Insert a News into databse
+    public void addNotification(NotificationItem item){
+        SQLiteDatabase db = this.getWritableDatabase();
+
+        ContentValues values = new ContentValues();
+        values.put(NotificationSchema.NotificationTable.COLUMN_NAME_TITLE, item.getTitle());
+        values.put(NotificationSchema.NotificationTable.COLUMN_NAME_DESCRIPTION , item.getDescription());
+        values.put(NotificationSchema.NotificationTable.COLUMN_NAME_DATE, item.getDate());
+        values.put(NotificationSchema.NotificationTable.COLUMN_NAME_TYPE, item.getType());
+        values.put(NotificationSchema.NotificationTable.COLUMN_NAME_SEEN, item.getSeen());
+
+        // Inserting Row
+        db.insert(NotificationSchema.NotificationTable.TABLE_NAME, null, values);
+        db.close();
+    }
+
+    public int getSizeNotificationDB (){
+        db = this.getReadableDatabase();
+        int counter =0;
+
+        Cursor c = db.rawQuery("SELECT * FROM notifications_item WHERE seen=0", null);
+        if(c.moveToFirst()){
+            do{
+                //assing values
+                String column1 = c.getString(0);
+                //Do something Here with values
+                counter++;
+
+
+            }while(c.moveToNext());
+        }
+        c.close();
+        db.close();
+
+        return counter;
+    }
+
+    public void updateNotification(NotificationItem item){
+        db = this.getWritableDatabase();
+
+        ContentValues values = new ContentValues();
+        values.put(NotificationSchema.NotificationTable.COLUMN_NAME_TITLE, item.getTitle());
+        values.put(NotificationSchema.NotificationTable.COLUMN_NAME_DESCRIPTION , item.getDescription());
+        values.put(NotificationSchema.NotificationTable.COLUMN_NAME_DATE, item.getDate());
+        values.put(NotificationSchema.NotificationTable.COLUMN_NAME_TYPE, item.getType());
+        values.put(NotificationSchema.NotificationTable.COLUMN_NAME_SEEN, 1);
+
+        // updating row
+        db.update(NotificationSchema.NotificationTable.TABLE_NAME, values, COLUMN_TITLE + " = '" + item.getTitle() + "'", null);
+        db.close();
+    }
+
+
+
+
+
+    // TODO: 26/07/17 check tanggalnya jika sudah lebih dari 3 hari maka hapus dari database
+//    public void cleanNotification(){
+//        db=this.getWritableDatabase();
+//        List<NotificationItem> notificationItemList = new ArrayList<NotificationItem>();
+//        String query = "SELECT * FROM "+ NotificationSchema.NotificationTable.TABLE_NAME;
+//        Cursor cur = db.rawQuery(query, null);
+//        if(cur.getCount() > 0) {
+//            if(cur.moveToFirst()) {
+//
+//                while(!cur.isAfterLast()) {
+//                    NotificationItem item = new NotificationItem();
+//                    item.setTitle(cur.getString(cur.getColumnIndex(NotificationSchema.NotificationTable.COLUMN_NAME_TITLE)));
+//                    item.setDate(cur.getString(cur.getColumnIndex(NotificationSchema.NotificationTable.COLUMN_NAME_DATE)));
+//                    item.setDescription(cur.getString(cur.getColumnIndex(NotificationSchema.NotificationTable.COLUMN_NAME_DESCRIPTION)));
+//                    item.setType(cur.getString(cur.getColumnIndex(NotificationSchema.NotificationTable.COLUMN_NAME_TYPE)));
+//                    if(item.getDate()- this date > 3){
+//                        notificationItemList.add(item);
+//                    }
+//                    cur.moveToNext();
+//                }
+//            }
+//        }
+//        deleteNotification(notificationItemList);
+//        cur.close();
+//        db.close();
+//    }
+
+
 }
diff --git a/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java b/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java
new file mode 100644
index 0000000000000000000000000000000000000000..0da4df483b564a99b08cb49459275900a84396f1
--- /dev/null
+++ b/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java
@@ -0,0 +1,69 @@
+package id.ac.ui.cs.myui.model;
+
+/**
+ * Created by maulana.wisnu & ina sakinah on 26/07/17.
+ */
+
+public class NotificationItem {
+
+    public static final String TIPE_NEWS = "news";
+    public static final String TIPE_CALENDAR = "calendar";
+
+    String title;
+    String description;
+    String type;
+    String date;
+    int seen;
+
+    public NotificationItem(String title, String description, String type, String date) {
+        this.title = title;
+        this.description = description;
+        this.type = type;
+        this.date = date;
+        this.seen = 0;
+    }
+
+
+    public NotificationItem() {
+    }
+
+    public int getSeen() {
+        return seen;
+    }
+
+    public void setSeen(int seen) {
+        this.seen = seen;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getDate() {
+        return date;
+    }
+
+    public void setDate(String date) {
+        this.date = date;
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/id/ac/ui/cs/myui/schema/NotificationSchema.java b/app/src/main/java/id/ac/ui/cs/myui/schema/NotificationSchema.java
new file mode 100644
index 0000000000000000000000000000000000000000..6931c9416f2a22ef8dfcb1d50eb844e302008d4e
--- /dev/null
+++ b/app/src/main/java/id/ac/ui/cs/myui/schema/NotificationSchema.java
@@ -0,0 +1,18 @@
+package id.ac.ui.cs.myui.schema;
+
+import android.provider.BaseColumns;
+
+
+public class NotificationSchema {
+    private NotificationSchema() {}
+
+    public static class NotificationTable implements BaseColumns {
+        public static final String TABLE_NAME = "notifications_item";
+        public static final String COLUMN_NAME_TITLE = "title";
+        public static final String COLUMN_NAME_DESCRIPTION = "description";
+        public static final String COLUMN_NAME_TYPE = "type";
+        public static final String COLUMN_NAME_DATE = "date";
+        public static final String COLUMN_NAME_SEEN = "seen";
+
+    }
+}
diff --git a/app/src/main/java/id/ac/ui/cs/myui/service/BackgroundServiceNewsSchedule.java b/app/src/main/java/id/ac/ui/cs/myui/service/BackgroundServiceNewsSchedule.java
new file mode 100644
index 0000000000000000000000000000000000000000..6d2292d4638b502e48a5cbbe710ea2ed1f8326f0
--- /dev/null
+++ b/app/src/main/java/id/ac/ui/cs/myui/service/BackgroundServiceNewsSchedule.java
@@ -0,0 +1,70 @@
+package id.ac.ui.cs.myui.service;
+
+import android.app.IntentService;
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.support.annotation.Nullable;
+import android.support.v4.app.NotificationCompat;
+import android.util.Log;
+
+import java.util.Date;
+
+import id.ac.ui.cs.myui.R;
+import id.ac.ui.cs.myui.activity.NewsHomeActivity;
+import id.ac.ui.cs.myui.activity.NotificationActivity;
+import id.ac.ui.cs.myui.database.DatabaseHandler;
+import id.ac.ui.cs.myui.task.NotificationTask;
+
+/**
+ * Created by agni.wira dan irma on 26/07/17.
+ */
+
+public class BackgroundServiceNewsSchedule extends IntentService {
+
+    public BackgroundServiceNewsSchedule() {
+        super("MyService");
+        // TODO Auto-generated constructor stub
+    }
+
+    @Override
+    public int onStartCommand(Intent intent, int flags, int startId) {
+
+        new NotificationTask(getApplicationContext()).execute();
+
+        Intent notificationIntent = new Intent(this, NotificationActivity.class);
+        notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
+                | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+
+        DatabaseHandler db = new DatabaseHandler(getApplicationContext());
+
+        NotificationManager notificationManager = (NotificationManager) getApplicationContext()
+                .getSystemService(Context.NOTIFICATION_SERVICE);
+
+        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
+                notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
+
+        Notification notification = new NotificationCompat.Builder(this)
+                .setSmallIcon(R.mipmap.ic_launcher)
+                .setContentTitle("Notification MyUI")
+                .setContentText(db.getSizeNotificationDB()+" notifications")
+                .setContentIntent(pendingIntent).build();
+
+        notification.flags |= Notification.FLAG_AUTO_CANCEL;
+
+        startForeground(1337, notification);
+        //notificationManager.notify(0, notification);
+
+
+        return START_STICKY;
+    }
+
+    @Override
+    protected void onHandleIntent(Intent intent) {
+
+    }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/id/ac/ui/cs/myui/task/NotificationTask.java b/app/src/main/java/id/ac/ui/cs/myui/task/NotificationTask.java
new file mode 100644
index 0000000000000000000000000000000000000000..53f909ecc7a77f5c4bff53279dc90393066c8272
--- /dev/null
+++ b/app/src/main/java/id/ac/ui/cs/myui/task/NotificationTask.java
@@ -0,0 +1,101 @@
+package id.ac.ui.cs.myui.task;
+
+/**
+ * Created by agni.wira & irma on 26/07/17.
+ */
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.os.AsyncTask;
+import android.util.Log;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ListView;
+
+import java.io.IOException;
+import java.util.ArrayList;
+
+import id.ac.ui.cs.myui.R;
+import id.ac.ui.cs.myui.activity.NewsDetailActivity;
+import id.ac.ui.cs.myui.adapter.NewsAdapter;
+import id.ac.ui.cs.myui.database.DatabaseHandler;
+import id.ac.ui.cs.myui.model.ItemNews;
+import id.ac.ui.cs.myui.model.News;
+import id.ac.ui.cs.myui.model.NewsScele;
+import id.ac.ui.cs.myui.model.NotificationItem;
+import id.ac.ui.cs.myui.service.NewsService;
+import retrofit2.Call;
+import retrofit2.Response;
+import retrofit2.Retrofit;
+import retrofit2.converter.simplexml.SimpleXmlConverterFactory;
+/**
+ * Created by agni.wira on 17/07/17.
+ */
+
+public class NotificationTask extends AsyncTask<Object,Object,ArrayList<News>> {
+    private Context context;
+    private DatabaseHandler dbhandler;
+    public static boolean finished =false;
+
+    public NotificationTask(Context context) {
+        this.context = context;
+        this.dbhandler = new DatabaseHandler(context);
+    }
+
+    @Override
+    protected ArrayList<News> doInBackground(Object... objects) {
+        Retrofit client = new Retrofit.Builder()
+                .baseUrl("https://scele.cs.ui.ac.id/")
+                .addConverterFactory(SimpleXmlConverterFactory.create())
+                .build();
+
+        NewsService service = client.create(NewsService.class);
+
+        Call<NewsScele> call = service.listNewsScele();
+
+        Response<NewsScele> posts = null;
+
+
+        try {
+            posts = call.execute();
+
+            ArrayList<ItemNews> itemNews = posts.body().getChannel().item;
+
+            ArrayList<News> news = new ArrayList<>();
+
+
+            for (int i=0; i<itemNews.size(); i++){
+                String title = itemNews.get(i).getTitle();
+                String desc = itemNews.get(i).getContent();
+                String link = itemNews.get(i).getLink();
+                String date = itemNews.get(i).getPubdate();
+                String author = itemNews.get(i).getAuthor();
+
+                if (!dbhandler.findNews(title)) {
+                    news.add(new News(title, desc, link, date, author));
+                    dbhandler.addNotification(new NotificationItem(title,desc,NotificationItem.TIPE_NEWS,date));
+                    Log.d("newsnotif", "insert notif news" + dbhandler.getSizeNotificationDB());
+                }
+
+            }
+
+            dbhandler.insertNewsItem(news);
+            return news;
+
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        finished = true;
+        return new ArrayList<News>();
+
+    }
+
+    @Override
+    protected void onPostExecute(ArrayList<News> newsSceles) {
+
+
+    }
+}
+
diff --git a/app/src/main/res/drawable-xhdpi/background_splash.xml b/app/src/main/res/drawable-xhdpi/background_splash.xml
new file mode 100644
index 0000000000000000000000000000000000000000..32402ba880a8a3ffb1ebeecd70a0caca5ee7cdb6
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/background_splash.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item
+        android:drawable="@color/colorAccent"/>
+
+    <item>
+        <bitmap
+            android:gravity="center"
+            android:src="@mipmap/ic_launcher"/>
+    </item>
+
+</layer-list>
+
diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml
new file mode 100644
index 0000000000000000000000000000000000000000..239854df9da7597c96c5d22a94e326e1a7817196
--- /dev/null
+++ b/app/src/main/res/layout/activity_splash.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context="id.ac.ui.cs.myui.activity.SplashActivity">
+
+</android.support.constraint.ConstraintLayout>
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 545b9c6d2c45df7938f8ffd5ac2d806dec36f122..0ed96a8509d3ce5c6e246bd8580bb0f9749e1036 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -17,4 +17,8 @@
 
     <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
 
+    <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
+        <item name="android:windowBackground">@drawable/background_splash</item>
+    </style>
+
 </resources>
diff --git a/app/src/test/java/id/ac/ui/cs/myui/database/DatabaseHandlerTest.java b/app/src/test/java/id/ac/ui/cs/myui/database/DatabaseHandlerTest.java
index d32f413838d033331d53611dc5d2f906db10be7d..67b9d309be405b2f5c595176fc42b6ac5f06abbe 100644
--- a/app/src/test/java/id/ac/ui/cs/myui/database/DatabaseHandlerTest.java
+++ b/app/src/test/java/id/ac/ui/cs/myui/database/DatabaseHandlerTest.java
@@ -1,18 +1,9 @@
 package id.ac.ui.cs.myui.database;
 
-import android.app.Activity;
-import android.content.Context;
-import android.test.RenamingDelegatingContext;
-import android.util.Log;
-
-import junit.framework.Assert;
-
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.Robolectric;
-import org.robolectric.RobolectricGradleTestRunner;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
@@ -22,11 +13,9 @@ import java.util.List;
 
 import id.ac.ui.cs.myui.BuildConfig;
 import id.ac.ui.cs.myui.model.CalendarItem;
-import id.ac.ui.cs.myui.database.DatabaseHandler;
 import id.ac.ui.cs.myui.model.News;
+import id.ac.ui.cs.myui.model.NotificationItem;
 
-import static android.os.Build.VERSION_CODES.LOLLIPOP;
-import static java.security.AccessController.getContext;
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertNotNull;
 
@@ -34,6 +23,8 @@ import static junit.framework.Assert.assertNotNull;
  * Created by muhammad.ghozi41 on 18/07/17.
  *
  * modified by M Ivan & Ekanaradhipa on 25/07/17 15:23.
+ *
+ * modified by Haryo & Meitya on 26/07/17
 
  */
 
@@ -41,23 +32,23 @@ import static junit.framework.Assert.assertNotNull;
 @Config(constants = BuildConfig.class)
 public class DatabaseHandlerTest {
 
-
     DatabaseHandler dbhandler;
 
+    /*Modified by haryo-meitya 26/07 */
     @Before
     public void setUp() {
-
         dbhandler = new DatabaseHandler(RuntimeEnvironment.application);
-    }
 
-    @After
-    public void tearDown(){
+        //Setup for notification testing
+        NotificationItem ni1 = new NotificationItem("test1", "", "", "");
+        NotificationItem ni2 = new NotificationItem("test2", "", "", "");
+        NotificationItem ni3 = new NotificationItem("test3", "", "", "");
 
-        dbhandler.close();
-    }
+        dbhandler.addNotification(ni1);
+        dbhandler.addNotification(ni2);
+        dbhandler.addNotification(ni3);
 
-    @Test
-    public void calenderTest(){
+        //Setup for calendar testing
         CalendarItem ci1 = new CalendarItem(1,"","",1,"","test1");
         CalendarItem ci2 = new CalendarItem(2,"","",2,"","test2");
         CalendarItem ci3 = new CalendarItem(3,"","",3,"","test3");
@@ -68,21 +59,18 @@ public class DatabaseHandlerTest {
         lci.add(ci3);
 
         dbhandler.insertMenu(lci);
-        assertNotNull(dbhandler.getAllParentMenu());
-        List<CalendarItem> dariDatabase = dbhandler.getAllParentMenu();
-        assertEquals("test1",dariDatabase.get(0).getEventName());
-        assertEquals("test2",dariDatabase.get(1).getEventName());
-        assertEquals("test3",dariDatabase.get(2).getEventName());
-    }
-    @Test
-    public void bookmarkTest(){
+
+        //Setup for news testing
         News news1 = new News();
         News news2 = new News();
         News news3 = new News();
 
         news1.setTitle("test1");
+        news1.setLink("linkTest1");
         news2.setTitle("test2");
+        news2.setLink("linkTest2");
         news3.setTitle("test3");
+        news3.setLink("linkTest3");
 
         dbhandler.addNews(news1);
         dbhandler.addNews(news2);
@@ -90,6 +78,29 @@ public class DatabaseHandlerTest {
         dbhandler.setBookmark(news1);
         dbhandler.setBookmark(news2);
         dbhandler.setBookmark(news3);
+    }
+
+    @After
+    public void tearDown(){
+        dbhandler.close();
+    }
+
+    /*Modified by haryo-meitya 26/07 */
+    @Test
+    public void calenderTest(){
+        assertNotNull(dbhandler.getAllParentMenu());
+        List<CalendarItem> dariDatabase = dbhandler.getAllParentMenu();
+        assertEquals("test1",dariDatabase.get(0).getEventName());
+        assertEquals("test2",dariDatabase.get(1).getEventName());
+        assertEquals("test3",dariDatabase.get(2).getEventName());
+    }
+
+    /*Modified by haryo-meitya 26/07 */
+    @Test
+    public void bookmarkTest(){
+        News news1 = dbhandler.getAllNews().get(0);
+        News news2 = dbhandler.getAllNews().get(1);
+        News news3 = dbhandler.getAllNews().get(2);
 
         //Test in model: is bookmarked should be true
         assertEquals(news1.isBookmarked(), true);
@@ -103,27 +114,15 @@ public class DatabaseHandlerTest {
         assertEquals(listBookmark.get(0).getTitle().equals("test1"), true);
         assertEquals(listBookmark.get(1).getTitle().equals("test2"), true);
         assertEquals(listBookmark.get(2).getTitle().equals("test3"), true);
-
     }
 
+    /*Modified by haryo-meitya 26/07 */
     @Test
     public void unBookmarkTest(){
-        News news1 = new News();
-        News news2 = new News();
-        News news3 = new News();
+        News news1 = dbhandler.getAllNews().get(0);
+        News news2 = dbhandler.getAllNews().get(1);
+        News news3 = dbhandler.getAllNews().get(2);
 
-        news1.setTitle("test1");
-        news1.setLink("linkTest1");
-        news2.setTitle("test2");
-        news2.setLink("linkTest2");
-        news3.setTitle("test3");
-        news3.setLink("linkTest3");
-
-        dbhandler.addNews(news1);
-        dbhandler.addNews(news2);
-        dbhandler.addNews(news3);
-        dbhandler.setBookmark(news2);
-        dbhandler.setBookmark(news3);
         dbhandler.deleteBookmark(news1);
 
         //Test in model: is bookmarked should be true, except news1
@@ -138,33 +137,52 @@ public class DatabaseHandlerTest {
         assertEquals(listBookmark.get(0).getTitle().equals("test2"), true);
         assertEquals(listBookmark.get(1).getTitle().equals("test3"), true);
         dbhandler.updateBookmark(news2);
-       listBookmark = dbhandler.getAllBookmarkedNews();
-
+        listBookmark = dbhandler.getAllBookmarkedNews();
         assertEquals(listBookmark.size(), 1);
     }
+
+    /*Modified by haryo-meitya 26/07 */
     @Test
-   public void findNewsTest(){
-        News news1 = new News("test1","a","a","a","a");
-        News news2 = new News("test2","","","","");
-        News news3 = new News("test3","","","","");
-
-        List<News> newsList = new ArrayList<>();
-        newsList.add(news1);
-        newsList.add(news2);
-        dbhandler.insertNewsItem(newsList);
-        List<News> currentList = new ArrayList<>();
-//        dbhandler.findNews("tes1t");
+    public void successFindNewsTest(){
+        News news1 = dbhandler.getAllNews().get(0);
+        News news2 = dbhandler.getAllNews().get(1);
+        News news3 = dbhandler.getAllNews().get(2);
+
         assertEquals(true,  dbhandler.findNews(news1.getTitle()));
-        assertEquals(false,  dbhandler.findNews(news3.getTitle()));
-        currentList = dbhandler.getAllNews();
-        assertEquals(currentList.size(), 2);
-     //   newsList.add(news3);
-        dbhandler.addNews(news3);
+        assertEquals(true,  dbhandler.findNews(news2.getTitle()));
+        assertEquals(true,  dbhandler.findNews(news3.getTitle()));
 
-        currentList = dbhandler.getAllNews();
-        assertEquals(currentList.size(), 3);
+    }
 
-        assertEquals(true,  dbhandler.findNews(news3.getTitle()));
+    /*Modified by haryo-meitya 26/07 */
+    @Test
+    public  void failedFindNewsTest() {
+        News news4 = new News("test4", "", "", "", "");
 
+        assertEquals(false,  dbhandler.findNews(news4.getTitle()));
+    }
+
+    /*Created by haryo-meitya 26/07 */
+    @Test
+    public void addNotificationTest() {
+        assertNotNull(dbhandler.getAllNotification());
+    }
+
+    /*Created by haryo-meitya 26/07 */
+    @Test
+    public void deleteNotificationTest() {
+        assertEquals(dbhandler.getAllNotification().size(), 3);
+        List<NotificationItem> delTarget = new ArrayList<NotificationItem>();
+        delTarget.add(dbhandler.getAllNotification().get(0));
+        dbhandler.deleteNotification(delTarget);
+        assertEquals(dbhandler.getAllNotification().size(), 2);
+    }
+
+    /*Created by haryo-meitya 26/07 */
+    @Test
+    public void deleteAllNotificationTest() {
+        assertEquals(dbhandler.getAllNotification().size(), 3);
+        dbhandler.deleteAllNotification();
+        assertEquals(dbhandler.getAllNotification().size(), 0);
     }
 }
diff --git a/app/src/test/java/id/ac/ui/cs/myui/model/NotificationItemTest.java b/app/src/test/java/id/ac/ui/cs/myui/model/NotificationItemTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..1599581edf4838af45256245e316b4958e34152c
--- /dev/null
+++ b/app/src/test/java/id/ac/ui/cs/myui/model/NotificationItemTest.java
@@ -0,0 +1,104 @@
+package id.ac.ui.cs.myui.model;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+
+/**
+ * Created by maulana.wisnu & ina sakinah on 26/07/17.
+ */
+
+public class NotificationItemTest {
+    String title;
+    String description;
+    String type;
+    String date;
+
+    String titleReset;
+    String descriptionReset;
+    String typeReset;
+    String dateReset;
+
+    NotificationItem notificationItem;
+
+
+    @Before
+    public void setUp(){
+        title = "titleTest";
+        description = "descriptionTest";
+        type = "typeTest";
+        date = "dateTest";
+
+        titleReset = "titleTestReset";
+        descriptionReset = "descriptionTestReset";
+        typeReset = "typeTestReset";
+        dateReset = "dateTestReset";
+
+        notificationItem = new NotificationItem(title, description, type, date);
+
+    }
+
+    @Test
+    public void constructor1Test(){
+        NotificationItem notificationItem1 = new NotificationItem(title, description, type, date);
+        assertNotNull(notificationItem1);
+    }
+
+    @Test
+    public void constructor2Test(){
+        NotificationItem notificationItem2 = new NotificationItem();
+        assertNotNull(notificationItem2);
+    }
+
+    @Test
+    public void getTitleTest(){
+        assertEquals(title, notificationItem.getTitle());
+    }
+
+    @Test
+    public void getDescriptionTest(){
+        assertEquals(description, notificationItem.getDescription());
+    }
+
+    @Test
+    public void getTypeTest(){
+        assertEquals(type, notificationItem.getType());
+    }
+
+    @Test
+    public void getDateTest(){
+        assertEquals(date, notificationItem.getDate());
+    }
+
+    @Test
+    public void setTitleTest(){
+        notificationItem.setTitle(titleReset);
+        assertEquals(titleReset, notificationItem.getTitle());
+
+    }
+
+    @Test
+    public void setDescriptionTest(){
+        notificationItem.setDescription(descriptionReset);
+        assertEquals(descriptionReset, notificationItem.getDescription());
+    }
+
+    @Test
+    public void setTypeTest(){
+        notificationItem.setType(typeReset);
+        assertEquals(typeReset, notificationItem.getType());
+    }
+
+    @Test
+    public void setDateTest(){
+        notificationItem.setDate(dateReset);
+        assertEquals(dateReset, notificationItem.getDate());
+
+    }
+
+
+
+
+}