rocketjob_mission_control 4.3.0 → 6.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/Rakefile +12 -13
  4. data/app/assets/config/manifest.js +3 -0
  5. data/app/assets/javascripts/rocket_job_mission_control/application.js +2 -4
  6. data/app/assets/javascripts/rocket_job_mission_control/nested_fields.js +112 -0
  7. data/app/assets/stylesheets/rocket_job_mission_control/{application.scss → application.css} +9 -9
  8. data/app/assets/stylesheets/rocket_job_mission_control/base.css +420 -0
  9. data/app/assets/stylesheets/rocket_job_mission_control/{callout.scss → callout.css} +50 -52
  10. data/app/assets/stylesheets/rocket_job_mission_control/jobs.css +57 -0
  11. data/app/assets/stylesheets/rocket_job_mission_control/worker_processes.css +7 -0
  12. data/app/controllers/rocket_job_mission_control/application_controller.rb +2 -3
  13. data/app/controllers/rocket_job_mission_control/dirmon_entries_controller.rb +53 -33
  14. data/app/controllers/rocket_job_mission_control/jobs_controller.rb +78 -37
  15. data/app/controllers/rocket_job_mission_control/servers_controller.rb +32 -38
  16. data/app/datatables/rocket_job_mission_control/abstract_datatable.rb +8 -6
  17. data/app/datatables/rocket_job_mission_control/active_workers_datatable.rb +5 -5
  18. data/app/datatables/rocket_job_mission_control/dirmon_entries_datatable.rb +4 -4
  19. data/app/datatables/rocket_job_mission_control/jobs_datatable.rb +55 -62
  20. data/app/datatables/rocket_job_mission_control/servers_datatable.rb +13 -14
  21. data/app/helpers/rocket_job_mission_control/application_helper.rb +70 -52
  22. data/app/helpers/rocket_job_mission_control/dirmon_entries_helper.rb +8 -0
  23. data/app/helpers/rocket_job_mission_control/jobs_helper.rb +80 -13
  24. data/app/helpers/rocket_job_mission_control/pagination_helper.rb +1 -1
  25. data/app/helpers/rocket_job_mission_control/servers_helper.rb +6 -6
  26. data/app/helpers/rocket_job_mission_control/slices_helper.rb +2 -4
  27. data/app/models/rocket_job_mission_control/access_policy.rb +3 -4
  28. data/app/models/rocket_job_mission_control/authorization.rb +3 -2
  29. data/app/models/rocket_job_mission_control/dirmon_sanitizer.rb +68 -0
  30. data/app/models/rocket_job_mission_control/job_sanitizer.rb +48 -16
  31. data/app/models/rocket_job_mission_control/query.rb +2 -5
  32. data/app/views/rocket_job_mission_control/dirmon_entries/_form.html.erb +78 -42
  33. data/app/views/rocket_job_mission_control/dirmon_entries/_input_categories.html.erb +59 -0
  34. data/app/views/rocket_job_mission_control/dirmon_entries/_input_category_fields.html.erb +56 -0
  35. data/app/views/rocket_job_mission_control/dirmon_entries/_output_categories.html.erb +44 -0
  36. data/app/views/rocket_job_mission_control/dirmon_entries/_output_category_fields.html.erb +36 -0
  37. data/app/views/rocket_job_mission_control/dirmon_entries/_status.html.erb +22 -16
  38. data/app/views/rocket_job_mission_control/dirmon_entries/copy.html.erb +4 -0
  39. data/app/views/rocket_job_mission_control/dirmon_entries/edit.html.erb +7 -3
  40. data/app/views/rocket_job_mission_control/dirmon_entries/show.html.erb +8 -5
  41. data/app/views/rocket_job_mission_control/jobs/_attributes.html.erb +89 -0
  42. data/app/views/rocket_job_mission_control/jobs/_dates.html.erb +39 -0
  43. data/app/views/rocket_job_mission_control/jobs/_details.html.erb +86 -0
  44. data/app/views/rocket_job_mission_control/jobs/_exception.html.erb +33 -0
  45. data/app/views/rocket_job_mission_control/jobs/_exceptions.html.erb +1 -1
  46. data/app/views/rocket_job_mission_control/jobs/_input_categories.html.erb +126 -0
  47. data/app/views/rocket_job_mission_control/jobs/_input_category_fields.html.erb +56 -0
  48. data/app/views/rocket_job_mission_control/jobs/_output_categories.html.erb +60 -0
  49. data/app/views/rocket_job_mission_control/jobs/_output_category_fields.html.erb +36 -0
  50. data/app/views/rocket_job_mission_control/jobs/_retryable.html.erb +27 -0
  51. data/app/views/rocket_job_mission_control/jobs/_status.html.erb +21 -49
  52. data/app/views/rocket_job_mission_control/jobs/edit.html.erb +28 -0
  53. data/app/views/rocket_job_mission_control/jobs/edit_slice.html.erb +1 -1
  54. data/app/views/rocket_job_mission_control/jobs/exception.html.erb +1 -1
  55. data/app/views/rocket_job_mission_control/jobs/index.html.erb +24 -18
  56. data/app/views/rocket_job_mission_control/jobs/show.html.erb +32 -58
  57. data/app/views/rocket_job_mission_control/jobs/view_slice.html.erb +4 -4
  58. data/app/views/rocket_job_mission_control/servers/index.html.erb +2 -2
  59. data/config/initializers/assets.rb +5 -8
  60. data/config/locales/en.yml +3 -0
  61. data/config/routes.rb +24 -21
  62. data/lib/rocket_job_mission_control/engine.rb +6 -9
  63. data/lib/rocket_job_mission_control/version.rb +1 -1
  64. data/lib/rocketjob_mission_control.rb +1 -1
  65. data/test/compare_hashes.rb +1 -2
  66. data/test/controllers/rocket_job_mission_control/application_controller_test.rb +13 -21
  67. data/test/controllers/rocket_job_mission_control/dirmon_entries_controller_test.rb +124 -157
  68. data/test/controllers/rocket_job_mission_control/jobs_controller_test.rb +103 -127
  69. data/test/controllers/rocket_job_mission_control/servers_controller_test.rb +66 -103
  70. data/test/helpers/rocket_job_mission_control/application_helper_test.rb +13 -14
  71. data/test/helpers/rocket_job_mission_control/jobs_helper_test.rb +31 -31
  72. data/test/helpers/rocket_job_mission_control/pagination_helper_test.rb +7 -9
  73. data/test/helpers/rocket_job_mission_control/servers_helper_test.rb +15 -15
  74. data/test/helpers/rocket_job_mission_control/slices_helper_test.rb +8 -10
  75. data/test/models/rocket_job_mission_control/dirmon_sanitizer_test.rb +146 -0
  76. data/test/models/rocket_job_mission_control/job_sanitizer_test.rb +47 -42
  77. data/test/models/rocket_job_mission_control/query_test.rb +26 -28
  78. data/test/test_helper.rb +9 -15
  79. data/vendor/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  80. data/vendor/assets/fonts/glyphicons-halflings-regular.svg +288 -0
  81. data/vendor/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  82. data/vendor/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  83. data/vendor/assets/fonts/glyphicons-halflings-regular.woff2 +0 -0
  84. data/vendor/assets/javascripts/datatables.min.js +881 -0
  85. data/vendor/assets/stylesheets/bootstrap.min.css.erb +6 -0
  86. data/vendor/assets/stylesheets/datatables.min.css +141 -0
  87. metadata +61 -65
  88. data/app/assets/stylesheets/rocket_job_mission_control/base.scss +0 -436
  89. data/app/assets/stylesheets/rocket_job_mission_control/bootstrap_and_overrides.scss +0 -488
  90. data/app/assets/stylesheets/rocket_job_mission_control/jobs.scss +0 -72
  91. data/app/assets/stylesheets/rocket_job_mission_control/worker_processes.scss +0 -9
  92. data/vendor/assets/stylesheets/bootstrap.min.css +0 -6
@@ -1,22 +1,20 @@
1
- require_relative '../../test_helper'
1
+ require_relative "../../test_helper"
2
2
 
3
3
  module RocketJobMissionControl
4
4
  class PaginationHelperTest < ActionView::TestCase
5
5
  describe PaginationHelper do
6
-
7
- describe '#page_nav_disabled_class' do
8
- describe 'when the current position equals the boundary' do
9
- it 'returns disabled' do
10
- assert_equal 'disabled', page_nav_disabled_class(0, 0)
6
+ describe "#page_nav_disabled_class" do
7
+ describe "when the current position equals the boundary" do
8
+ it "returns disabled" do
9
+ assert_equal "disabled", page_nav_disabled_class(0, 0)
11
10
  end
12
11
  end
13
12
 
14
- describe 'when the current position is NOT equal to the boundary' do
15
- it 'returns blank' do
13
+ describe "when the current position is NOT equal to the boundary" do
14
+ it "returns blank" do
16
15
  assert page_nav_disabled_class(4, 0).blank?
17
16
  end
18
17
  end
19
-
20
18
  end
21
19
  end
22
20
  end
@@ -1,12 +1,12 @@
1
- require_relative '../../test_helper'
1
+ require_relative "../../test_helper"
2
2
 
3
3
  module RocketJobMissionControl
4
4
  ServersHelper.include(RocketJobMissionControl::ApplicationHelper)
5
5
 
6
6
  class ServersHelperTest < ActionView::TestCase
7
7
  describe ServersHelper do
8
- describe '#server_card_class' do
9
- describe 'when the server is running' do
8
+ describe "#server_card_class" do
9
+ describe "when the server is running" do
10
10
  let(:server) do
11
11
  server = RocketJob::Server.new
12
12
  server.started
@@ -14,12 +14,12 @@ module RocketJobMissionControl
14
14
  server
15
15
  end
16
16
 
17
- it 'returns the correct class' do
18
- assert_equal 'callout-success', server_card_class(server)
17
+ it "returns the correct class" do
18
+ assert_equal "callout-success", server_card_class(server)
19
19
  end
20
20
  end
21
21
 
22
- describe 'when the server is a zombie' do
22
+ describe "when the server is a zombie" do
23
23
  let(:server) do
24
24
  server = RocketJob::Server.new
25
25
  server.started
@@ -27,14 +27,14 @@ module RocketJobMissionControl
27
27
  server
28
28
  end
29
29
 
30
- it 'returns the correct class' do
31
- assert_equal 'callout-zombie', server_card_class(server)
30
+ it "returns the correct class" do
31
+ assert_equal "callout-zombie", server_card_class(server)
32
32
  end
33
33
  end
34
34
  end
35
35
 
36
- describe '#server_icon' do
37
- describe 'when the server is running' do
36
+ describe "#server_icon" do
37
+ describe "when the server is running" do
38
38
  let(:server) do
39
39
  server = RocketJob::Server.new
40
40
  server.started
@@ -42,12 +42,12 @@ module RocketJobMissionControl
42
42
  server
43
43
  end
44
44
 
45
- it 'returns the correct class' do
46
- assert_equal 'fas fa-play running', server_icon(server)
45
+ it "returns the correct class" do
46
+ assert_equal "fas fa-play running", server_icon(server)
47
47
  end
48
48
  end
49
49
 
50
- describe 'when the server is a zombie' do
50
+ describe "when the server is a zombie" do
51
51
  let(:server) do
52
52
  server = RocketJob::Server.new
53
53
  server.started
@@ -55,8 +55,8 @@ module RocketJobMissionControl
55
55
  server
56
56
  end
57
57
 
58
- it 'returns the correct class' do
59
- assert_equal 'fas fa-hourglass zombie', server_icon(server)
58
+ it "returns the correct class" do
59
+ assert_equal "fas fa-hourglass zombie", server_icon(server)
60
60
  end
61
61
  end
62
62
  end
@@ -1,29 +1,27 @@
1
- require_relative '../../test_helper'
1
+ require_relative "../../test_helper"
2
2
 
3
3
  module RocketJobMissionControl
4
4
  SlicesHelper.include(RocketJobMissionControl::ApplicationHelper)
5
5
  class SlicesHelperTest < ActionView::TestCase
6
6
  describe SlicesHelper do
7
+ describe "#display_slice_info" do
8
+ let(:slice) { {id: 42, name: "test"} }
7
9
 
8
- describe '#display_slice_info' do
9
- let(:slice) { {id: 42, name: 'test'} }
10
-
11
- describe 'when encrypted' do
12
- it 'only shows encrypted text' do
13
- assert_equal 'encrypted', display_slice_info(slice, true)
10
+ describe "when encrypted" do
11
+ it "only shows encrypted text" do
12
+ assert_equal "encrypted", display_slice_info(slice, true)
14
13
  end
15
14
  end
16
15
 
17
- describe 'when not encrypted' do
16
+ describe "when not encrypted" do
18
17
  it "does not return 'encrypted'" do
19
- refute_equal 'encrypted', display_slice_info([1, 2], false)
18
+ refute_equal "encrypted", display_slice_info([1, 2], false)
20
19
  end
21
20
 
22
21
  it "displays the slice info" do
23
22
  assert_equal "[<br /> 1,<br /> 2<br />]", display_slice_info([1, 2], false)
24
23
  end
25
24
  end
26
-
27
25
  end
28
26
  end
29
27
  end
@@ -0,0 +1,146 @@
1
+ require_relative "../../test_helper"
2
+
3
+ class DirmonSanitizerTest < Minitest::Test
4
+ describe RocketJobMissionControl::DirmonSanitizer do
5
+ class SampleJob < RocketJob::Job
6
+ include RocketJob::Batch
7
+
8
+ input_category format: :csv
9
+ output_category format: :csv
10
+ output_category name: :errors, format: :csv
11
+
12
+ field :client_name, type: String, user_editable: true
13
+ field :zip_code, type: Integer, user_editable: true
14
+
15
+ self.destroy_on_complete = false
16
+
17
+ def perform(record)
18
+ record
19
+ end
20
+ end
21
+
22
+ let :sample_job do
23
+ SampleJob.new
24
+ end
25
+
26
+ let :job_class_name do
27
+ SampleJob.name
28
+ end
29
+
30
+ let :properties do
31
+ {
32
+ client_name: "Jack",
33
+ zip_code: 12345,
34
+ input_categories_attributes: {0 => {format: :json}},
35
+ output_categories_attributes: {0 => {name: :errors, format: :json}}
36
+ }
37
+ end
38
+
39
+ let :sanitized_properties do
40
+ {
41
+ client_name: "Jill",
42
+ zip_code: 45673,
43
+ input_categories: [{name: "main", format: "json", slice_size: 100, skip_unknown: "false"}],
44
+ output_categories: [{name: "errors", format: "json"}]
45
+ }
46
+ end
47
+
48
+ let :dirmon_entry do
49
+ RocketJob::DirmonEntry.new(
50
+ name: "Test",
51
+ job_class_name: job_class_name,
52
+ pattern: "the_path",
53
+ properties: properties
54
+ )
55
+ end
56
+
57
+ describe ".sanitize" do
58
+ it "passes permissible fields" do
59
+ params = {
60
+ name: "Test2",
61
+ job_class_name: job_class_name,
62
+ pattern: "another/path",
63
+ archive_directory: "archive/path",
64
+ properties: properties
65
+ }
66
+ cleansed = RocketJobMissionControl::DirmonSanitizer.sanitize(params, SampleJob, dirmon_entry)
67
+ assert_equal 0, dirmon_entry.errors.count
68
+ expected = {:archive_directory => "archive/path", :job_class_name => "DirmonSanitizerTest::SampleJob", :name => "Test2", :pattern => "another/path", :properties => {:client_name => "Jack", :zip_code => 12345, :input_categories => [{:format => :json}], :output_categories => [{:name => :errors, :format => :json}]}}
69
+ assert_equal expected, cleansed
70
+ end
71
+
72
+ it "strips blank values" do
73
+ params = {
74
+ name: "",
75
+ job_class_name: "",
76
+ pattern: "",
77
+ archive_directory: "",
78
+ bad_field: "Not permissible",
79
+ properties: {
80
+ client_name: "",
81
+ zip_code: "",
82
+ input_categories_attributes: {0 => {format: ""}},
83
+ output_categories_attributes: {0 => {name: "", format: ""}}
84
+ }
85
+ }
86
+ cleansed = RocketJobMissionControl::DirmonSanitizer.sanitize(params, SampleJob, dirmon_entry)
87
+ assert_equal 0, dirmon_entry.errors.count
88
+ expected = {}
89
+ assert_equal expected, cleansed
90
+ end
91
+ end
92
+
93
+ describe ".diff_category" do
94
+ it "returns only different values" do
95
+ default_category = sample_job.input_category
96
+ properties = {
97
+ name: "main",
98
+ format: "psv",
99
+ slice_size: 100,
100
+ skip_unknown: false
101
+ }
102
+ updated_category = RocketJob::Category::Input.new(properties)
103
+
104
+ diff = RocketJobMissionControl::DirmonSanitizer.diff_category(properties, updated_category, default_category)
105
+
106
+ expected = {:format => "psv", :name => "main"}
107
+ assert_equal expected, diff
108
+ end
109
+
110
+ it "is empty with no changes" do
111
+ default_category = sample_job.input_category
112
+ properties = {
113
+ name: "main",
114
+ format: "csv",
115
+ slice_size: 100,
116
+ skip_unknown: false
117
+ }
118
+ updated_category = RocketJob::Category::Input.new(properties)
119
+
120
+ diff = RocketJobMissionControl::DirmonSanitizer.diff_category(properties, updated_category, default_category)
121
+
122
+ expected = {}
123
+ assert_equal expected, diff
124
+ end
125
+
126
+ it "empty" do
127
+ default_category = sample_job.input_category
128
+ properties = {}
129
+ updated_category = RocketJob::Category::Input.new(properties)
130
+
131
+ diff = RocketJobMissionControl::DirmonSanitizer.diff_category(properties, updated_category, default_category)
132
+
133
+ expected = {}
134
+ assert_equal expected, diff
135
+ end
136
+ end
137
+
138
+ describe ".diff_properties" do
139
+ it "returns only different values" do
140
+ diff = RocketJobMissionControl::DirmonSanitizer.diff_properties(sanitized_properties, dirmon_entry)
141
+ expected = {:client_name => "Jill", :zip_code => 45673, :input_categories => [{:format => "json", :name => "main"}], :output_categories => [{:format => "json", :name => "errors"}]}
142
+ assert_equal expected, diff
143
+ end
144
+ end
145
+ end
146
+ end
@@ -1,4 +1,4 @@
1
- require_relative '../../test_helper'
1
+ require_relative "../../test_helper"
2
2
 
3
3
  class JobSanitizerTest < Minitest::Test
4
4
  describe RocketJobMissionControl::JobSanitizer do
@@ -10,83 +10,88 @@ class JobSanitizerTest < Minitest::Test
10
10
  after do
11
11
  end
12
12
 
13
- describe '.sanitize' do
14
- it 'passes permissible fields' do
13
+ describe ".sanitize" do
14
+ it "passes permissible fields" do
15
15
  properties = {
16
- string: 'hello',
17
- integer: '12',
18
- symbol: 'name',
19
- secure: 'Not permissible'
16
+ string: "hello",
17
+ integer: "12",
18
+ symbol: "name",
19
+ secure: "Not permissible"
20
20
  }
21
- cleansed = RocketJobMissionControl::JobSanitizer.sanitize(properties, @job.class, @job, false)
21
+ cleansed = RocketJobMissionControl::JobSanitizer.sanitize(properties, @job.class, @job, false)
22
22
  assert_equal 0, @job.errors.count
23
23
  assert_equal 3, cleansed.count
24
- assert_equal({:string => "hello", :integer => "12", :symbol => "name"}, cleansed)
24
+ assert_equal({string: "hello", integer: "12", symbol: "name"}, cleansed)
25
25
  end
26
26
 
27
- it 'strips blank values' do
27
+ it "strips blank values" do
28
28
  properties = {
29
- string: '',
30
- integer: '',
31
- symbol: '',
32
- secure: 'Not permissible',
33
- log_level: ''
29
+ string: "",
30
+ integer: "",
31
+ symbol: "",
32
+ secure: "Not permissible",
33
+ log_level: ""
34
34
  }
35
- cleansed = RocketJobMissionControl::JobSanitizer.sanitize(properties, @job.class, @job, false)
35
+ cleansed = RocketJobMissionControl::JobSanitizer.sanitize(properties, @job.class, @job, false)
36
36
  assert_equal 0, @job.errors.count
37
37
  assert_equal 0, cleansed.count
38
38
  end
39
39
 
40
- it 'nils blank values' do
40
+ it "nils blank values" do
41
41
  properties = {
42
- string: '',
43
- integer: '',
44
- symbol: '',
45
- hash_field: '',
46
- secure: 'Not permissible',
47
- log_level: ''
42
+ string: "",
43
+ integer: "",
44
+ symbol: "",
45
+ hash_field: "",
46
+ secure: "Not permissible",
47
+ log_level: ""
48
48
  }
49
- cleansed = RocketJobMissionControl::JobSanitizer.sanitize(properties, @job.class, @job, true)
49
+ cleansed = RocketJobMissionControl::JobSanitizer.sanitize(properties, @job.class, @job, true)
50
50
  assert_equal 0, @job.errors.count, @job.errors
51
51
  assert_equal 5, cleansed.count
52
52
  assert_equal({log_level: nil, hash_field: nil, integer: nil, string: nil, symbol: nil}, cleansed)
53
53
  end
54
54
 
55
- it 'parses JSON' do
55
+ it "parses JSON" do
56
56
  properties = {
57
- string: '',
58
- secure: 'Not permissible',
57
+ string: "",
58
+ secure: "Not permissible",
59
59
  hash_field: '{"state":"FL"}'
60
60
  }
61
- cleansed = RocketJobMissionControl::JobSanitizer.sanitize(properties, @job.class, @job, false)
61
+ cleansed = RocketJobMissionControl::JobSanitizer.sanitize(properties, @job.class, @job, false)
62
62
  assert_equal 0, @job.errors.count
63
63
  assert_equal 1, cleansed.count
64
- assert_equal({'state' => 'FL'}, cleansed[:hash_field])
64
+ assert_equal({"state" => "FL"}, cleansed[:hash_field])
65
65
  end
66
66
 
67
- it 'sets the error for invalid JSON' do
67
+ it "sets the error for invalid JSON" do
68
68
  properties = {
69
- string: 'hello',
70
- secure: 'Not permissible',
71
- hash_field: '{ bad json }'
69
+ string: "hello",
70
+ secure: "Not permissible",
71
+ hash_field: "{ bad json }"
72
72
  }
73
- cleansed = RocketJobMissionControl::JobSanitizer.sanitize(properties, @job.class, @job, false)
73
+ cleansed = RocketJobMissionControl::JobSanitizer.sanitize(properties, @job.class, @job, false)
74
74
  assert_equal 1, @job.errors.count
75
- assert first = @job.errors.first
76
- assert_equal first.first, :properties
77
- assert first.second.include?('unexpected token'), first
78
- assert_equal({hash_field: "{ bad json }", string: 'hello'}, cleansed)
75
+ if Rails.version.to_f >= 6.1
76
+ assert error = @job.errors.first
77
+ assert_equal error.attribute, :properties
78
+ assert error.message.include?("unexpected token"), error
79
+ else
80
+ assert error = @job.errors.first
81
+ assert_equal error.first, :properties
82
+ assert error.second.include?("unexpected token"), error
83
+ end
84
+ assert_equal({hash_field: "{ bad json }", string: "hello"}, cleansed)
79
85
  end
80
86
 
81
- it 'Keeps empty JSON Hash' do
87
+ it "Keeps empty JSON Hash" do
82
88
  properties = {
83
- hash_field: '{ }'
89
+ hash_field: "{ }"
84
90
  }
85
- cleansed = RocketJobMissionControl::JobSanitizer.sanitize(properties, @job.class, @job, false)
91
+ cleansed = RocketJobMissionControl::JobSanitizer.sanitize(properties, @job.class, @job, false)
86
92
  assert_equal 0, @job.errors.count
87
93
  assert_equal({hash_field: {}}, cleansed)
88
94
  end
89
95
  end
90
-
91
96
  end
92
97
  end
@@ -1,7 +1,6 @@
1
- require_relative '../../test_helper'
1
+ require_relative "../../test_helper"
2
2
 
3
3
  class QueryTest < Minitest::Test
4
-
5
4
  class NoopJob < RocketJob::Job
6
5
  field :record_count, type: Integer, default: 0
7
6
  def perform(record)
@@ -18,56 +17,56 @@ class QueryTest < Minitest::Test
18
17
  NoopJob.delete_all
19
18
  end
20
19
 
21
- describe '#query' do
22
- it 'sorts ascending by id' do
20
+ describe "#query" do
21
+ it "sorts ascending by id" do
23
22
  count = 0
24
23
  previous_id = nil
25
24
  RocketJobMissionControl::Query.new(NoopJob.all, _id: 1).query.each do |job|
26
25
  assert(previous_id < job.id, "Wrong sort order. #{previous_id} < #{job.id}") if previous_id
27
26
  previous_id = job.id
28
- count += 1
27
+ count += 1
29
28
  end
30
29
  assert_equal @jobs.count, count
31
30
  end
32
31
 
33
- it 'sorts descending by id' do
32
+ it "sorts descending by id" do
34
33
  count = 0
35
34
  previous_id = nil
36
35
  RocketJobMissionControl::Query.new(NoopJob.all, _id: -1).query.each do |job|
37
36
  assert(previous_id > job.id, "Wrong sort order. #{previous_id} > #{job.id}") if previous_id
38
37
  previous_id = job.id
39
- count += 1
38
+ count += 1
40
39
  end
41
40
  assert_equal @jobs.count, count
42
41
  end
43
42
 
44
- it 'sorts ascending by description' do
43
+ it "sorts ascending by description" do
45
44
  count = 0
46
45
  previous = nil
47
46
  RocketJobMissionControl::Query.new(NoopJob.all, description: 1).query.each do |job|
48
47
  assert(previous < job.description, "Wrong sort order. #{previous} < #{job.description}") if previous
49
48
  previous = job.description
50
- count += 1
49
+ count += 1
51
50
  end
52
51
  assert_equal @jobs.count, count
53
52
  end
54
53
 
55
- it 'sorts ascending by id with a search' do
54
+ it "sorts ascending by id with a search" do
56
55
  q = RocketJobMissionControl::Query.new(NoopJob.all, description: 1)
57
56
  q.search_columns << :description
58
- q.search_term = 'Job 1'
57
+ q.search_term = "Job 1"
59
58
 
60
59
  count = 0
61
60
  previous_id = nil
62
61
  q.query.each do |job|
63
62
  assert(previous_id < job.id, "Wrong sort order. #{previous_id} < #{job.id}") if previous_id
64
63
  previous_id = job.id
65
- count += 1
64
+ count += 1
66
65
  end
67
66
  assert_equal 2, count
68
67
  end
69
68
 
70
- it 'paginates with sort' do
69
+ it "paginates with sort" do
71
70
  q = RocketJobMissionControl::Query.new(NoopJob.all, _id: 1)
72
71
  q.start = 1
73
72
  q.page_size = 3
@@ -77,15 +76,15 @@ class QueryTest < Minitest::Test
77
76
  q.query.each do |job|
78
77
  assert(previous_id < job.id, "Wrong sort order. #{previous_id} < #{job.id}") if previous_id
79
78
  previous_id = job.id
80
- count += 1
79
+ count += 1
81
80
  end
82
81
  assert_equal 3, count
83
82
  end
84
83
 
85
- it 'paginates with sort and search' do
84
+ it "paginates with sort and search" do
86
85
  q = RocketJobMissionControl::Query.new(NoopJob.all, _id: 1)
87
86
  q.search_columns << :description
88
- q.search_term = 'Job'
87
+ q.search_term = "Job"
89
88
  q.start = 1
90
89
  q.page_size = 3
91
90
 
@@ -94,12 +93,12 @@ class QueryTest < Minitest::Test
94
93
  q.query.each do |job|
95
94
  assert(previous_id < job.id, "Wrong sort order. #{previous_id} < #{job.id}") if previous_id
96
95
  previous_id = job.id
97
- count += 1
96
+ count += 1
98
97
  end
99
98
  assert_equal 3, count
100
99
  end
101
100
 
102
- it 'sorts ascending by record_count' do
101
+ it "sorts ascending by record_count" do
103
102
  count = 0
104
103
  previous = nil
105
104
  RocketJobMissionControl::Query.new(NoopJob.all, record_count: 1).query.each do |job|
@@ -110,7 +109,7 @@ class QueryTest < Minitest::Test
110
109
  assert_equal @jobs.count, count
111
110
  end
112
111
 
113
- it 'sorts descending by record_count' do
112
+ it "sorts descending by record_count" do
114
113
  count = 0
115
114
  previous = nil
116
115
  RocketJobMissionControl::Query.new(NoopJob.all, record_count: -1).query.each do |job|
@@ -122,15 +121,15 @@ class QueryTest < Minitest::Test
122
121
  end
123
122
  end
124
123
 
125
- describe '#count' do
126
- it 'without search' do
124
+ describe "#count" do
125
+ it "without search" do
127
126
  assert_equal 10, RocketJobMissionControl::Query.new(NoopJob.all, description: 1).count
128
127
  end
129
128
 
130
- it 'with search and pagination' do
129
+ it "with search and pagination" do
131
130
  q = RocketJobMissionControl::Query.new(NoopJob.all, description: 1)
132
131
  q.search_columns << :description
133
- q.search_term = 'Job 1'
132
+ q.search_term = "Job 1"
134
133
  # Pagination should be ignored
135
134
  q.start = 1
136
135
  q.page_size = 1
@@ -138,21 +137,20 @@ class QueryTest < Minitest::Test
138
137
  end
139
138
  end
140
139
 
141
- describe '#unfiltered_count' do
142
- it 'without search' do
140
+ describe "#unfiltered_count" do
141
+ it "without search" do
143
142
  assert_equal 10, RocketJobMissionControl::Query.new(NoopJob.all, description: 1).unfiltered_count
144
143
  end
145
144
 
146
- it 'with search and pagination' do
145
+ it "with search and pagination" do
147
146
  q = RocketJobMissionControl::Query.new(NoopJob.all, description: 1)
148
147
  q.search_columns << :description
149
- q.search_term = 'Job 1'
148
+ q.search_term = "Job 1"
150
149
  # Pagination should be ignored
151
150
  q.start = 1
152
151
  q.page_size = 3
153
152
  assert_equal 10, q.unfiltered_count
154
153
  end
155
154
  end
156
-
157
155
  end
158
156
  end