Skip to content

Commit

Permalink
bring back shared pagination component and refactor it to use DDAU vi…
Browse files Browse the repository at this point in the history
…a props instead of store
  • Loading branch information
fschade committed Nov 29, 2021
1 parent 27f7e5b commit aac56f1
Show file tree
Hide file tree
Showing 10 changed files with 143 additions and 69 deletions.
25 changes: 25 additions & 0 deletions packages/web-app-files/src/components/FilesList/Pagination.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<template>
<oc-pagination
v-if="pages > 1"
:pages="pages"
:current-page="currentPage"
:max-displayed="3"
:current-route="$route"
class="files-pagination uk-flex uk-flex-center oc-my-s"
/>
</template>

<script>
export default {
props: {
pages: {
type: Number,
required: true
},
currentPage: {
type: Number,
required: true
}
}
}
</script>
12 changes: 3 additions & 9 deletions packages/web-app-files/src/components/Search/List.vue
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,7 @@
@rowMounted="rowMounted"
>
<template #footer>
<oc-pagination
v-if="paginationPages > 1"
:pages="paginationPages"
:current-page="paginationPage"
:max-displayed="3"
:current-route="$route"
class="files-pagination uk-flex uk-flex-center oc-my-s"
/>
<pagination :pages="paginationPages" :current-page="paginationPage" />
<list-info
v-if="paginatedResources.length > 0"
class="uk-width-1-1 oc-my-s"
Expand All @@ -51,14 +44,15 @@ import debounce from 'lodash-es/debounce'
import { mapMutations, mapGetters, mapActions } from 'vuex'
import { computed } from '@vue/composition-api'
import ListInfo from '../FilesList/ListInfo.vue'
import Pagination from '../FilesList/Pagination.vue'
import MixinFileActions from '../../mixins/fileActions'
import MixinFilesListFilter from '../../mixins/filesListFilter'
import MixinFilesListScrolling from '../../mixins/filesListScrolling'
const visibilityObserver = new VisibilityObserver()
export default {
components: { ListInfo, NoContentMessage },
components: { ListInfo, Pagination, NoContentMessage },
mixins: [MixinFileActions, MixinFilesListFilter, MixinFilesListScrolling],
props: {
searchResults: {
Expand Down
11 changes: 3 additions & 8 deletions packages/web-app-files/src/views/Favorites.vue
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,7 @@
<context-actions v-if="isResourceInSelection(resource)" :items="selected" />
</template>
<template #footer>
<oc-pagination
v-if="paginationPages > 1"
:pages="paginationPages"
:current-page="paginationPage"
:max-displayed="3"
:current-route="$route"
class="files-pagination uk-flex uk-flex-center oc-my-s"
/>
<pagination :pages="paginationPages" :current-page="paginationPage" />
<list-info
v-if="paginatedResources.length > 0"
class="uk-width-1-1 oc-my-s"
Expand Down Expand Up @@ -73,6 +66,7 @@ import QuickActions from '../components/FilesList/QuickActions.vue'
import ListLoader from '../components/FilesList/ListLoader.vue'
import NoContentMessage from '../components/FilesList/NoContentMessage.vue'
import ListInfo from '../components/FilesList/ListInfo.vue'
import Pagination from '../components/FilesList/Pagination.vue'
import ContextActions from '../components/FilesList/ContextActions.vue'
import { DavProperties } from 'web-pkg/src/constants'
Expand All @@ -82,6 +76,7 @@ export default {
components: {
QuickActions,
ListLoader,
Pagination,
NoContentMessage,
ListInfo,
ContextActions
Expand Down
13 changes: 4 additions & 9 deletions packages/web-app-files/src/views/LocationPicker.vue
Original file line number Diff line number Diff line change
Expand Up @@ -56,14 +56,7 @@
:header-position="fileListHeaderY"
>
<template #footer>
<oc-pagination
v-if="paginationPages > 1"
:pages="paginationPages"
:current-page="paginationPage"
:max-displayed="3"
:current-route="$route"
class="files-pagination uk-flex uk-flex-center oc-my-s"
/>
<pagination :pages="paginationPages" :current-page="paginationPage" />
<list-info
v-if="paginatedResources.length > 0"
class="uk-width-1-1 oc-my-s"
Expand Down Expand Up @@ -101,6 +94,7 @@ import { useTask } from 'vue-concurrency'
import NoContentMessage from '../components/FilesList/NoContentMessage.vue'
import ListLoader from '../components/FilesList/ListLoader.vue'
import ListInfo from '../components/FilesList/ListInfo.vue'
import Pagination from '../components/FilesList/Pagination.vue'
import { DavProperties } from 'web-pkg/src/constants'
export default {
Expand All @@ -113,7 +107,8 @@ export default {
components: {
NoContentMessage,
ListLoader,
ListInfo
ListInfo,
Pagination
},
mixins: [MixinsGeneral, MixinRoutes, MixinFilesListFilter],
Expand Down
11 changes: 3 additions & 8 deletions packages/web-app-files/src/views/Personal.vue
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,7 @@
<context-actions v-if="isResourceInSelection(resource)" :items="selected" />
</template>
<template #footer>
<oc-pagination
v-if="paginationPages > 1"
:pages="paginationPages"
:current-page="paginationPage"
:max-displayed="3"
:current-route="$route"
class="files-pagination uk-flex uk-flex-center oc-my-s"
/>
<pagination :pages="paginationPages" :current-page="paginationPage" />
<list-info
v-if="paginatedResources.length > 0"
class="uk-width-1-1 oc-my-s"
Expand Down Expand Up @@ -93,6 +86,7 @@ import ListLoader from '../components/FilesList/ListLoader.vue'
import NoContentMessage from '../components/FilesList/NoContentMessage.vue'
import NotFoundMessage from '../components/FilesList/NotFoundMessage.vue'
import ListInfo from '../components/FilesList/ListInfo.vue'
import Pagination from '../components/FilesList/Pagination.vue'
import ContextActions from '../components/FilesList/ContextActions.vue'
import { DavProperties } from 'web-pkg/src/constants'
import { basename, join } from 'path'
Expand All @@ -109,6 +103,7 @@ export default {
NoContentMessage,
NotFoundMessage,
ListInfo,
Pagination,
ContextActions
},
Expand Down
11 changes: 3 additions & 8 deletions packages/web-app-files/src/views/PublicFiles.vue
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,7 @@
<context-actions v-if="isResourceInSelection(resource)" :item="resource" />
</template>
<template #footer>
<oc-pagination
v-if="paginationPages > 1"
:pages="paginationPages"
:current-page="paginationPage"
:max-displayed="3"
:current-route="$route"
class="files-pagination uk-flex uk-flex-center oc-my-s"
/>
<pagination :pages="paginationPages" :current-page="paginationPage" />
<list-info
v-if="paginatedResources.length > 0"
class="uk-width-1-1 oc-my-s"
Expand Down Expand Up @@ -83,6 +76,7 @@ import ListLoader from '../components/FilesList/ListLoader.vue'
import NoContentMessage from '../components/FilesList/NoContentMessage.vue'
import NotFoundMessage from '../components/FilesList/NotFoundMessage.vue'
import ListInfo from '../components/FilesList/ListInfo.vue'
import Pagination from '../components/FilesList/Pagination.vue'
import ContextActions from '../components/FilesList/ContextActions.vue'
import { DavProperties } from 'web-pkg/src/constants'
Expand Down Expand Up @@ -125,6 +119,7 @@ const visibilityObserver = new VisibilityObserver()
export default {
components: {
ListInfo,
Pagination,
ListLoader,
NoContentMessage,
NotFoundMessage,
Expand Down
12 changes: 3 additions & 9 deletions packages/web-app-files/src/views/SharedViaLink.vue
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,7 @@
<context-actions v-if="isResourceInSelection(resource)" :items="selected" />
</template>
<template #footer>
<oc-pagination
v-if="paginationPages > 1"
:pages="paginationPages"
:current-page="paginationPage"
:max-displayed="3"
:current-route="$route"
class="files-pagination uk-flex uk-flex-center oc-my-s"
/>
<pagination :pages="paginationPages" :current-page="paginationPage" />
<list-info
v-if="paginatedResources.length > 0"
class="uk-width-1-1 oc-my-s"
Expand Down Expand Up @@ -73,12 +66,13 @@ import { useTask } from 'vue-concurrency'
import ListLoader from '../components/FilesList/ListLoader.vue'
import NoContentMessage from '../components/FilesList/NoContentMessage.vue'
import ListInfo from '../components/FilesList/ListInfo.vue'
import Pagination from '../components/FilesList/Pagination.vue'
import ContextActions from '../components/FilesList/ContextActions.vue'
const visibilityObserver = new VisibilityObserver()
export default {
components: { ListLoader, NoContentMessage, ListInfo, ContextActions },
components: { ListLoader, NoContentMessage, ListInfo, Pagination, ContextActions },
mixins: [FileActions, MixinResources, MixinMountSideBar, MixinFilesListFilter],
Expand Down
12 changes: 3 additions & 9 deletions packages/web-app-files/src/views/SharedWithOthers.vue
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,7 @@
<context-actions v-if="isResourceInSelection(resource)" :items="selected" />
</template>
<template #footer>
<oc-pagination
v-if="paginationPages > 1"
:pages="paginationPages"
:current-page="paginationPage"
:max-displayed="3"
:current-route="$route"
class="files-pagination uk-flex uk-flex-center oc-my-s"
/>
<pagination :pages="paginationPages" :current-page="paginationPage" />
<list-info
v-if="paginatedResources.length > 0"
class="uk-width-1-1 oc-my-s"
Expand Down Expand Up @@ -75,12 +68,13 @@ import { useTask } from 'vue-concurrency'
import ListLoader from '../components/FilesList/ListLoader.vue'
import NoContentMessage from '../components/FilesList/NoContentMessage.vue'
import ListInfo from '../components/FilesList/ListInfo.vue'
import Pagination from '../components/FilesList/Pagination.vue'
import ContextActions from '../components/FilesList/ContextActions.vue'
const visibilityObserver = new VisibilityObserver()
export default {
components: { ListLoader, NoContentMessage, ListInfo, ContextActions },
components: { ListLoader, NoContentMessage, ListInfo, Pagination, ContextActions },
mixins: [FileActions, MixinResources, MixinMountSideBar, MixinFilesListFilter],
Expand Down
12 changes: 3 additions & 9 deletions packages/web-app-files/src/views/Trashbin.vue
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,7 @@
<context-actions v-if="isResourceInSelection(resource)" :items="selected" />
</template>
<template #footer>
<oc-pagination
v-if="paginationPages > 1"
:pages="paginationPages"
:current-page="paginationPage"
:max-displayed="3"
:current-route="$route"
class="files-pagination uk-flex uk-flex-center oc-my-s"
/>
<pagination :pages="paginationPages" :current-page="paginationPage" />
<list-info
v-if="paginatedResources.length > 0"
class="uk-width-1-1 oc-my-s"
Expand Down Expand Up @@ -68,11 +61,12 @@ import { useTask } from 'vue-concurrency'
import ListLoader from '../components/FilesList/ListLoader.vue'
import NoContentMessage from '../components/FilesList/NoContentMessage.vue'
import ListInfo from '../components/FilesList/ListInfo.vue'
import Pagination from '../components/FilesList/Pagination.vue'
import ContextActions from '../components/FilesList/ContextActions.vue'
import { DavProperties } from 'web-pkg/src/constants'
export default {
components: { ListLoader, NoContentMessage, ListInfo, ContextActions },
components: { ListLoader, NoContentMessage, ListInfo, Pagination, ContextActions },
mixins: [MixinResources, MixinMountSideBar, MixinFilesListFilter],
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
import _ from 'lodash'
import DesignSystem from 'owncloud-design-system'
import Pagination from '@files/src/components/FilesList/Pagination.vue'
import {
createLocalVue as OGCreateLocalVue,
mount,
RouterLinkStub,
shallowMount
} from '@vue/test-utils'

const filesPersonalRoute = { name: 'files-personal', path: '/files/home' }

const selectors = {
filesPagination: '.files-pagination'
}

const createLocalVue = () => {
const localVue = OGCreateLocalVue()
localVue.use(DesignSystem)
localVue.prototype.$gettextInterpolate = jest.fn()

return localVue
}

const getWrapper = (propsData = {}) => {
return shallowMount(Pagination, {
localVue: createLocalVue(),
stubs: {
'oc-pagination': true
},
propsData: _.merge({ currentPage: 1, pages: 10 }, propsData),
mocks: {
$route: filesPersonalRoute
}
})
}

const getMountedWrapper = (propsData = {}) => {
return mount(Pagination, {
localVue: createLocalVue(),
propsData: _.merge({ currentPage: 1, pages: 10 }, propsData),
stubs: {
'oc-pagination': false,
RouterLink: RouterLinkStub
},
mocks: {
$route: filesPersonalRoute
}
})
}

describe('Pagination', () => {
describe('when amount of pages is', () => {
describe('less than or equals one', () => {
it.each([-1, 0, 1])('should not show wrapper', (pages) => {
const wrapper = getWrapper({ currentPage: 0, pages })

expect(wrapper.find(selectors.filesPagination).exists()).toBeFalsy()
})
})

describe('greater than one', () => {
const wrapper = getWrapper({ currentPage: 1, pages: 2 })

it('should show wrapper', () => {
const paginationEl = wrapper.find('.files-pagination')

expect(paginationEl.exists()).toBeTruthy()
expect(paginationEl.attributes().pages).toBe('2')
})

it('should set provided current page', () => {
const paginationEl = wrapper.find(selectors.filesPagination)
console.log(wrapper.html())
expect(paginationEl.attributes().currentpage).toBe('1')
})
})
})

describe('current route', () => {
it('should use provided route to render pages', () => {
const wrapper = getMountedWrapper()
const currentRoute = wrapper.vm.$route
const links = wrapper.findAllComponents(RouterLinkStub)

// three links (route to prev, next and last page)
expect(links.length).toBe(3)
expect(links.at(0).props().to.name).toBe(currentRoute.name)
expect(links.at(1).props().to.name).toBe(currentRoute.name)
expect(links.at(2).props().to.name).toBe(currentRoute.name)
})
})
})

0 comments on commit aac56f1

Please sign in to comment.