[ARVADOS] updated: e5b8f6826a2034c0c7d7142cff3fb02f64fb8831

git at public.curoverse.com git at public.curoverse.com
Thu Feb 5 17:14:38 EST 2015


Summary of changes:
 apps/workbench/app/helpers/application_helper.rb   |  4 +-
 .../test/integration/pipeline_instances_test.rb    | 43 ++++++++++++++++++----
 services/api/test/fixtures/pipeline_templates.yml  | 19 ++++++++++
 3 files changed, 55 insertions(+), 11 deletions(-)

       via  e5b8f6826a2034c0c7d7142cff3fb02f64fb8831 (commit)
       via  12dee1ebfd6a3fca40c19d751459ba6a071c0a3d (commit)
      from  36d6d1609ef342268cc87fc8bfce51bcf7199929 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit e5b8f6826a2034c0c7d7142cff3fb02f64fb8831
Merge: 36d6d16 12dee1e
Author: Brett Smith <brett at curoverse.com>
Date:   Thu Feb 5 17:14:03 2015 -0500

    Merge branch '5141-workbench-numeric-inputs-wip'
    
    Closes #5141, #5143.


commit 12dee1ebfd6a3fca40c19d751459ba6a071c0a3d
Author: Brett Smith <brett at curoverse.com>
Date:   Thu Feb 5 16:18:00 2015 -0500

    5141: Workbench permits float values for number pipeline inputs.
    
    Previously, when a pipeline input had the number dataclass, we
    rendered the input form with type=number.  However, the Arvados number
    dataclass is meant to allow all numeric types.  The HTML 5 number
    input type only permits integers.
    
    Unfortunately, X-Editable does not have any built-in validation for a
    broader range of numeric types.  This commit simply removes any
    validation.

diff --git a/apps/workbench/app/helpers/application_helper.rb b/apps/workbench/app/helpers/application_helper.rb
index a05e6ba..ef2830c 100644
--- a/apps/workbench/app/helpers/application_helper.rb
+++ b/apps/workbench/app/helpers/application_helper.rb
@@ -307,9 +307,7 @@ module ApplicationHelper
       end
     end
 
-    if dataclass == 'number' or attrvalue.is_a? Fixnum or attrvalue.is_a? Float
-      datatype = 'number'
-    elsif attrvalue.is_a? String
+    if attrvalue.is_a? String
       datatype = 'text'
     elsif attrvalue.is_a?(Array) or dataclass.andand.is_a?(Class)
       # TODO: find a way to edit with x-editable
diff --git a/apps/workbench/test/integration/pipeline_instances_test.rb b/apps/workbench/test/integration/pipeline_instances_test.rb
index 1c8139e..ebdb28b 100644
--- a/apps/workbench/test/integration/pipeline_instances_test.rb
+++ b/apps/workbench/test/integration/pipeline_instances_test.rb
@@ -182,17 +182,27 @@ class PipelineInstancesTest < ActionDispatch::IntegrationTest
            "components JSON not found")
   end
 
-  PROJECT_WITH_SEARCH_COLLECTION = "A Subproject"
-  def check_parameter_search(proj_name)
-    template = api_fixture("pipeline_templates")["parameter_with_search"]
-    search_text = template["components"]["with-search"]["script_parameters"]["input"]["search_for"]
-    visit page_with_token("active", "/pipeline_templates/#{template['uuid']}")
+  def create_pipeline_from(template_name, project_name="Home")
+    # Visit the named pipeline template and create a pipeline instance from it.
+    # The instance will be created under the named project.
+    template_uuid = api_fixture("pipeline_templates", template_name, "uuid")
+    visit page_with_token("active", "/pipeline_templates/#{template_uuid}")
     click_on "Run this pipeline"
-    within(".modal-dialog") do  # Set project for the new pipeline instance
-      find(".selectable", text: proj_name).click
+    within(".modal-dialog") do
+      # Set project for the new pipeline instance
+      find(".selectable", text: project_name).click
       click_on "Choose"
     end
-    assert(has_text?("This pipeline was created from the template"), "did not land on pipeline instance page")
+    assert(has_text?("This pipeline was created from the template"),
+           "did not land on pipeline instance page")
+  end
+
+  PROJECT_WITH_SEARCH_COLLECTION = "A Subproject"
+  def check_parameter_search(proj_name)
+    create_pipeline_from("parameter_with_search", proj_name)
+    search_text = api_fixture("pipeline_templates", "parameter_with_search",
+                              "components", "with-search",
+                              "script_parameters", "input", "search_for")
     first("a.btn,button", text: "Choose").click
     within(".modal-body") do
       if (proj_name != PROJECT_WITH_SEARCH_COLLECTION)
@@ -215,6 +225,23 @@ class PipelineInstancesTest < ActionDispatch::IntegrationTest
     check_parameter_search("A Project")
   end
 
+  test "enter a float for a number pipeline input" do
+    # Poltergeist either does not support the HTML 5 <input
+    # type="number">, or interferes with the associated X-Editable
+    # validation code.  If the input field has type=number (forcing an
+    # integer), this test will yield a false positive under
+    # Poltergeist.  --Brett, 2015-02-05
+    need_selenium "for strict X-Editable input validation"
+    create_pipeline_from("template_with_dataclass_number")
+    INPUT_SELECTOR =
+      ".editable[data-name='[components][work][script_parameters][input][value]']"
+    find(INPUT_SELECTOR).click
+    find(".editable-input input").set("12.34")
+    find("#editable-submit").click
+    assert_no_selector(".editable-popup")
+    assert_selector(INPUT_SELECTOR, text: "12.34")
+  end
+
   [
     [true, 'Two Part Pipeline Template', 'foo_collection_in_aproject', false],
     [false, 'Two Part Pipeline Template', 'foo_collection_in_aproject', false],
diff --git a/services/api/test/fixtures/pipeline_templates.yml b/services/api/test/fixtures/pipeline_templates.yml
index 4659da3..40bf63d 100644
--- a/services/api/test/fixtures/pipeline_templates.yml
+++ b/services/api/test/fixtures/pipeline_templates.yml
@@ -165,6 +165,25 @@ template_with_dataclass_file:
         array_with_value: # important to test repeating values in the array!
           value: [1,1,2,3,5]
 
+template_with_dataclass_number:
+  uuid: zzzzz-p5p6p-numbertemplatea
+  owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz
+  created_at: 2015-01-14 12:35:04 -0400
+  updated_at: 2015-01-14 12:35:04 -0400
+  modified_at: 2015-01-14 12:35:04 -0400
+  modified_by_client_uuid: zzzzz-ozdt8-brczlopd8u8d0jr
+  modified_by_user_uuid: zzzzz-tpzed-xurymjxw79nv3jz
+  name: Template with dataclass number
+  components:
+    work:
+      script: foo
+      script_version: master
+      script_parameters:
+        input:
+          required: true
+          dataclass: number
+          title: "Input number"
+
 pipeline_template_in_publicly_accessible_project:
   uuid: zzzzz-p5p6p-tmpltpublicproj
   owner_uuid: zzzzz-j7d0g-zhxawtyetzwc5f0

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list