coupler 0.0.4-java → 0.0.6-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +7 -8
- data/Gemfile.lock +43 -24
- data/VERSION +1 -1
- data/coupler.gemspec +27 -31
- data/features/wizard.feature +2 -1
- data/lib/coupler.rb +2 -2
- data/lib/coupler/base.rb +4 -0
- data/lib/coupler/extensions/connections.rb +2 -12
- data/lib/coupler/extensions/jobs.rb +4 -2
- data/lib/coupler/extensions/projects.rb +1 -1
- data/lib/coupler/helpers.rb +9 -1
- data/lib/coupler/models.rb +8 -0
- data/lib/coupler/models/comparison.rb +5 -4
- data/lib/coupler/models/connection.rb +10 -1
- data/lib/coupler/models/import.rb +3 -7
- data/lib/coupler/models/transformer.rb +1 -1
- data/lib/coupler/runner.rb +1 -1
- data/lib/coupler/scheduler.rb +1 -1
- data/tasks/test.rake +8 -0
- data/test/functional/test_base.rb +17 -0
- data/test/functional/test_connections.rb +81 -0
- data/test/functional/test_imports.rb +76 -0
- data/test/{integration/extensions → functional}/test_jobs.rb +21 -12
- data/test/functional/test_matchers.rb +108 -0
- data/test/functional/test_projects.rb +67 -0
- data/test/functional/test_resources.rb +126 -0
- data/test/{integration/extensions → functional}/test_results.rb +20 -29
- data/test/functional/test_scenarios.rb +92 -0
- data/test/functional/test_transformations.rb +106 -0
- data/test/functional/test_transformers.rb +68 -0
- data/test/helper.rb +30 -20
- data/test/integration/test_transformation.rb +6 -1
- data/test/unit/models/test_common_model.rb +2 -2
- data/test/unit/models/test_comparison.rb +8 -8
- data/test/unit/models/test_connection.rb +2 -2
- data/test/unit/models/test_field.rb +2 -2
- data/test/unit/models/test_import.rb +9 -4
- data/test/unit/models/test_job.rb +2 -2
- data/test/unit/models/test_matcher.rb +2 -2
- data/test/unit/models/test_project.rb +2 -2
- data/test/unit/models/test_resource.rb +2 -2
- data/test/unit/models/test_result.rb +2 -2
- data/test/unit/models/test_scenario.rb +2 -2
- data/test/unit/models/test_transformation.rb +2 -2
- data/test/unit/models/test_transformer.rb +12 -2
- data/test/unit/test_base.rb +1 -14
- data/test/unit/test_data_uploader.rb +1 -1
- data/test/unit/test_database.rb +1 -1
- data/test/unit/test_helpers.rb +2 -2
- data/test/unit/test_import_buffer.rb +40 -38
- data/test/unit/test_logger.rb +1 -1
- data/test/unit/test_models.rb +1 -1
- data/test/unit/test_runner.rb +1 -1
- data/test/unit/test_scheduler.rb +1 -1
- data/webroot/public/css/style.css +7 -5
- data/webroot/public/js/jquery.dataTables.min.js +130 -574
- data/webroot/views/connections/new.erb +41 -3
- data/webroot/views/imports/new.erb +2 -0
- data/webroot/views/jobs/list.erb +25 -21
- data/webroot/views/projects/index.erb +23 -15
- data/webroot/views/resources/list.erb +1 -2
- data/webroot/views/resources/new.erb +2 -2
- data/webroot/views/resources/show.erb +5 -2
- data/webroot/views/scenarios/new.erb +1 -1
- data/webroot/views/transformations/new.erb +1 -1
- metadata +30 -44
- data/lib/coupler/config.rb +0 -128
- data/test/coupler/models/test_import.rb +0 -221
- data/test/factories.rb +0 -91
- data/test/integration/extensions/test_connections.rb +0 -80
- data/test/integration/extensions/test_imports.rb +0 -94
- data/test/integration/extensions/test_matchers.rb +0 -134
- data/test/integration/extensions/test_projects.rb +0 -82
- data/test/integration/extensions/test_resources.rb +0 -150
- data/test/integration/extensions/test_scenarios.rb +0 -88
- data/test/integration/extensions/test_transformations.rb +0 -113
- data/test/integration/extensions/test_transformers.rb +0 -80
- data/vendor/h2-1.3.154.jar +0 -0
@@ -0,0 +1,126 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
module CouplerFunctionalTests
|
4
|
+
class TestResources < Coupler::Test::FunctionalTest
|
5
|
+
def self.startup
|
6
|
+
super
|
7
|
+
conn = new_connection('h2', :name => 'foo')
|
8
|
+
conn.database do |db|
|
9
|
+
db.create_table!(:foo) do
|
10
|
+
primary_key :id
|
11
|
+
String :foo
|
12
|
+
String :bar
|
13
|
+
end
|
14
|
+
db[:foo].insert({:foo => 'foo', :bar => 'bar'})
|
15
|
+
db[:foo].insert({:foo => 'bar', :bar => 'foo'})
|
16
|
+
|
17
|
+
db.create_table!(:bar) do
|
18
|
+
primary_key :id
|
19
|
+
String :baz
|
20
|
+
String :quux
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def setup
|
26
|
+
super
|
27
|
+
stamp = Time.now - 50
|
28
|
+
@project = Project.create(:name => 'foo', :created_at => stamp)
|
29
|
+
@connection = new_connection('h2', :name => 'h2 connection', :created_at => stamp).save!
|
30
|
+
end
|
31
|
+
|
32
|
+
test "index" do
|
33
|
+
resource = Resource.create(:name => 'foo', :project => @project, :connection => @connection, :table_name => 'foo')
|
34
|
+
visit "/projects/#{@project.id}/resources"
|
35
|
+
assert_equal 200, page.status_code
|
36
|
+
assert @project.reload.last_accessed_at
|
37
|
+
end
|
38
|
+
|
39
|
+
test "index with non existant project" do
|
40
|
+
visit "/projects/8675309/resources"
|
41
|
+
assert_equal "/projects", page.current_path
|
42
|
+
assert page.has_content?("The project you were looking for doesn't exist")
|
43
|
+
end
|
44
|
+
|
45
|
+
attribute(:javascript, true)
|
46
|
+
test "new database resource" do
|
47
|
+
visit "/projects/#{@project.id}/resources/new"
|
48
|
+
find('#resource-type-database').click
|
49
|
+
fill_in("Name", :with => 'bar')
|
50
|
+
fill_in("Table", :with => 'bar')
|
51
|
+
select(@connection.name, :from => "Connection")
|
52
|
+
click_button('Submit')
|
53
|
+
assert_match %r{/projects/#{@project.id}/resources/\d+/edit}, page.current_path
|
54
|
+
assert Resource[:name => 'bar', :project_id => @project.id]
|
55
|
+
end
|
56
|
+
|
57
|
+
attribute(:javascript, true)
|
58
|
+
test "creating resource with errors" do
|
59
|
+
visit "/projects/#{@project.id}/resources/new"
|
60
|
+
find('#resource-type-database').click
|
61
|
+
fill_in("Name", :with => '')
|
62
|
+
fill_in("Table", :with => 'bar')
|
63
|
+
select(@connection.name, :from => "Connection")
|
64
|
+
click_button('Submit')
|
65
|
+
assert_equal "/projects/#{@project.id}/resources", page.current_path
|
66
|
+
assert page.has_content?("Name is not present")
|
67
|
+
end
|
68
|
+
|
69
|
+
test "show resource" do
|
70
|
+
resource = Resource.create!(:name => 'foo', :project => @project, :connection => @connection, :table_name => 'foo')
|
71
|
+
field = resource.fields_dataset[:name => 'foo']
|
72
|
+
transformer = Transformer.create!(:name => 'noop', :code => 'value', :allowed_types => %w{string}, :result_type => 'same')
|
73
|
+
transformation = Transformation.create!(:resource => resource, :transformer => transformer, :source_field => field)
|
74
|
+
|
75
|
+
visit "/projects/#{@project[:id]}/resources/#{resource.id}"
|
76
|
+
assert_equal 200, page.status_code
|
77
|
+
|
78
|
+
rows = all('table#fields tbody tr')
|
79
|
+
assert_equal 3, rows.length
|
80
|
+
rows.each_with_index do |row, i|
|
81
|
+
cells = row.all('td')
|
82
|
+
assert_equal %w{id foo bar}[i], cells[0].text
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
test "schedule transform job" do
|
87
|
+
resource = Resource.create!(:name => 'foo', :project => @project, :connection => @connection, :table_name => 'foo')
|
88
|
+
field = resource.fields_dataset[:name => 'foo']
|
89
|
+
transformer = Transformer.create!(:name => 'noop', :code => 'value', :allowed_types => %w{string}, :result_type => 'same')
|
90
|
+
transformation = Transformation.create!(:resource => resource, :transformer => transformer, :source_field => field)
|
91
|
+
|
92
|
+
visit "/projects/#{@project[:id]}/resources/#{resource[:id]}"
|
93
|
+
click_button("Transform now")
|
94
|
+
assert_equal "/projects/#{@project[:id]}/resources/#{resource[:id]}", page.current_path
|
95
|
+
assert Job.filter(:name => 'transform', :resource_id => resource.id, :status => 'scheduled').count == 1
|
96
|
+
end
|
97
|
+
|
98
|
+
#def test_progress
|
99
|
+
#resource = Factory(:resource, :project => @project, :completed => 100, :total => 1000)
|
100
|
+
#get "/projects/#{@project.id}/resources/#{resource.id}/progress"
|
101
|
+
#assert last_response.ok?
|
102
|
+
#assert_equal "10", last_response.body
|
103
|
+
#end
|
104
|
+
|
105
|
+
attribute(:javascript, true)
|
106
|
+
test "edit" do
|
107
|
+
resource = Resource.create!(:name => 'foo', :project => @project, :connection => @connection, :table_name => 'foo')
|
108
|
+
field = resource.fields_dataset[:name => 'foo']
|
109
|
+
|
110
|
+
visit "/projects/#{@project[:id]}/resources/#{resource.id}/edit"
|
111
|
+
find("#field_checkbox_#{field.id}").click
|
112
|
+
click_button('Submit')
|
113
|
+
assert_equal "/projects/#{@project[:id]}/resources/#{resource.id}", page.current_path
|
114
|
+
end
|
115
|
+
|
116
|
+
#def test_delete
|
117
|
+
#pend
|
118
|
+
#end
|
119
|
+
|
120
|
+
test "record" do
|
121
|
+
resource = Resource.create!(:name => 'foo', :project => @project, :connection => @connection, :table_name => 'foo')
|
122
|
+
page.driver.get "/projects/#{@project.id}/resources/#{resource.id}/record/1"
|
123
|
+
assert_equal 200, page.status_code
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
|
-
module
|
4
|
-
class TestResults < Coupler::Test::
|
3
|
+
module CouplerFunctionalTests
|
4
|
+
class TestResults < Coupler::Test::FunctionalTest
|
5
5
|
def self.startup
|
6
6
|
super
|
7
7
|
conn = new_connection('h2', :name => 'foo')
|
@@ -37,53 +37,44 @@ module TestExtensions
|
|
37
37
|
end
|
38
38
|
|
39
39
|
test "index" do
|
40
|
-
|
41
|
-
|
40
|
+
visit "/projects/#{@project.id}/scenarios/#{@scenario.id}/results"
|
41
|
+
assert_equal 200, page.status_code
|
42
42
|
end
|
43
43
|
|
44
44
|
test "index with non existant project" do
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
follow_redirect!
|
49
|
-
assert_match /The project you were looking for doesn't exist/, last_response.body
|
45
|
+
visit "/projects/8675309/scenarios/#{@scenario.id}/results"
|
46
|
+
assert_equal "/projects", page.current_path
|
47
|
+
assert page.has_content?("The project you were looking for doesn't exist")
|
50
48
|
end
|
51
49
|
|
52
50
|
test "index with non existant scenario" do
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
follow_redirect!
|
57
|
-
assert_match /The scenario you were looking for doesn't exist/, last_response.body
|
51
|
+
visit "/projects/#{@project.id}/scenarios/8675309/results"
|
52
|
+
assert_equal "/projects/#{@project.id}/scenarios", page.current_path
|
53
|
+
assert page.has_content?("The scenario you were looking for doesn't exist")
|
58
54
|
end
|
59
55
|
|
60
56
|
test "show" do
|
61
|
-
|
62
|
-
|
57
|
+
visit "/projects/#{@project.id}/scenarios/#{@scenario.id}/results/#{@result.id}"
|
58
|
+
assert_equal 200, page.status_code
|
63
59
|
end
|
64
60
|
|
65
61
|
test "details" do
|
66
62
|
group_id = nil
|
67
63
|
@result.groups_dataset { |ds| group_id = ds.get(:id) }
|
68
|
-
|
69
|
-
|
64
|
+
visit "/projects/#{@project.id}/scenarios/#{@scenario.id}/results/#{@result.id}/details/#{group_id}"
|
65
|
+
assert_equal 200, page.status_code
|
70
66
|
end
|
71
67
|
|
72
68
|
test "show sends csv" do
|
73
|
-
|
74
|
-
assert_equal %{attachment; filename="#{@scenario.slug}-run-#{@result.created_at.strftime('%Y%m%d-%H%M')}.csv"},
|
75
|
-
|
76
|
-
body = last_response.body
|
77
|
-
regexp = /id,foo,bar,coupler_group_id/
|
78
|
-
assert_match regexp, body
|
69
|
+
visit "/projects/#{@project.id}/scenarios/#{@scenario.id}/results/#{@result.id}.csv"
|
70
|
+
assert_equal %{attachment; filename="#{@scenario.slug}-run-#{@result.created_at.strftime('%Y%m%d-%H%M')}.csv"}, page.response_headers['Content-Disposition']
|
71
|
+
assert page.has_content?("id,foo,bar,coupler_group_id")
|
79
72
|
end
|
80
73
|
|
81
74
|
test "show with non existant result" do
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
follow_redirect!
|
86
|
-
assert_match /The result you were looking for doesn't exist/, last_response.body
|
75
|
+
visit "/projects/#{@project.id}/scenarios/#{@scenario.id}/results/8675309"
|
76
|
+
assert_equal "/projects/#{@project.id}/scenarios/#{@scenario.id}/results", page.current_path
|
77
|
+
assert page.has_content?("The result you were looking for doesn't exist")
|
87
78
|
end
|
88
79
|
end
|
89
80
|
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
module CouplerFunctionalTests
|
4
|
+
class TestScenarios < Coupler::Test::FunctionalTest
|
5
|
+
def self.startup
|
6
|
+
super
|
7
|
+
conn = new_connection('h2', :name => 'foo')
|
8
|
+
conn.database do |db|
|
9
|
+
db.create_table!(:foo) do
|
10
|
+
primary_key :id
|
11
|
+
String :foo
|
12
|
+
String :bar
|
13
|
+
end
|
14
|
+
db[:foo].insert({:foo => 'foo', :bar => 'bar'})
|
15
|
+
db[:foo].insert({:foo => 'bar', :bar => 'foo'})
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def setup
|
20
|
+
super
|
21
|
+
@project = Project.create(:name => 'foo')
|
22
|
+
@connection = new_connection('h2', :name => 'h2 connection').save!
|
23
|
+
@resource = Resource.create(:name => 'foo', :project => @project, :connection => @connection, :table_name => 'foo')
|
24
|
+
end
|
25
|
+
|
26
|
+
test "index" do
|
27
|
+
scenario = Scenario.create(:name => 'foo', :resource_1 => @resource, :project => @project)
|
28
|
+
visit "/projects/#{@project.id}/scenarios"
|
29
|
+
assert_equal 200, page.status_code
|
30
|
+
end
|
31
|
+
|
32
|
+
test "index of non existant project" do
|
33
|
+
visit "/projects/8675309/scenarios"
|
34
|
+
assert_equal "/projects", page.current_path
|
35
|
+
assert page.has_content?("The project you were looking for doesn't exist")
|
36
|
+
end
|
37
|
+
|
38
|
+
test "show" do
|
39
|
+
scenario = Scenario.create(:name => 'foo', :resource_1 => @resource, :project => @project)
|
40
|
+
visit "/projects/#{@project.id}/scenarios/#{scenario.id}"
|
41
|
+
assert_equal 200, page.status_code
|
42
|
+
end
|
43
|
+
|
44
|
+
attribute(:javascript, true)
|
45
|
+
test "successfully creating scenario" do
|
46
|
+
visit "/projects/#{@project.id}/scenarios/new"
|
47
|
+
fill_in('Name', :with => 'foo')
|
48
|
+
fill_in('Description', :with => 'foo bar')
|
49
|
+
find("#resource-#{@resource.id}").click
|
50
|
+
click_button('Submit')
|
51
|
+
assert_match %r{/projects/#{@project.id}/scenarios/\d+}, page.current_path
|
52
|
+
scenario = Scenario[:name => 'foo', :project_id => @project.id]
|
53
|
+
assert scenario
|
54
|
+
assert_equal [@resource], scenario.resources
|
55
|
+
end
|
56
|
+
|
57
|
+
attribute(:javascript, true)
|
58
|
+
test "failing to create scenario" do
|
59
|
+
visit "/projects/#{@project.id}/scenarios/new"
|
60
|
+
fill_in('Name', :with => '')
|
61
|
+
fill_in('Description', :with => 'foo bar')
|
62
|
+
find("#resource-#{@resource.id}").click
|
63
|
+
click_button('Submit')
|
64
|
+
assert_equal "/projects/#{@project.id}/scenarios", page.current_path
|
65
|
+
assert page.has_content?("Name is not present")
|
66
|
+
end
|
67
|
+
|
68
|
+
test "run scenario" do
|
69
|
+
scenario = Scenario.create(:name => 'foo', :resource_1 => @resource, :project => @project)
|
70
|
+
foo = @resource.fields_dataset[:name => 'foo']
|
71
|
+
matcher = Matcher.create!({
|
72
|
+
:scenario => scenario,
|
73
|
+
:comparisons_attributes => [{
|
74
|
+
'lhs_type' => 'field', 'raw_lhs_value' => foo.id, 'lhs_which' => 1,
|
75
|
+
'rhs_type' => 'field', 'raw_rhs_value' => foo.id, 'rhs_which' => 2,
|
76
|
+
'operator' => 'equals'
|
77
|
+
}]
|
78
|
+
})
|
79
|
+
visit "/projects/#{@project.id}/scenarios/#{scenario.id}"
|
80
|
+
click_button('Run now')
|
81
|
+
assert_equal "/projects/#{@project[:id]}/scenarios/#{scenario[:id]}", page.current_path
|
82
|
+
assert Job.filter(:name => 'run_scenario', :scenario_id => scenario.id, :status => 'scheduled').count == 1
|
83
|
+
end
|
84
|
+
|
85
|
+
#def test_progress
|
86
|
+
#scenario = Factory(:scenario, :project => @project, :completed => 100, :total => 1000)
|
87
|
+
#visit "/projects/#{@project.id}/scenarios/#{scenario.id}/progress"
|
88
|
+
#assert_equal 200, page.status_code
|
89
|
+
#assert_equal "10", last_response.body
|
90
|
+
#end
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
module CouplerFunctionalTests
|
4
|
+
class TestTransformations < Coupler::Test::FunctionalTest
|
5
|
+
def self.startup
|
6
|
+
super
|
7
|
+
conn = new_connection('h2', :name => 'foo')
|
8
|
+
conn.database do |db|
|
9
|
+
db.create_table!(:foo) do
|
10
|
+
primary_key :id
|
11
|
+
String :foo
|
12
|
+
String :bar
|
13
|
+
end
|
14
|
+
db[:foo].insert({:foo => 'foo', :bar => 'bar'})
|
15
|
+
db[:foo].insert({:foo => 'bar', :bar => 'foo'})
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def setup
|
20
|
+
super
|
21
|
+
@project = Project.create(:name => 'foo')
|
22
|
+
@connection = new_connection('h2', :name => 'h2 connection').save!
|
23
|
+
@resource = Resource.create(:name => 'foo', :project => @project, :connection => @connection, :table_name => 'foo')
|
24
|
+
@transformer = Transformer.create(:name => 'noop', :code => 'value', :allowed_types => %w{string integer datetime}, :result_type => 'same')
|
25
|
+
end
|
26
|
+
|
27
|
+
attribute(:javascript, true)
|
28
|
+
test "new" do
|
29
|
+
pend "I hate Capybara sometimes"
|
30
|
+
visit "/projects/#{@project.id}/resources/#{@resource.id}/transformations/new"
|
31
|
+
find('#source-field-name input.ui-autocomplete-input').set('foo')
|
32
|
+
find('#transformer-name input.ui-autocomplete-input').set(@transformer.name)
|
33
|
+
choose("Same as source field")
|
34
|
+
click_button('Submit')
|
35
|
+
assert_equal "/projects/#{@project.id}/resources/#{@resource.id}", page.current_path
|
36
|
+
transformation = @resource.transformations_dataset.first
|
37
|
+
assert transformation
|
38
|
+
end
|
39
|
+
|
40
|
+
test "new with non existant project" do
|
41
|
+
visit "/projects/8675309/resources/#{@resource.id}/transformations/new"
|
42
|
+
assert_equal "/projects", page.current_path
|
43
|
+
assert page.has_content?("The project you were looking for doesn't exist")
|
44
|
+
end
|
45
|
+
|
46
|
+
test "new with non existant resource" do
|
47
|
+
visit "/projects/#{@project.id}/resources/8675309/transformations/new"
|
48
|
+
assert_equal "/projects/#{@project.id}/resources", page.current_path
|
49
|
+
assert page.has_content?("The resource you were looking for doesn't exist")
|
50
|
+
end
|
51
|
+
|
52
|
+
attribute(:javascript, true)
|
53
|
+
test "delete" do
|
54
|
+
field = @resource.fields_dataset[:name => 'foo']
|
55
|
+
transformation = Transformation.create!(:resource => @resource, :transformer => @transformer, :source_field => field)
|
56
|
+
|
57
|
+
visit "/projects/#{@project.id}/resources/#{@resource.id}/transformations"
|
58
|
+
find('span.ui-icon-trash').click
|
59
|
+
a = page.driver.browser.switch_to.alert
|
60
|
+
a.accept
|
61
|
+
assert_equal "/projects/#{@project.id}/resources/#{@resource.id}", page.current_path
|
62
|
+
assert_equal 0, Transformation.filter(:id => transformation.id).count
|
63
|
+
end
|
64
|
+
|
65
|
+
# NOTE: Capybara doesn't do so well with this
|
66
|
+
#test "delete with non existant transformation" do
|
67
|
+
#page.driver.delete "/projects/#{@project.id}/resources/#{@resource.id}/transformations/8675309"
|
68
|
+
#assert_equal "/projects/#{@project.id}/resources/#{@resource.id}/transformations", page.current_path
|
69
|
+
#assert page.has_content?("The transformation you were looking for doesn't exist")
|
70
|
+
#end
|
71
|
+
|
72
|
+
test "for" do
|
73
|
+
field = @resource.fields_dataset[:name => 'foo']
|
74
|
+
t12n = Transformation.create!(:resource => @resource, :source_field => field, :transformer => @transformer)
|
75
|
+
|
76
|
+
page.driver.get "/projects/#{@project.id}/resources/#{@resource.id}/transformations/for/foo"
|
77
|
+
assert page.has_content?("noop")
|
78
|
+
end
|
79
|
+
|
80
|
+
# NOTE: Capybara doesn't do so well with this
|
81
|
+
#test "for with non existant field" do
|
82
|
+
#page.driver.get "/projects/#{@project.id}/resources/#{@resource.id}/transformations/for/gobbledegook"
|
83
|
+
#assert_equal 200, page.status_code
|
84
|
+
#assert_equal '', page.html
|
85
|
+
#end
|
86
|
+
|
87
|
+
test "index" do
|
88
|
+
field = @resource.fields_dataset[:name => 'foo']
|
89
|
+
t12n = Transformation.create!(:resource => @resource, :source_field => field, :transformer => @transformer)
|
90
|
+
|
91
|
+
visit "/projects/#{@project.id}/resources/#{@resource.id}/transformations"
|
92
|
+
assert_equal 200, page.status_code
|
93
|
+
end
|
94
|
+
|
95
|
+
test "preview" do
|
96
|
+
field = @resource.fields_dataset[:name => 'foo']
|
97
|
+
params = {
|
98
|
+
:transformer_id => @transformer.id.to_s,
|
99
|
+
:source_field_id => field.id.to_s,
|
100
|
+
:result_field_id => field.id.to_s
|
101
|
+
}
|
102
|
+
page.driver.post "/projects/#{@project.id}/resources/#{@resource.id}/transformations/preview", :transformation => params
|
103
|
+
assert_equal 200, page.status_code
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
module CouplerFunctionalTests
|
4
|
+
class TestTransformers < Coupler::Test::FunctionalTest
|
5
|
+
test "index" do
|
6
|
+
visit '/transformers'
|
7
|
+
assert_equal 200, page.status_code
|
8
|
+
end
|
9
|
+
|
10
|
+
test "new" do
|
11
|
+
visit '/transformers/new'
|
12
|
+
fill_in('Name', :with => 'noop')
|
13
|
+
select('String', :from => 'Allowed Field Types')
|
14
|
+
select('String', :from => 'Result Type')
|
15
|
+
fill_in('Code', :with => 'value')
|
16
|
+
click_button('Submit')
|
17
|
+
assert_equal "/transformers", page.current_path
|
18
|
+
assert Transformer[:name => 'noop']
|
19
|
+
end
|
20
|
+
|
21
|
+
test "failed create" do
|
22
|
+
visit '/transformers/new'
|
23
|
+
fill_in('Name', :with => '')
|
24
|
+
select('String', :from => 'Allowed Field Types')
|
25
|
+
select('String', :from => 'Result Type')
|
26
|
+
fill_in('Code', :with => 'value')
|
27
|
+
click_button('Submit')
|
28
|
+
assert page.has_content?("Name is not present")
|
29
|
+
end
|
30
|
+
|
31
|
+
test "edit" do
|
32
|
+
xformer = Transformer.create(:name => 'noop', :code => 'value', :allowed_types => %w{string}, :result_type => 'string')
|
33
|
+
visit "/transformers/#{xformer.id}/edit"
|
34
|
+
fill_in('Name', :with => 'foo')
|
35
|
+
click_button('Submit')
|
36
|
+
assert_equal "/transformers", page.current_path
|
37
|
+
xformer.reload
|
38
|
+
assert_equal 'foo', xformer.name
|
39
|
+
end
|
40
|
+
|
41
|
+
test "failed update" do
|
42
|
+
xformer = Transformer.create(:name => 'noop', :code => 'value', :allowed_types => %w{string}, :result_type => 'string')
|
43
|
+
visit "/transformers/#{xformer.id}/edit"
|
44
|
+
fill_in('Code', :with => 'foo(')
|
45
|
+
click_button('Submit')
|
46
|
+
assert page.has_content?("Code has errors")
|
47
|
+
end
|
48
|
+
|
49
|
+
#test "preview" do
|
50
|
+
#post "/transformers/preview", :transformer => { 'code' => 'value.downcase', 'allowed_types' => %w{string}, 'result_type' => 'string' }
|
51
|
+
#assert_equal 200, page.status_code
|
52
|
+
#end
|
53
|
+
|
54
|
+
#test "delete" do
|
55
|
+
#xformer = Transformer.create(:name => 'noop', :code => 'value', :allowed_types => %w{string}, :result_type => 'string')
|
56
|
+
#delete "/transformers/#{xformer.id}"
|
57
|
+
#assert_equal 0, Transformer.filter(:id => xformer.id).count
|
58
|
+
#assert last_response.redirect?, last_response.inspect
|
59
|
+
#assert_equal "http://example.org/transformers", page.current_path
|
60
|
+
#end
|
61
|
+
|
62
|
+
#test "show" do
|
63
|
+
#xformer = Transformer.create(:name => 'noop', :code => 'value', :allowed_types => %w{string}, :result_type => 'string')
|
64
|
+
#visit "/transformers/#{xformer.id}"
|
65
|
+
#assert_equal 200, page.status_code
|
66
|
+
#end
|
67
|
+
end
|
68
|
+
end
|