Browse Source

test: rebase to latest develop

Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com>
pull/3818/head
Raju Udava 2 years ago
parent
commit
89fa07d089
  1. 11
      packages/nc-gui/components/smartsheet-toolbar/ColumnFilter.vue
  2. 1
      packages/nc-gui/components/webhook/Editor.vue
  3. 16
      packages/nc-gui/composables/useGlobal/index.ts
  4. 5
      packages/nc-gui/composables/useGlobal/state.ts
  5. 2
      packages/nc-gui/composables/useGlobal/types.ts
  6. 4
      packages/nc-gui/composables/useViewFilters.ts
  7. 36
      scripts/cypress/integration/common/1b_table_column_operations.js
  8. 30
      scripts/cypress/integration/common/3b_formula_column.js
  9. 33
      scripts/cypress/integration/common/3c_lookup_column.js
  10. 80
      scripts/cypress/integration/common/3d_rollup_column.js
  11. 51
      scripts/cypress/integration/common/3e_duration_column.js
  12. 20
      scripts/cypress/integration/common/3f_link_to_another_record.js
  13. 40
      scripts/cypress/support/commands.js
  14. 1146
      scripts/cypress/support/page_objects/mainPage.js

11
packages/nc-gui/components/smartsheet-toolbar/ColumnFilter.vue

@ -23,9 +23,10 @@ interface Props {
hookId?: string
showLoading?: boolean
modelValue?: Filter[]
webHook?: boolean
}
const { nested = false, parentId, autoSave = true, hookId = null, modelValue, showLoading = true } = defineProps<Props>()
const { nested = false, parentId, autoSave = true, hookId = null, modelValue, showLoading = true, webHook } = defineProps<Props>()
const emit = defineEmits(['update:filtersLength'])
@ -101,13 +102,13 @@ const types = computed(() => {
watch(
() => activeView.value?.id,
(n, o) => {
if (n !== o) loadFilters(hookId as string)
if (n !== o && (hookId || !webHook)) loadFilters(hookId as string)
},
{ immediate: true },
)
watch(
() => filters.value.length,
() => filters.value.length ,
(length) => {
emit('update:filtersLength', length ?? 0)
},
@ -137,7 +138,7 @@ defineExpose({
:class="{ 'shadow min-w-[430px] max-w-[630px] max-h-[max(80vh,500px)] overflow-auto': !nested, 'border-1 w-full': nested }"
>
<div v-if="filters && filters.length" class="nc-filter-grid mb-2" @click.stop>
<template v-for="(filter, i) in filters" :key="filter.id || i">
<template v-for="(filter, i) in filters" :key="i">
<template v-if="filter.status !== 'delete'">
<template v-if="filter.is_group">
<MdiCloseBox
@ -280,7 +281,7 @@ defineExpose({
{{ $t('activity.addFilter') }}
</div>
</a-button>
<a-button class="text-capitalize !text-gray-500" @click.stop="addFilterGroup">
<a-button class="text-capitalize !text-gray-500" v-if="!webHook" @click.stop="addFilterGroup">
<div class="flex items-center gap-1">
<!-- <v-icon small color="grey"> mdi-plus </v-icon> -->
<!-- Add Filter Group -->

1
packages/nc-gui/components/webhook/Editor.vue

@ -619,6 +619,7 @@ onMounted(async () => {
:auto-save="false"
:show-loading="false"
:hook-id="hook.id"
web-hook
/>
</a-card>
</a-col>

16
packages/nc-gui/composables/useGlobal/index.ts

@ -62,6 +62,22 @@ export const useGlobal = (): UseGlobalReturn => {
{ immediate: true },
)
watch(
state.jwtPayload,
(nextPayload) => {
if (nextPayload) {
state.user.value = {
id: nextPayload.id,
email: nextPayload.email,
firstname: nextPayload.firstname,
lastname: nextPayload.lastname,
roles: nextPayload.roles,
}
}
},
{ immediate: true },
)
const globalState = { ...state, ...getters, ...actions } as UseGlobalReturn
/** provide a fresh state instance into nuxt app */

5
packages/nc-gui/composables/useGlobal/state.ts

@ -49,7 +49,6 @@ export function useGlobalState(storageKey = 'nocodb-gui-v2'): State {
/** State */
const initialState: StoredState = {
token: null,
user: null,
lang: preferredLanguage,
darkMode: prefersDarkMode,
feedbackForm: {
@ -102,6 +101,9 @@ export function useGlobalState(storageKey = 'nocodb-gui-v2'): State {
/** global error */
const error = ref()
/** our local user object */
const user = ref<User | null>(null)
return {
...toRefs(storage.value),
storage,
@ -110,6 +112,7 @@ export function useGlobalState(storageKey = 'nocodb-gui-v2'): State {
timestamp,
runningRequests,
error,
user,
appInfo,
}
}

2
packages/nc-gui/composables/useGlobal/types.ts

@ -29,7 +29,6 @@ export interface AppInfo {
export interface StoredState {
token: string | null
user: User | null
lang: keyof typeof Language
darkMode: boolean
feedbackForm: FeedbackForm
@ -43,6 +42,7 @@ export interface StoredState {
export type State = ToRefs<Omit<StoredState, 'token'>> & {
storage: Ref<StoredState>
user: Ref<User | null>
token: WritableComputedRef<StoredState['token']>
jwtPayload: ComputedRef<(JwtPayload & User) | null>
timestamp: Ref<number>

4
packages/nc-gui/composables/useViewFilters.ts

@ -183,12 +183,12 @@ export function useViewFilters(
}
const addFilter = () => {
filters.value.push(placeholderFilter)
filters.value.push({ ...placeholderFilter })
$e('a:filter:add', { length: filters.value.length })
}
const addFilterGroup = async () => {
const child = placeholderFilter
const child = { ...placeholderFilter }
const placeHolderGroupFilter: Filter = {
is_group: true,
status: 'create',

36
scripts/cypress/integration/common/1b_table_column_operations.js

@ -65,13 +65,26 @@ export const genTest = (apiType, dbType) => {
.trigger("mouseover", { force: true })
.click({ force: true });
cy.get(".nc-column-edit").click();
cy.get(".nc-column-edit").should("not.be.visible");
// cy.get(".nc-column-edit").click();
// cy.get(".nc-column-edit").should("not.be.visible");
cy.getActiveMenu(".nc-dropdown-column-operations")
.find(".nc-column-edit")
.click();
// change column type and verify
cy.get(".nc-column-type-input").last().click();
cy.getActiveSelection('.nc-dropdown-column-type').find('.ant-select-item-option').contains("LongText").click();
cy.get(".ant-btn-primary:visible").contains("Save").click();
// cy.get(".nc-column-type-input").last().click();
cy.getActiveMenu('.nc-dropdown-edit-column')
.find(".nc-column-type-input")
.last()
.click();
cy.getActiveSelection('.nc-dropdown-column-type')
.find('.ant-select-item-option')
.contains("LongText")
.click();
cy.getActiveMenu('.nc-dropdown-edit-column')
.find(".ant-btn-primary:visible")
.contains("Save")
.click();
cy.toastWait("Column updated");
}
@ -83,15 +96,22 @@ export const genTest = (apiType, dbType) => {
.trigger("mouseover", { force: true })
.click({ force: true });
cy.get(".nc-column-edit").click();
cy.get(".nc-column-edit").should("not.be.visible");
// cy.get(".nc-column-edit").click();
// cy.get(".nc-column-edit").should("not.be.visible");
cy.getActiveMenu(".nc-dropdown-column-operations")
.find(".nc-column-edit")
.click();
// rename column and verify
cy.getActiveMenu(".nc-dropdown-edit-column").find('input.nc-column-name-input', { timeout: 3000 })
.should('exist')
.clear()
.type(updatedColName);
cy.get(".ant-btn-primary:visible").contains("Save").click();
// cy.get(".ant-btn-primary:visible").contains("Save").click();
cy.getActiveMenu('.nc-dropdown-edit-column')
.find(".ant-btn-primary:visible")
.contains("Save")
.click();
cy.toastWait("Column updated");

30
scripts/cypress/integration/common/3b_formula_column.js

@ -57,10 +57,25 @@ export const genTest = (apiType, dbType) => {
.should('exist')
.clear()
.type(columnName);
cy.get(".nc-column-type-input").last().click().type("Formula");
cy.getActiveSelection('.nc-dropdown-column-type').find('.ant-select-item-option').contains("Formula").click();
cy.get('textarea.nc-formula-input').click().type(formula, { parseSpecialCharSequences: false });
cy.get(".ant-btn-primary").contains("Save").should('exist').click();
// cy.get(".nc-column-type-input").last().click().type("Formula");
cy.getActiveMenu('.nc-dropdown-grid-add-column')
.find(".nc-column-type-input")
.last()
.click()
.type("Formula");
cy.getActiveSelection('.nc-dropdown-column-type')
.find('.ant-select-item-option')
.contains("Formula")
.click();
cy.getActiveMenu('.nc-dropdown-grid-add-column')
.find('textarea.nc-formula-input')
.click()
.type(formula, { parseSpecialCharSequences: false });
// cy.get(".ant-btn-primary").contains("Save").should('exist').click();
cy.getActiveMenu('.nc-dropdown-grid-add-column')
.find(".ant-btn-primary:visible")
.contains("Save")
.click();
// cy.toastWait(`Column created`);
cy.closeTableTab("City");
@ -82,8 +97,11 @@ export const genTest = (apiType, dbType) => {
.trigger("mouseover", { force: true })
.click({ force: true });
cy.get(".nc-column-edit").click();
cy.get(".nc-column-edit").should("not.be.visible");
// cy.get(".nc-column-edit").click();
// cy.get(".nc-column-edit").should("not.be.visible");
cy.getActiveMenu(".nc-dropdown-column-operations")
.find(".nc-column-edit")
.click();
cy.getActiveMenu(".nc-dropdown-edit-column").find('input.nc-column-name-input', { timeout: 3000 })
.should('exist')

33
scripts/cypress/integration/common/3c_lookup_column.js

@ -48,21 +48,40 @@ export const genTest = (apiType, dbType) => {
force: true,
});
cy.getActiveMenu(".nc-dropdown-grid-add-column").find('input.nc-column-name-input', { timeout: 3000 })
cy.getActiveMenu(".nc-dropdown-grid-add-column")
.find('input.nc-column-name-input')
.should('exist')
.clear()
.type(childCol);
cy.get(".nc-column-type-input").last().click().type("Lookup");
cy.getActiveSelection('.nc-dropdown-column-type').find('.ant-select-item-option').contains("Lookup").click();
// cy.get(".nc-column-type-input").last().click().type("Lookup");
cy.getActiveMenu('.nc-dropdown-grid-add-column')
.find(".nc-column-type-input")
.last()
.click()
.type("Lookup");
cy.getActiveSelection('.nc-dropdown-column-type')
.find('.ant-select-item-option')
.contains("Lookup")
.click();
// Configure Child table & column names
fetchParentFromLabel("Child table");
cy.getActiveSelection('.nc-dropdown-relation-table').find('.ant-select-item-option').contains(childTable).click();
cy.getActiveSelection('.nc-dropdown-relation-table')
.find('.ant-select-item-option')
.contains(childTable)
.click();
fetchParentFromLabel("Child column");
cy.getActiveSelection('.nc-dropdown-relation-column').find('.ant-select-item-option').contains(childCol).click();
cy.get(".ant-btn-primary").contains("Save").should('exist').click();
cy.getActiveSelection('.nc-dropdown-relation-column')
.find('.ant-select-item-option')
.contains(childCol)
.click();
// cy.get(".ant-btn-primary").contains("Save").should('exist').click();
cy.getActiveMenu('.nc-dropdown-grid-add-column')
.find(".ant-btn-primary:visible")
.contains("Save")
.click();
cy.toastWait(`Column created`);
cy.get(`th[data-title="${childCol}"]`).should("exist");

80
scripts/cypress/integration/common/3d_rollup_column.js

@ -54,24 +54,46 @@ export const genTest = (apiType, dbType) => {
force: true,
});
cy.getActiveMenu(".nc-dropdown-grid-add-column").find('input.nc-column-name-input', { timeout: 3000 })
cy.getActiveMenu(".nc-dropdown-grid-add-column")
.find('input.nc-column-name-input')
.should('exist')
.clear()
.type(columnName);
cy.get(".nc-column-type-input").last().click().type("RollUp");
cy.getActiveSelection('.nc-dropdown-column-type').find('.ant-select-item-option').contains("Rollup").click();
// cy.get(".nc-column-type-input").last().click().type("RollUp");
cy.getActiveMenu('.nc-dropdown-grid-add-column')
.find(".nc-column-type-input")
.last()
.click()
.type("RollUp")
cy.getActiveSelection('.nc-dropdown-column-type')
.find('.ant-select-item-option')
.contains("Rollup")
.click();
// Configure Child table & column names
fetchParentFromLabel("Child table");
cy.getActiveSelection('.nc-dropdown-relation-table').find('.ant-select-item-option').contains(childTable).click();
cy.getActiveSelection('.nc-dropdown-relation-table')
.find('.ant-select-item-option')
.contains(childTable)
.click();
fetchParentFromLabel("Child column");
cy.getActiveSelection('.nc-dropdown-relation-column').find('.ant-select-item-option').contains(childCol).click();
cy.getActiveSelection('.nc-dropdown-relation-column')
.find('.ant-select-item-option')
.contains(childCol)
.click();
fetchParentFromLabel("Aggregate function");
cy.getActiveSelection('.nc-dropdown-rollup-function').find('.ant-select-item-option').contains(aggregateFunc).click();
cy.get(".ant-btn-primary").contains("Save").should('exist').click();
cy.getActiveSelection('.nc-dropdown-rollup-function')
.find('.ant-select-item-option')
.contains(aggregateFunc)
.click();
// cy.get(".ant-btn-primary").contains("Save").should('exist').click();
cy.getActiveMenu('.nc-dropdown-grid-add-column')
.find(".ant-btn-primary:visible")
.contains("Save")
.click();
cy.toastWait(`Column created`);
cy.get(`th[data-title="${columnName}"]`).should("exist");
@ -85,26 +107,26 @@ export const genTest = (apiType, dbType) => {
// routine to edit column
//
const editColumnByName = (oldName, newName) => {
// verify if column exists before delete
cy.get(`th:contains(${oldName})`).should("exist");
// delete opiton visible on mouse-over
cy.get(`th:contains(${oldName}) .mdi-menu-down`)
.trigger("mouseover")
.click();
// edit/ save on pop-up
cy.get(".nc-column-edit").click();
cy.get(".nc-column-name-input input").clear().type(newName);
cy.get(".nc-col-create-or-edit-card").contains("Save").click();
cy.toastWait("Successfully updated alias");
// validate if deleted (column shouldnt exist)
cy.get(`th:contains(${oldName})`).should("not.exist");
cy.get(`th:contains(${newName})`).should("exist");
};
// const editColumnByName = (oldName, newName) => {
// // verify if column exists before delete
// cy.get(`th:contains(${oldName})`).should("exist");
//
// // delete opiton visible on mouse-over
// cy.get(`th:contains(${oldName}) .mdi-menu-down`)
// .trigger("mouseover")
// .click();
//
// // edit/ save on pop-up
// cy.get(".nc-column-edit").click();
// cy.get(".nc-column-name-input input").clear().type(newName);
// cy.get(".nc-col-create-or-edit-card").contains("Save").click();
//
// cy.toastWait("Successfully updated alias");
//
// // validate if deleted (column shouldnt exist)
// cy.get(`th:contains(${oldName})`).should("not.exist");
// cy.get(`th:contains(${newName})`).should("exist");
// };
///////////////////////////////////////////////////
// Test case
@ -134,7 +156,7 @@ export const genTest = (apiType, dbType) => {
.contains("2")
.should("exist");
editColumnByName("RollUpCol_1", "RollUpCol_New");
// editColumnByName("RollUpCol_1", "RollUpCol_New");
deleteColumnByName("RollUpCol_New");
});
});

51
scripts/cypress/integration/common/3e_duration_column.js

@ -44,18 +44,34 @@ export const genTest = (apiType, dbType) => {
force: true,
});
cy.getActiveMenu(".nc-dropdown-grid-add-column").find('input.nc-column-name-input', { timeout: 3000 })
cy.getActiveMenu(".nc-dropdown-grid-add-column")
.find('input.nc-column-name-input', { timeout: 3000 })
.should('exist')
.clear()
.type(columnName);
cy.get(".nc-column-type-input").last().click().type("Duration");
cy.getActiveSelection('.nc-dropdown-column-type').find('.ant-select-item-option').contains("Duration").click();
// cy.get(".nc-column-type-input").last().click().type("Duration");
cy.getActiveMenu('.nc-dropdown-grid-add-column')
.find(".nc-column-type-input")
.last()
.click()
.type("Duration")
cy.getActiveSelection('.nc-dropdown-column-type')
.find('.ant-select-item-option')
.contains("Duration")
.click();
// Configure Duration format
fetchParentFromLabel("Duration Format");
cy.getActiveSelection('.nc-dropdown-duration-option').find('.ant-select-item-option').contains(durationFormat).click();
cy.get(".ant-btn-primary").contains("Save").should('exist').click();
cy.getActiveSelection('.nc-dropdown-duration-option')
.find('.ant-select-item-option')
.contains(durationFormat)
.click();
// cy.get(".ant-btn-primary").contains("Save").should('exist').click();
cy.getActiveMenu('.nc-dropdown-grid-add-column')
.find(".ant-btn-primary:visible")
.contains("Save")
.click();
cy.toastWait(`Column created`);
cy.get(`th[data-title="${columnName}"]`).should("exist");
@ -75,19 +91,30 @@ export const genTest = (apiType, dbType) => {
.trigger("mouseover", { force: true })
.click({ force: true });
cy.get(".nc-column-edit").click();
cy.get(".nc-column-edit").should("not.be.visible");
// cy.get(".nc-column-edit").click();
// cy.get(".nc-column-edit").should("not.be.visible");
cy.getActiveMenu(".nc-dropdown-column-operations")
.find(".nc-column-edit")
.click();
// rename column and verify
cy.getActiveMenu(".nc-dropdown-column-operations").find('input.nc-column-name-input', { timeout: 3000 })
cy.getActiveMenu(".nc-dropdown-edit-column")
.find('input.nc-column-name-input', { timeout: 3000 })
.should('exist')
.clear()
.type(newName);
// Configure Duration format
fetchParentFromLabel("Duration Format");
cy.getActiveSelection('.nc-dropdown-duration-option').find('.ant-select-item-option').contains(newDurationFormat).click();
cy.get(".ant-btn-primary:visible").contains("Save").click();
cy.getActiveSelection('.nc-dropdown-duration-option')
.find('.ant-select-item-option')
.contains(newDurationFormat)
.click();
// cy.get(".ant-btn-primary:visible").contains("Save").click();
cy.getActiveMenu('.nc-dropdown-edit-column')
.find(".ant-btn-primary:visible")
.contains("Save")
.click();
cy.toastWait("Column updated");

20
scripts/cypress/integration/common/3f_link_to_another_record.js

@ -37,12 +37,18 @@ export const genTest = (apiType, dbType) => {
.type(columnName);
// Column type
cy.get(".nc-column-type-input").last()
// cy.get(".nc-column-type-input").last()
// .click()
// .type("Link");
cy.getActiveMenu('.nc-dropdown-grid-add-column')
.find(".nc-column-type-input")
.last()
.click()
.type("Link");
.type("Link")
cy.getActiveSelection('.nc-dropdown-column-type')
.find('.ant-select-item-option')
.contains("LinkToAnotherRecord").click();
.contains("LinkToAnotherRecord")
.click();
// relation type (hm/ mm)
cy.get('.nc-ltar-relation-type')
@ -62,9 +68,13 @@ export const genTest = (apiType, dbType) => {
.click();
// Save
cy.get(".ant-btn-primary")
// cy.get(".ant-btn-primary")
// .contains("Save")
// .should('exist')
// .click();
cy.getActiveMenu('.nc-dropdown-grid-add-column')
.find(".ant-btn-primary:visible")
.contains("Save")
.should('exist')
.click();
// Toast

40
scripts/cypress/support/commands.js

@ -352,26 +352,26 @@ Cypress.Commands.add('renameTable', (oldName, newName) => {
});
Cypress.Commands.add('createColumn', (table, columnName) => {
cy.get('.nc-project-tree')
.find('.v-list-item__title:contains(Tables)')
.should('exist')
.first()
.click();
cy.get('.nc-project-tree')
.contains(table)
.should('exist')
.first()
.click({ force: true });
cy.get(`.project-tab:contains(${table}):visible`).should('exist');
cy.get('.v-window-item--active .nc-grid tr > th:last button').click({
force: true,
});
cy.get('.nc-column-name-input input').clear().type(columnName);
cy.getActiveMenu('Menu_CreateColumn');
cy.get('.nc-col-create-or-edit-card').contains('Save').click();
cy.get('th:contains(new_column)').should('exist');
});
// Cypress.Commands.add('createColumn', (table, columnName) => {
// cy.get('.nc-project-tree')
// .find('.v-list-item__title:contains(Tables)')
// .should('exist')
// .first()
// .click();
// cy.get('.nc-project-tree')
// .contains(table)
// .should('exist')
// .first()
// .click({ force: true });
// cy.get(`.project-tab:contains(${table}):visible`).should('exist');
// cy.get('.v-window-item--active .nc-grid tr > th:last button').click({
// force: true,
// });
// cy.get('.nc-column-name-input input').clear().type(columnName);
// cy.getActiveMenu('Menu_CreateColumn');
// cy.get('.nc-col-create-or-edit-card').contains('Save').click();
// cy.get('th:contains(new_column)').should('exist');
// });
Cypress.Commands.add('toastWait', (msg) => {
cy.get('.ant-message-notice-content:visible', { timeout: 60000 }).contains(msg).should('exist');

1146
scripts/cypress/support/page_objects/mainPage.js

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save