timeline.spec.js 1.2 KB

123456789101112131415161718192021222324252627
  1. import { getExcludedStatusIdsByPinning } from 'src/components/timeline/timeline.js'
  2. describe('Timeline', () => {
  3. describe('getExcludedStatusIdsByPinning', () => {
  4. const mockStatuses = (ids) => ids.map(id => ({ id }))
  5. it('should return only members of both pinnedStatusIds and ids of the given statuses', () => {
  6. const statusIds = [1, 2, 3, 4]
  7. const statuses = mockStatuses(statusIds)
  8. const pinnedStatusIds = [1, 3, 5]
  9. const result = getExcludedStatusIdsByPinning(statuses, pinnedStatusIds)
  10. result.forEach(item => {
  11. expect(item).to.be.oneOf(statusIds)
  12. expect(item).to.be.oneOf(pinnedStatusIds)
  13. })
  14. })
  15. it('should return ids of pinned statuses not posted before any unpinned status', () => {
  16. const pinnedStatusIdSet1 = ['PINNED1', 'PINNED2']
  17. const pinnedStatusIdSet2 = ['PINNED3', 'PINNED4']
  18. const pinnedStatusIds = [...pinnedStatusIdSet1, ...pinnedStatusIdSet2]
  19. const statusIds = [...pinnedStatusIdSet1, 'UNPINNED1', ...pinnedStatusIdSet2]
  20. const statuses = mockStatuses(statusIds)
  21. expect(getExcludedStatusIdsByPinning(statuses, pinnedStatusIds)).to.eql(pinnedStatusIdSet1)
  22. })
  23. })
  24. })