# HG changeset patch # User Simon Descarpentries # Date 1394731183 -3600 # Node ID a0b695aace0a093a4f8355dd5cd94b44bd96ffbf # Parent 2bed79bde721df5eb971eda653595a7c2c26ca69 File field of Upload from file is now mandatory. Integrates 1sts IRI improvements in JavaScript test-suite. Continue testing error messages of mandatory fields, up to 704 tests. diff -r 2bed79bde721 -r a0b695aace0a src/cm/scripts/test-suite/karma.conf.js --- a/src/cm/scripts/test-suite/karma.conf.js Wed Mar 12 18:33:06 2014 +0100 +++ b/src/cm/scripts/test-suite/karma.conf.js Thu Mar 13 18:19:43 2014 +0100 @@ -1,6 +1,7 @@ // Karma configuration // Generated on Wed Jan 29 2014 15:32:16 GMT+0100 (CET) + // SID: get WORKSPACE_URL configuration from one single file to customize var w = require ('./workspace.info.js'); @@ -17,7 +18,7 @@ // - Firefox ; Safari (only Mac; run `npm install karma-safari-launcher` first) // - Chrome ; ChromeCanary ; Opera (run `npm install karma-opera-launcher` first) // - PhantomJS ; IE (only Windows; run `npm install karma-ie-launcher` first) - browsers: ['Chrome'], + browsers: w.BROWSERS, // frameworks to use. SID: choosen mocha, added karma-e2e-dsl (end-to-end testing) frameworks: ['mocha', 'karma-e2e-dsl'], // SID: Karma will start and run somewhere else than '/', to allow proxying '/' diff -r 2bed79bde721 -r a0b695aace0a src/cm/scripts/test-suite/start-test-suite.sh --- a/src/cm/scripts/test-suite/start-test-suite.sh Wed Mar 12 18:33:06 2014 +0100 +++ b/src/cm/scripts/test-suite/start-test-suite.sh Thu Mar 13 18:19:43 2014 +0100 @@ -1,5 +1,27 @@ #!/bin/bash -export CHROME_BIN=`whereis chromium | sed -r 's/[^ ]* ([^ ]*).*/\1/g' -` -karma start +export CHROME_BIN=`which chromium` +if [ -z "$CHROME_BIN" ]; then + export CHROME_BIN=`which chrome` +fi +if [[ -z "$CHROME_BIN" && $OSTYPE =~ ^darwin ]]; then + CHROME_BIN_BASE=`mdfind "kMDItemCFBundleIdentifier == 'com.google.Chrome'"` + export CHROME_BIN="$CHROME_BIN_BASE/Contents/MacOS/Google Chrome" +fi +export PHANTOMJS_BIN=`which phantomjs` +export FIREFOX_BIN=`which firefox` +if [[ -z "$FIREFOX_BIN" && $OSTYPE =~ ^darwin ]]; then + FIREFOX_BIN_BASE=`mdfind "kMDItemCFBundleIdentifier == 'org.mozilla.firefox'"` + export FIREFOX_BIN="$FIREFOX_BIN_BASE/Contents/MacOS/firefox" +fi + +if [ -x ./node_modules/.bin/karma ]; then + KARMA=./node_modules/.bin/karma +else + KARMA=`which karma` +fi + +"$KARMA" start $@ + + diff -r 2bed79bde721 -r a0b695aace0a src/cm/scripts/test-suite/tests/tests.js --- a/src/cm/scripts/test-suite/tests/tests.js Wed Mar 12 18:33:06 2014 +0100 +++ b/src/cm/scripts/test-suite/tests/tests.js Thu Mar 13 18:19:43 2014 +0100 @@ -149,7 +149,7 @@ }));*/ }); - suite ('setting settings to test values', function () { + suite ('setting settings to test-values', function () { test_page_loading ('/settings/', 'Settings'); test_fill_settings (t); test_val ('#id_workspace_name', t['#id_workspace_name']); @@ -260,15 +260,15 @@ test_text ('select#id_format option:eq(1)[value="rst"]', 'rst', non_visible); test_text ('select#id_format option:eq(2)[value="html"]', 'html', non_visible); test_count ('#markItUpId_content li', 20); // How many buttons are in the WYSIWYG editor toolbar ? + test_unlogged_footer (); + test ('submit empty fields', dsl(function () { elt ('#text input[type="submit"]').click (); browser.waitForPageLoad (); })); test_count ('div.help_text span.error-text', 2); test_form_field ('text div.error', 'id_title', 'text', 0, 'Title', true); - test_form_field ('text div.error', 'id_content', 'textarea', 2, 'Content', true); - - test_unlogged_footer (); + test_form_field ('text div.error', 'id_content', 'textarea', 1, 'Content', true); }); suite ('upload text page conformity', function () { @@ -283,7 +283,7 @@ test_form_field ('text', 'id_title', 'text', 0, 'Title'); test_form_field ('text', 'id_format', 'select', 1, 'Format', true); test_form_field ('text', 'id_tags', 'text', 2, 'Tags'); - test_form_field ('text', 'id_file', 'file', 3, 'Upload file (optional)'); + test_form_field ('text', 'id_file', 'file', 3, 'Upload file'); test_val ('#text :input:eq(4)[type=submit]', 'Save'); test_val ('#text :input:eq(5)#cancel_button[type=button]', 'Cancel'); test_count ('select#id_format option', 3); @@ -291,6 +291,14 @@ test_text ('select#id_format option:eq(1)[value="rst"]', 'rst', non_visible); test_text ('select#id_format option:eq(2)[value="html"]', 'html', non_visible); test_unlogged_footer (); + + test ('submit empty fields', dsl(function () { + elt ('#text input[type="submit"]').click (); + browser.waitForPageLoad (); + })); + test_count ('div.help_text span.error-text', 1); + test_form_field ('text div.error', 'id_file', 'file', 0, 'Upload file'); + test_match ('#text div.help_text:eq(3) span.error-text:eq(0)', /You should specify a file to upload/m); }); suite ('import a co-mented text page conformity', function () { @@ -306,6 +314,14 @@ test_val ('#text :input:eq(1)[type=submit]', 'Save'); test_val ('#text :input:eq(2)#cancel_button[type=button]', 'Cancel'); test_unlogged_footer (); + + test ('submit empty fields', dsl(function () { + elt ('#text input[type="submit"]').click (); + browser.waitForPageLoad (); + })); + test_count ('div.help_text span.error-text', 1); + test_form_field ('text div.error', 'id_file', 'file', 0, 'Upload XML file', true); + test_match ('#text div.help_text:eq(0) span.error-text:eq(0)', /You should specify a file to upload/m); }); suite ('edit profile page conformity', function () { @@ -412,6 +428,14 @@ test_val ('#user :input:eq(6)[type=submit]', 'Add user'); test_val ('#user :input:eq(7)#cancel_button[type=button]', 'Cancel'); test_unlogged_footer (); + + test ('submit empty fields', dsl(function () { + elt ('#user input[type="submit"]').click (); + browser.waitForPageLoad (); + })); + test_count ('div.help_text span.error-text', 1); + test_form_field ('user div.error', 'id_email', 'text', 0, 'E-mail address', true); + test_match ('#user div.help_text:eq(0) span.error-text:eq(0)', /This field is required/m); // X TOTEST add user (pending) }); @@ -438,6 +462,14 @@ test_val ('#user :input:eq(5)#cancel_button[type=button]', 'Cancel'); // X TOTEST add users (pending) -> can't be deleted test_unlogged_footer (); + + test ('submit empty fields', dsl(function () { + elt ('#user input[type="submit"]').click (); + browser.waitForPageLoad (); + })); + test_count ('div.help_text span.error-text', 1); + test_form_field ('user div.error', 'id_email', 'textarea', 0, 'Emails', true); + test_match ('#user div.help_text:eq(0) span.error-text:eq(0)', /This field is required/m); }); suite ('settings page conformity', function () { @@ -500,8 +532,9 @@ test_unlogged_footer (); }); + // vérifier les valeurs de settings sauvées + // Tester les champs obligatoires // Tester les créations de textes - // Tester les champs obligatoires // Tester les liens masqués des textes listés si bien créés // Tester suppression de text // Tester bulk actions sur les textes @@ -696,12 +729,13 @@ function test_form_field (form_id, field_id, type, position, label, mandatory) { test ('has a '+label+' form field', dsl(function () { var s = ''; + switch (type) { case 'textarea':s = 'textarea#'+field_id; break; case 'select': s = 'select#'+field_id; break; default: s = 'input#'+field_id+'[type="'+type+'"]'; } -// var s = type == 'textarea' ? 'textarea#'+field_id : 'input#'+field_id+'[type='+type+']'; + expect (elt (s).val ()).toBeDefined (); expect (elt ('#'+form_id+' :input:eq('+position+')#'+field_id).val ()).toBeDefined (); expect (elt ('label[for='+field_id+']').text ()).toBe (label); diff -r 2bed79bde721 -r a0b695aace0a src/cm/scripts/test-suite/workspace.info.js.example --- a/src/cm/scripts/test-suite/workspace.info.js.example Wed Mar 12 18:33:06 2014 +0100 +++ b/src/cm/scripts/test-suite/workspace.info.js.example Thu Mar 13 18:19:43 2014 +0100 @@ -1,7 +1,9 @@ -define ("WORKSPACE_URL", 'http://192.168.2.61:8000/'); -define ("USER_ADMIN", ''); -define ("PASS_ADMIN", ''); +define ("BROWSERS", ['Chrome']); + +define ("WORKSPACE_URL", ''); // Under http://IP_ADDRESS:PORT_NUM/ format +define ("USER_ADMIN", ''); +define ("PASS_ADMIN", ''); define ("USER_EDIT", ''); define ("PASS_EDIT", ''); @@ -9,6 +11,9 @@ define ("USER_COM", ''); define ("PASS_COM", ''); +define ("USER_OBSERV", ''); +define ("PASS_OBSERV", ''); + function define (name, value) { Object.defineProperty (exports, name, { value: value, diff -r 2bed79bde721 -r a0b695aace0a src/cm/views/create.py --- a/src/cm/views/create.py Wed Mar 12 18:33:06 2014 +0100 +++ b/src/cm/views/create.py Thu Mar 13 18:19:43 2014 +0100 @@ -26,8 +26,8 @@ from base64 import b64decode class CreateTextUploadForm(ModelForm): - file = forms.FileField(required=False, - label=ugettext_lazy("Upload file (optional)"), + file = forms.FileField(required=True, + label=ugettext_lazy("Upload file"), help_text=ugettext_lazy("Upload a file from your computer instead of using the direct input above"),) title = forms.CharField(required=False,