Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-01-31 09:09:30 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-01-31 09:09:30 +0300
commite6c495fe40320eb01bf8c4fb132c9f22449ae9d2 (patch)
treeadd32dcc4b186baf21b77431ce5718e0b7cdbf36 /spec/frontend/vue_shared/components/incubation
parent25805c16335ed6466f0e475417e3005cd09848c2 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend/vue_shared/components/incubation')
-rw-r--r--spec/frontend/vue_shared/components/incubation/pagination_spec.js76
1 files changed, 76 insertions, 0 deletions
diff --git a/spec/frontend/vue_shared/components/incubation/pagination_spec.js b/spec/frontend/vue_shared/components/incubation/pagination_spec.js
new file mode 100644
index 00000000000..a621e60c627
--- /dev/null
+++ b/spec/frontend/vue_shared/components/incubation/pagination_spec.js
@@ -0,0 +1,76 @@
+import { GlKeysetPagination } from '@gitlab/ui';
+import { mountExtended } from 'helpers/vue_test_utils_helper';
+import Pagination from '~/vue_shared/components/incubation/pagination.vue';
+
+describe('~/vue_shared/incubation/components/pagination.vue', () => {
+ let wrapper;
+
+ const pageInfo = {
+ startCursor: 'eyJpZCI6IjE2In0',
+ endCursor: 'eyJpZCI6IjIifQ',
+ hasNextPage: true,
+ hasPreviousPage: true,
+ };
+
+ const findPagination = () => wrapper.findComponent(GlKeysetPagination);
+
+ const createWrapper = (pageInfoProp) => {
+ wrapper = mountExtended(Pagination, {
+ propsData: pageInfoProp,
+ });
+ };
+
+ describe('when neither next nor previous page exists', () => {
+ beforeEach(() => {
+ const emptyPageInfo = { ...pageInfo, hasPreviousPage: false, hasNextPage: false };
+
+ createWrapper(emptyPageInfo);
+ });
+
+ it('should not render pagination component', () => {
+ expect(wrapper.html()).toBe('');
+ });
+ });
+
+ describe('when Pagination is rendered for environment details page', () => {
+ beforeEach(() => {
+ createWrapper(pageInfo);
+ });
+
+ it('should pass correct props to keyset pagination', () => {
+ expect(findPagination().exists()).toBe(true);
+ expect(findPagination().props()).toEqual(expect.objectContaining(pageInfo));
+ });
+
+ describe.each([
+ {
+ testPageInfo: pageInfo,
+ expectedAfter: `cursor=${pageInfo.endCursor}`,
+ expectedBefore: `cursor=${pageInfo.startCursor}`,
+ },
+ {
+ testPageInfo: { ...pageInfo, hasNextPage: true, hasPreviousPage: false },
+ expectedAfter: `cursor=${pageInfo.endCursor}`,
+ expectedBefore: '',
+ },
+ {
+ testPageInfo: { ...pageInfo, hasNextPage: false, hasPreviousPage: true },
+ expectedAfter: '',
+ expectedBefore: `cursor=${pageInfo.startCursor}`,
+ },
+ ])(
+ 'button links generation for $testPageInfo',
+ ({ testPageInfo, expectedAfter, expectedBefore }) => {
+ beforeEach(() => {
+ createWrapper(testPageInfo);
+ });
+
+ it(`should have button links defined as ${expectedAfter || 'empty'} and
+ ${expectedBefore || 'empty'}`, () => {
+ expect(findPagination().props().prevButtonLink).toContain(expectedBefore);
+ expect(findPagination().props().nextButtonLink).toContain(expectedAfter);
+ });
+ },
+ );
+ });
+});