From a443a5203e19eb43cdff76b1e3e6502a5b917bc9 Mon Sep 17 00:00:00 2001
From: taehoon <th.dev91@gmail.com>
Date: Thu, 25 Jul 2019 14:17:48 -0400
Subject: [PATCH] add more unit tests for elimination logic

---
 test/unit/specs/components/timeline.spec.js | 31 +++++++++++++++------
 1 file changed, 22 insertions(+), 9 deletions(-)

diff --git a/test/unit/specs/components/timeline.spec.js b/test/unit/specs/components/timeline.spec.js
index b13d3e20..48796cd3 100644
--- a/test/unit/specs/components/timeline.spec.js
+++ b/test/unit/specs/components/timeline.spec.js
@@ -3,15 +3,28 @@ import { difference } from 'lodash'
 
 describe('Timeline', () => {
   describe('getExcludedStatusIdsByPinning', () => {
-    it('should not return unpinned status ids', () => {
-      const statuses = [
-        { id: 1 },
-        { id: 2 },
-        { id: 3 },
-        { id: 4 }
-      ]
-      const pinnedStatusIds = [1, 3]
+    const mockStatuses = (ids) => ids.map(id => ({ id }))
+
+    it('should not return any unpinned status ids', () => {
+      const statuses = mockStatuses([1, 2, 3, 4])
+      const pinnedStatusIds = [1, 3, 5]
       expect(difference(getExcludedStatusIdsByPinning(statuses, pinnedStatusIds), pinnedStatusIds)).to.eql([])
     })
+
+    it('should not return any status ids not listed in the given statuses', () => {
+      const statusIds = [1, 2, 3, 4]
+      const statuses = mockStatuses(statusIds)
+      const pinnedStatusIds = [1, 3, 5]
+      expect(difference(getExcludedStatusIdsByPinning(statuses, pinnedStatusIds), statusIds)).to.eql([])
+    })
+
+    it('should return ids of pinned statuses not posted before any unpinned status', () => {
+      const pinnedStatusIdSet1 = ['PINNED1', 'PINNED2']
+      const pinnedStatusIdSet2 = ['PINNED3', 'PINNED4']
+      const pinnedStatusIds = [...pinnedStatusIdSet1, ...pinnedStatusIdSet2]
+      const statusIds = [...pinnedStatusIdSet1, 'UNPINNED1', ...pinnedStatusIdSet2]
+      const statuses = mockStatuses(statusIds)
+      expect(getExcludedStatusIdsByPinning(statuses, pinnedStatusIds)).to.eql(pinnedStatusIdSet1)
+    })
   })
-})
\ No newline at end of file
+})