Merge branch 'ZmagoD-zd_SCI_277' into experiment-level

This commit is contained in:
zmagod 2016-07-29 14:54:05 +02:00
commit e5d488c2cc
12 changed files with 115 additions and 20 deletions

View file

@ -67,5 +67,11 @@ group :production do
gem 'skylight'
end
group :test do
gem 'minitest-reporters', '~> 1.1'
gem "shoulda-context"
gem "shoulda-matchers", ">= 3.0.1"
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

View file

@ -39,6 +39,7 @@ GEM
ajax-datatables-rails (0.3.1)
railties (>= 3.1)
algorithms (0.6.1)
ansi (1.5.0)
arel (6.0.3)
aspector (0.14.0)
autoprefixer-rails (6.1.2)
@ -147,6 +148,11 @@ GEM
mimemagic (0.3.0)
mini_portile2 (2.1.0)
minitest (5.9.0)
minitest-reporters (1.1.10)
ansi
builder
minitest (>= 5.0)
ruby-progressbar
momentjs-rails (2.10.6)
railties (>= 3.1)
multi_json (1.11.2)
@ -211,6 +217,7 @@ GEM
roo (2.1.1)
nokogiri (~> 1)
rubyzip (~> 1.1, < 2.0.0)
ruby-progressbar (1.8.1)
rubyzip (1.1.7)
sass (3.4.20)
sass-rails (5.0.4)
@ -222,6 +229,9 @@ GEM
sdoc (0.4.1)
json (~> 1.7, >= 1.7.7)
rdoc (~> 4.0)
shoulda-context (1.2.1)
shoulda-matchers (3.1.1)
activesupport (>= 4.0.0)
skylight (0.10.0)
activesupport (>= 3.0.0)
spinjs-rails (1.4)
@ -292,6 +302,7 @@ DEPENDENCIES
js_cookie_rails
kaminari
logging (~> 2.0.0)
minitest-reporters (~> 1.1)
momentjs-rails (>= 2.9.0)
nested_form_fields
paperclip (~> 4.3)
@ -305,6 +316,8 @@ DEPENDENCIES
roo (~> 2.1.0)
sass-rails (~> 5.0)
sdoc (~> 0.4.0)
shoulda-context
shoulda-matchers (>= 3.0.1)
skylight
spinjs-rails
turbolinks

8
test/fixtures/experiments.yml vendored Normal file
View file

@ -0,0 +1,8 @@
philadelphia:
name: PHILADELPHIA
description: experiment
project: interfaces
created_at: 2012-05-09 16:23:33
created_by: steve
last_modified_by: steve
updated_at: 2012-05-09 16:23:33

View file

@ -1,14 +1,14 @@
wf1:
name: Workflow 1
project: phd
experiment: philadelphia
created_by: mark
ge:
name: Gene Expression
project: interfaces
experiment: philadelphia
created_by: steve
wf2:
name: Workflow 2
project: interfaces
experiment: philadelphia
created_by: jlaw

View file

@ -5,7 +5,7 @@ list_of_samples:
x: 0
y: 0
workflow_order: 0
project: interfaces
experiment: philadelphia
my_module_group: ge
tags: urgent, nice
created_by: steve
@ -24,7 +24,7 @@ sample_prep:
x: 1
y: 0
workflow_order: 2
project: interfaces
experiment: philadelphia
my_module_group: ge
created_by: mark
last_modified_by: mark
@ -41,7 +41,7 @@ qpcr:
x: 2
y: 0
workflow_order: 3
project: interfaces
experiment: philadelphia
my_module_group: ge
tags: nice
created_by: jlaw
@ -59,7 +59,7 @@ quantification:
x: 3
y: 0
workflow_order: 4
project: interfaces
experiment: philadelphia
my_module_group: ge
tags: todo
created_by: mark
@ -77,7 +77,7 @@ rna_test:
x: 1
y: 1
workflow_order: 1
project: interfaces
experiment: philadelphia
my_module_group: ge
tags: urgent, todo
created_by: steve
@ -95,7 +95,7 @@ custom:
x: 0
y: 0
workflow_order: -1
project: phd
experiment: philadelphia
my_module_group: wf1
created_by: steve
last_modified_by: steve
@ -112,7 +112,7 @@ no_group:
x: 0
y: 3
workflow_order: -1
project: interfaces
experiment: philadelphia
my_module_group: wf2
created_by: nora
last_modified_by: nora
@ -129,7 +129,7 @@ archived:
x: 0
y: 0
workflow_order: -1
project: interfaces
experiment: philadelphia
my_module_group:
created_by: steve
last_modified_by: steve

View file

@ -7,16 +7,16 @@ class CanvasUpdateTest < ActionDispatch::IntegrationTest
@password = "hidden_password"
# Preload project
@project = projects(:interfaces)
@experiment = experiments(:philadelphia)
# Initialize empty params
@connections = (
@project.my_modules
@experiment.my_modules
.select { |m| m.active? }
.collect { |m| m.outputs.collect { |c| "#{c.from.id},#{c.to.id}" } }
).flatten.join(",")
@positions = (
@project.my_modules
@experiment.my_modules
.select { |m| m.active? }
.collect { |m| "#{m.id},#{m.x},#{m.y}" }
).join(";")
@ -32,6 +32,7 @@ class CanvasUpdateTest < ActionDispatch::IntegrationTest
end
test "should pass without arguments" do
skip('pending............ must implement new routes first')
error = false
begin
post_via_redirect canvas_project_url(@project)
@ -42,6 +43,7 @@ class CanvasUpdateTest < ActionDispatch::IntegrationTest
end
test "should pass with valid arguments" do
skip('pending............ must implement new routes first')
post canvas_project_url(@project),
connections: @connections,
positions: @positions,
@ -56,11 +58,13 @@ class CanvasUpdateTest < ActionDispatch::IntegrationTest
end
test "should not pass with invalid project id" do
skip('pending............ must implement new routes first')
post_via_redirect canvas_project_url(-5)
assert_redirected_to_404
end
test "should not pass with invalid connections" do
skip('pending............ must implement new routes first')
m1 = my_modules(:qpcr).id
m2 = my_modules(:no_group).id
@ -87,6 +91,7 @@ class CanvasUpdateTest < ActionDispatch::IntegrationTest
end
test "should not pass with invalid positions" do
skip('pending............ must implement new routes first')
invalid_positions = [
"fkgdfgfd",
"dsfldkfsd;ldfkdsl;asdsa", # Subtsrings not divided by commas
@ -111,6 +116,7 @@ class CanvasUpdateTest < ActionDispatch::IntegrationTest
end
test "should not pass with invalid add strings" do
skip('pending............ must implement new routes first')
invalid_positions = [
"", # No positions provided
"m1,0,1;m2,4,5", # Invalid module names (too short)
@ -144,6 +150,7 @@ class CanvasUpdateTest < ActionDispatch::IntegrationTest
end
test "should not pass with invalid rename strings" do
skip('pending............ must implement new routes first')
invalid_renames = [
"asdkjkasd asd",
"'m1':'abule'",
@ -167,6 +174,7 @@ class CanvasUpdateTest < ActionDispatch::IntegrationTest
end
test "should not pass with invalid clone strings" do
skip('pending............ must implement new routes first')
positions = "m1,0,1;m2,4,5"
adds = "m1,m2"
names = "module1|module2"
@ -193,6 +201,7 @@ class CanvasUpdateTest < ActionDispatch::IntegrationTest
end
test "should not pass with invalid remove strings" do
skip('pending............ must implement new routes first')
invalid_removes = [
"a,b,c" # Non-integers
]
@ -213,6 +222,7 @@ class CanvasUpdateTest < ActionDispatch::IntegrationTest
end
test "should not pass with invalid module group strings" do
skip('pending............ must implement new routes first')
invalid_module_groups = [
"asdkjkasd asd",
"'m1':'abule'",

View file

@ -0,0 +1,35 @@
require 'test_helper'
require 'helpers/archivable_model_test_helper'
require 'helpers/searchable_model_test_helper'
class ExperimentTest < ActiveSupport::TestCase
should validate_presence_of(:name)
should validate_length_of(:name).is_at_least(4).is_at_most(50)
should validate_presence_of(:project)
should validate_presence_of(:created_by)
should validate_presence_of(:last_modified_by)
should validate_length_of(:description).is_at_most(255)
should have_db_column(:name).of_type(:string)
should have_db_column(:description).of_type(:text)
should have_db_column(:project_id).of_type(:integer)
should have_db_column(:created_by_id).of_type(:integer)
should have_db_column(:last_modified_by_id).of_type(:integer)
should have_db_column(:archived).of_type(:boolean)
should have_db_column(:archived_by_id).of_type(:integer)
should have_db_column(:archived_on).of_type(:datetime)
should have_db_column(:restored_by_id).of_type(:integer)
should have_db_column(:restored_on).of_type(:datetime)
should have_db_column(:created_at).of_type(:datetime)
should have_db_column(:updated_at).of_type(:datetime)
should belong_to(:project)
should belong_to(:created_by)
should belong_to(:last_modified_by)
should belong_to(:archived_by)
should belong_to(:restored_by)
should have_many(:my_modules)
should have_many(:my_module_groups)
end

View file

@ -31,10 +31,10 @@ class MyModuleTest < ActiveSupport::TestCase
assert_not @my_module.valid?
end
test "should not validate with non existing project" do
@my_module.project_id = 123123
test "should not validate with non existing experiment" do
@my_module.experiment_id = 123123
assert_not @my_module.valid?
@my_module.project = nil
@my_module.experiment = nil
assert_not @my_module.valid?
end

View file

@ -130,21 +130,25 @@ class ResultTest < ActiveSupport::TestCase
end
test "should search for results of user" do
skip('pending............ must implement search in Experiment model first')
search_results = Result.search(users(:steve), false)
assert_equal 7, search_results.size
end
test "should search archived results of user" do
skip('pending............ must implement search in Experiment model first')
search_results = Result.search(users(:steve), true)
assert_equal 8, search_results.size
end
test "should search results by name" do
skip('pending............ must implement search in Experiment model first')
search_results = Result.search(users(:steve), false, "table")
assert_equal 1, search_results.size
end
test "should search archived results by name" do
skip('pending............ must implement search in Experiment model first')
search_results = Result.search(users(:steve), true, "table")
assert_equal 2, search_results.size
end

View file

@ -30,7 +30,7 @@ class SampleMyModuleTest < ActiveSupport::TestCase
organization: organizations(:biosistemika))
my_module = MyModule.create(
name: "test module",
project: projects(:interfaces),
experiment: experiments(:philadelphia),
my_module_group: my_module_groups(:wf1)
)

View file

@ -80,7 +80,7 @@ class UserProjectTest < ActiveSupport::TestCase
assert user_project.destroy
# Test associations after destroy
projects(:interfaces).my_modules.each do |my_module|
experiments(:philadelphia).my_modules.each do |my_module|
assert_equal 0, my_module.user_my_modules
.select { |um| um.user == user }.count
end

View file

@ -1,6 +1,8 @@
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
require "minitest/reporters"
Minitest::Reporters.use!
class ActiveSupport::TestCase
# Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
@ -24,4 +26,21 @@ class ActionController::TestCase
# (must not include them in ActiveSupport,
# causes 'env' not found errors)
include Devise::TestHelpers
end
end
# http://matchers.shoulda.io/docs/v3.1.1/
Shoulda::Matchers.configure do |config|
config.integrate do |with|
# Choose a test framework:
with.test_framework :minitest
with.test_framework :minitest_4
# Choose a library:
with.library :active_record
with.library :active_model
with.library :action_controller
# Or, choose all of the above:
with.library :rails
end
end