소스 검색

fix: Notification test in Postgres (#7044)

version-14
Faris Ansari 6 년 전
committed by Aditya Hase
부모
커밋
b61a37a233
12개의 변경된 파일63개의 추가작업 그리고 38개의 파일을 삭제
  1. +1
    -1
      .travis.yml
  2. +7
    -3
      .travis/install.sh
  3. +2
    -2
      .travis/run-tests.sh
  4. +1
    -0
      cypress/integration/awesome_bar.js
  5. +19
    -17
      cypress/integration/table_multiselect.js
  6. +9
    -2
      cypress/support/commands.js
  7. +3
    -3
      frappe/automation/doctype/assignment_rule/assignment_rule.json
  8. +1
    -0
      frappe/email/doctype/notification/test_notification.py
  9. +1
    -0
      frappe/recorder.py
  10. +6
    -0
      frappe/tests/test_website.py
  11. +13
    -10
      frappe/utils/install.py
  12. BIN
      test_sites/test_site_ui/test_site_ui-database.sql.gz

+ 1
- 1
.travis.yml 파일 보기

@@ -25,7 +25,7 @@ matrix:
exclude:
- python: 2.7
env: DB=postgres
- python: 3.6
- python: 2.7
env: TEST_TYPE=ui

install:


+ 7
- 3
.travis/install.sh 파일 보기

@@ -18,6 +18,10 @@ sudo pip install -e ~/bench

rm $TRAVIS_BUILD_DIR/.git/shallow
cd ~/ && bench init frappe-bench --python $(which python) --frappe-path $TRAVIS_BUILD_DIR
cp -r $TRAVIS_BUILD_DIR/test_sites/test_site ~/frappe-bench/sites/
cp -r $TRAVIS_BUILD_DIR/test_sites/test_site_postgres ~/frappe-bench/sites/
cp -r $TRAVIS_BUILD_DIR/test_sites/test_site_ui ~/frappe-bench/sites/
if [[ $DB == 'mariadb' ]]; then
cp -r $TRAVIS_BUILD_DIR/test_sites/test_site ~/frappe-bench/sites/
elif [[ $TEST_TYPE == 'ui' ]]; then
cp -r $TRAVIS_BUILD_DIR/test_sites/test_site_ui ~/frappe-bench/sites/
elif [[ $DB == 'postgres' ]]; then
cp -r $TRAVIS_BUILD_DIR/test_sites/test_site_postgres ~/frappe-bench/sites/
fi

+ 2
- 2
.travis/run-tests.sh 파일 보기

@@ -16,8 +16,8 @@ if [[ $DB == 'mariadb' ]]; then

elif [[ $TEST_TYPE == 'ui' ]]; then
setup_mariadb_env 'test_site_ui'
bench --site test_site_ui --force restore ./apps/frappe/test_sites/test_site_ui/test_site_ui-database.sql.gz
bench --site test_site_ui migrate
bench --site test_site_ui reinstall --yes
bench --site test_site_ui execute frappe.utils.install.complete_setup_wizard
bench --site test_site_ui scheduler disable
cd apps/frappe && yarn && yarn cypress:run



+ 1
- 0
cypress/integration/awesome_bar.js 파일 보기

@@ -1,5 +1,6 @@
context('Awesome Bar', () => {
before(() => {
cy.visit('/login');
cy.login('Administrator', 'qwe');
cy.visit('/desk');
});


+ 19
- 17
cypress/integration/table_multiselect.js 파일 보기

@@ -3,47 +3,49 @@ context('Table MultiSelect', () => {
cy.login('Administrator', 'qwe');
});

let todo_description = 'table multiselect' + Math.random().toString().slice(2, 8);
let name = 'table multiselect' + Math.random().toString().slice(2, 8);

it('select value from multiselect dropdown', () => {
cy.visit('/desk#Form/ToDo/New ToDo 1');
cy.fill_field('description', todo_description, 'Text Editor').blur();
cy.get('input[data-fieldname="assign_to"]').focus().as('input');
cy.get('input[data-fieldname="assign_to"] + ul').should('be.visible');
cy.get('@input').type('faris{enter}', { delay: 100 });
cy.get('.frappe-control[data-fieldname="assign_to"] .form-control .tb-selected-value')
cy.new_form('Assignment Rule');
cy.fill_field('__newname', name);
cy.fill_field('document_type', 'ToDo');
cy.fill_field('assign_condition', 'status=="Open"');
cy.get('input[data-fieldname="users"]').focus().as('input');
cy.get('input[data-fieldname="users"] + ul').should('be.visible');
cy.get('@input').type('test{enter}', { delay: 100 });
cy.get('.frappe-control[data-fieldname="users"] .form-control .tb-selected-value')
.first().as('selected-value');
cy.get('@selected-value').should('contain', 'faris@erpnext.com');
cy.get('@selected-value').should('contain', 'test@erpnext.com');

cy.server();
cy.route('POST', '/api/method/frappe.desk.form.save.savedocs').as('save_form');
// trigger save
cy.get('.primary-action').click();
cy.wait('@save_form').its('status').should('eq', 200);
cy.get('@selected-value').should('contain', 'faris@erpnext.com');
cy.get('@selected-value').should('contain', 'test@erpnext.com');
});

it('delete value using backspace', () => {
cy.visit('/desk#List/ToDo/List');
cy.go_to_list('Assignment Rule');
cy.get(`.list-subject:contains("table multiselect")`).last().find('a').click();
cy.get('input[data-fieldname="assign_to"]').focus().type('{backspace}');
cy.get('.frappe-control[data-fieldname="assign_to"] .form-control .tb-selected-value')
cy.get('input[data-fieldname="users"]').focus().type('{backspace}');
cy.get('.frappe-control[data-fieldname="users"] .form-control .tb-selected-value')
.should('not.exist');
});

it('delete value using x', () => {
cy.visit('/desk#List/ToDo/List');
cy.go_to_list('Assignment Rule');
cy.get(`.list-subject:contains("table multiselect")`).last().find('a').click();
cy.get('.frappe-control[data-fieldname="assign_to"] .form-control .tb-selected-value').as('existing_value');
cy.get('.frappe-control[data-fieldname="users"] .form-control .tb-selected-value').as('existing_value');
cy.get('@existing_value').find('.btn-remove').click();
cy.get('@existing_value').should('not.exist');
});

it('navigate to selected value', () => {
cy.visit('/desk#List/ToDo/List');
cy.go_to_list('Assignment Rule');
cy.get(`.list-subject:contains("table multiselect")`).last().find('a').click();
cy.get('.frappe-control[data-fieldname="assign_to"] .form-control .tb-selected-value').as('existing_value');
cy.get('.frappe-control[data-fieldname="users"] .form-control .tb-selected-value').as('existing_value');
cy.get('@existing_value').find('.btn-link-to-form').click();
cy.location('hash').should('contain', 'Form/User/faris@erpnext.com');
cy.location('hash').should('contain', 'Form/User/test@erpnext.com');
});
});

+ 9
- 2
cypress/support/commands.js 파일 보기

@@ -25,10 +25,9 @@
// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... });
Cypress.Commands.add('login', (email, password) => {
cy.request({
url: '/',
url: '/api/method/login',
method: 'POST',
body: {
cmd: 'login',
usr: email,
pwd: password
}
@@ -54,3 +53,11 @@ Cypress.Commands.add('fill_field', (fieldname, value, fieldtype='Data') => {
Cypress.Commands.add('awesomebar', (text) => {
cy.get('#navbar-search').type(`${text}{downarrow}{enter}`, { delay: 100 });
});

Cypress.Commands.add('new_form', (doctype) => {
cy.visit(`/desk#Form/${doctype}/New ${doctype} 1`);
});

Cypress.Commands.add('go_to_list', (doctype) => {
cy.visit(`/desk#List/${doctype}/List`);
});

+ 3
- 3
frappe/automation/doctype/assignment_rule/assignment_rule.json 파일 보기

@@ -380,7 +380,7 @@
"collapsible": 0,
"columns": 0,
"fieldname": "users",
"fieldtype": "Table",
"fieldtype": "Table MultiSelect",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
@@ -449,7 +449,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2019-02-28 17:12:44.413782",
"modified": "2019-03-08 15:13:01.379471",
"modified_by": "Administrator",
"module": "Automation",
"name": "Assignment Rule",
@@ -476,7 +476,7 @@
"write": 1
}
],
"quick_entry": 1,
"quick_entry": 0,
"read_only": 0,
"read_only_onload": 0,
"show_name_in_global_search": 0,


+ 1
- 0
frappe/email/doctype/notification/test_notification.py 파일 보기

@@ -108,6 +108,7 @@ class TestNotification(unittest.TestCase):
{ "email_by_document_field": "owner" }
]
}).insert()
frappe.db.commit()

event = frappe.new_doc("Event")
event.subject = "test-2",


+ 1
- 0
frappe/recorder.py 파일 보기

@@ -12,6 +12,7 @@ import traceback
import frappe
import sqlparse

from frappe import _

RECORDER_INTERCEPT_FLAG = "recorder-intercept"
RECORDER_REQUEST_SPARSE_HASH = "recorder-requests-sparse"


+ 6
- 0
frappe/tests/test_website.py 파일 보기

@@ -10,6 +10,12 @@ def set_request(**kwargs):
builder = EnvironBuilder(**kwargs)
frappe.local.request = Request(builder.get_environ())

def get_html_for_route(route):
set_request(method='GET', path=route)
response = render.render()
html = frappe.safe_decode(response.get_data())
return html

class TestWebsite(unittest.TestCase):

def test_page_load(self):


+ 13
- 10
frappe/utils/install.py 파일 보기

@@ -104,21 +104,24 @@ def before_tests():
frappe.clear_cache()

# complete setup if missing
from frappe.desk.page.setup_wizard.setup_wizard import setup_complete
if not int(frappe.db.get_single_value('System Settings', 'setup_complete') or 0):
setup_complete({
"language" :"English",
"email" :"test@erpnext.com",
"full_name" :"Test User",
"password" :"test",
"country" :"United States",
"timezone" :"America/New_York",
"currency" :"USD"
})
complete_setup_wizard()

frappe.db.commit()
frappe.clear_cache()

def complete_setup_wizard():
from frappe.desk.page.setup_wizard.setup_wizard import setup_complete
setup_complete({
"language" :"English",
"email" :"test@erpnext.com",
"full_name" :"Test User",
"password" :"test",
"country" :"United States",
"timezone" :"America/New_York",
"currency" :"USD"
})

def import_country_and_currency():
from frappe.geo.country_info import get_all
from frappe.utils import update_progress_bar


BIN
test_sites/test_site_ui/test_site_ui-database.sql.gz 파일 보기


불러오는 중...
취소
저장