spout 0.12.1 → 0.13.0.beta1

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.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/README.md +5 -5
  4. data/Rakefile +4 -4
  5. data/bin/spout +1 -1
  6. data/lib/spout/commands/coverage.rb +18 -18
  7. data/lib/spout/commands/deploy.rb +89 -89
  8. data/lib/spout/commands/exporter.rb +16 -16
  9. data/lib/spout/commands/graphs.rb +37 -37
  10. data/lib/spout/commands/help.rb +1 -1
  11. data/lib/spout/commands/importer.rb +59 -57
  12. data/lib/spout/commands/outliers.rb +17 -17
  13. data/lib/spout/commands/project_generator.rb +25 -25
  14. data/lib/spout/commands/update.rb +38 -38
  15. data/lib/spout/helpers/array_statistics.rb +7 -7
  16. data/lib/spout/helpers/chart_types.rb +2 -2
  17. data/lib/spout/helpers/config_reader.rb +21 -20
  18. data/lib/spout/helpers/framework.rb +11 -11
  19. data/lib/spout/helpers/iterators.rb +1 -3
  20. data/lib/spout/helpers/json_loader.rb +2 -4
  21. data/lib/spout/helpers/json_request.rb +11 -11
  22. data/lib/spout/helpers/number_helper.rb +1 -1
  23. data/lib/spout/helpers/quietly.rb +1 -1
  24. data/lib/spout/helpers/semantic.rb +1 -1
  25. data/lib/spout/helpers/send_file.rb +14 -14
  26. data/lib/spout/helpers/subject_loader.rb +24 -24
  27. data/lib/spout/helpers/table_formatting.rb +12 -12
  28. data/lib/spout/models/coverage_result.rb +8 -8
  29. data/lib/spout/models/dictionary.rb +10 -10
  30. data/lib/spout/models/domain.rb +7 -7
  31. data/lib/spout/models/empty.rb +1 -1
  32. data/lib/spout/models/form.rb +6 -6
  33. data/lib/spout/models/graphables/choices_vs_choices.rb +3 -5
  34. data/lib/spout/models/graphables/choices_vs_numeric.rb +4 -6
  35. data/lib/spout/models/graphables/default.rb +6 -6
  36. data/lib/spout/models/graphables/histogram.rb +4 -4
  37. data/lib/spout/models/graphables/numeric_vs_choices.rb +1 -1
  38. data/lib/spout/models/graphables/numeric_vs_numeric.rb +6 -6
  39. data/lib/spout/models/graphables.rb +14 -14
  40. data/lib/spout/models/outlier_result.rb +16 -18
  41. data/lib/spout/models/record.rb +3 -3
  42. data/lib/spout/models/tables/choices_vs_choices.rb +11 -11
  43. data/lib/spout/models/tables/choices_vs_numeric.rb +8 -8
  44. data/lib/spout/models/tables/default.rb +5 -5
  45. data/lib/spout/models/tables/numeric_vs_choices.rb +7 -7
  46. data/lib/spout/models/tables/numeric_vs_numeric.rb +7 -7
  47. data/lib/spout/models/tables.rb +11 -11
  48. data/lib/spout/models/variable.rb +14 -14
  49. data/lib/spout/tasks/engine.rake +4 -4
  50. data/lib/spout/templates/CHANGELOG.md.erb +1 -1
  51. data/lib/spout/templates/Gemfile +2 -2
  52. data/lib/spout/templates/Rakefile +1 -1
  53. data/lib/spout/templates/test/dictionary_test.rb +3 -3
  54. data/lib/spout/templates/test/test_helper.rb +1 -1
  55. data/lib/spout/tests/domain_existence_validation.rb +6 -6
  56. data/lib/spout/tests/domain_format.rb +1 -1
  57. data/lib/spout/tests/domain_name_format.rb +3 -3
  58. data/lib/spout/tests/domain_name_uniqueness.rb +2 -2
  59. data/lib/spout/tests/domain_specified.rb +1 -3
  60. data/lib/spout/tests/form_existence_validation.rb +2 -4
  61. data/lib/spout/tests/form_name_format.rb +3 -3
  62. data/lib/spout/tests/form_name_match.rb +1 -1
  63. data/lib/spout/tests/json_helper.rb +1 -1
  64. data/lib/spout/tests/json_validation.rb +0 -2
  65. data/lib/spout/tests/variable_name_format.rb +3 -3
  66. data/lib/spout/tests/variable_name_match.rb +1 -3
  67. data/lib/spout/tests/variable_name_uniqueness.rb +2 -2
  68. data/lib/spout/tests/variable_type_validation.rb +2 -2
  69. data/lib/spout/tests.rb +30 -30
  70. data/lib/spout/version.rb +4 -4
  71. data/lib/spout/views/index.html.erb +15 -15
  72. data/lib/spout/views/outliers.html.erb +8 -8
  73. data/lib/spout.rb +26 -26
  74. data/spout.gemspec +22 -22
  75. metadata +5 -5
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spout/models/tables/default'
4
- require 'spout/helpers/array_statistics'
3
+ require "spout/models/tables/default"
4
+ require "spout/helpers/array_statistics"
5
5
 
6
6
  module Spout
7
7
  module Models
@@ -18,16 +18,16 @@ module Spout
18
18
  "#{bucket.min} to #{bucket.max} #{@chart_variable.units}"
19
19
  end
20
20
 
21
- [[''] + categories + ['Total']]
21
+ [[""] + categories + ["Total"]]
22
22
  end
23
23
 
24
24
  def footers
25
25
  total_values = [:quartile_one, :quartile_two, :quartile_three, :quartile_four].collect do |quartile|
26
- { text: Spout::Helpers::TableFormatting.format_number(@filtered_subjects.send(quartile).count, :count), style: 'font-weight:bold' }
26
+ { text: Spout::Helpers::TableFormatting.format_number(@filtered_subjects.send(quartile).count, :count), style: "font-weight:bold" }
27
27
  end
28
28
 
29
29
  [
30
- [{ text: 'Total', style: 'font-weight:bold' }] + total_values + [{ text: Spout::Helpers::TableFormatting.format_number(@filtered_subjects.count, :count), style: 'font-weight:bold' }]
30
+ [{ text: "Total", style: "font-weight:bold" }] + total_values + [{ text: Spout::Helpers::TableFormatting.format_number(@filtered_subjects.count, :count), style: "font-weight:bold" }]
31
31
  ]
32
32
  end
33
33
 
@@ -40,15 +40,15 @@ module Spout
40
40
  Spout::Helpers::TableFormatting.format_number(count, :count)
41
41
  end
42
42
 
43
- [option.display_name] + data + [{ text: Spout::Helpers::TableFormatting.format_number(row_subjects.count, :count), style: 'font-weight:bold' }]
43
+ [option.display_name] + data + [{ text: Spout::Helpers::TableFormatting.format_number(row_subjects.count, :count), style: "font-weight:bold" }]
44
44
  end
45
45
 
46
46
  if @filtered_subjects.count { |s| s.send(@variable.id).is_a?(Spout::Models::Empty) } > 0
47
47
  unknown_values = [:quartile_one, :quartile_two, :quartile_three, :quartile_four].collect do |quartile|
48
48
  count = @filtered_subjects.send(quartile).count { |s| s.send(@variable.id).is_a?(Spout::Models::Empty) }
49
- { text: Spout::Helpers::TableFormatting.format_number(count, :count), class: 'text-muted' }
49
+ { text: Spout::Helpers::TableFormatting.format_number(count, :count), class: "text-muted" }
50
50
  end
51
- rows_result << [{ text: 'Unknown', class: 'text-muted'}] + unknown_values + [{ text: Spout::Helpers::TableFormatting.format_number(@filtered_subjects.count { |s| s.send(@variable.id).is_a?(Spout::Models::Empty) }, :count), style: 'font-weight:bold', class: 'text-muted' }]
51
+ rows_result << [{ text: "Unknown", class: "text-muted"}] + unknown_values + [{ text: Spout::Helpers::TableFormatting.format_number(@filtered_subjects.count { |s| s.send(@variable.id).is_a?(Spout::Models::Empty) }, :count), style: "font-weight:bold", class: "text-muted" }]
52
52
  end
53
53
  rows_result
54
54
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spout/models/variable'
4
- require 'spout/helpers/table_formatting'
3
+ require "spout/models/variable"
4
+ require "spout/helpers/table_formatting"
5
5
 
6
6
  module Spout
7
7
  module Models
@@ -34,9 +34,9 @@ module Spout
34
34
  def valid?
35
35
  if @variable.nil? || @chart_variable.nil? || @values_unique == []
36
36
  false
37
- elsif @variable.type == 'choices' && @variable.domain.options == []
37
+ elsif @variable.type == "choices" && @variable.domain.options == []
38
38
  false
39
- elsif @chart_variable.type == 'choices' && @chart_variable.domain.options == []
39
+ elsif @chart_variable.type == "choices" && @chart_variable.domain.options == []
40
40
  false
41
41
  else
42
42
  true
@@ -44,7 +44,7 @@ module Spout
44
44
  end
45
45
 
46
46
  def title
47
- ''
47
+ ""
48
48
  end
49
49
 
50
50
  def headers
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spout/models/tables/default'
4
- require 'spout/helpers/array_statistics'
3
+ require "spout/models/tables/default"
4
+ require "spout/helpers/array_statistics"
5
5
 
6
6
  module Spout
7
7
  module Models
@@ -12,18 +12,18 @@ module Spout
12
12
  end
13
13
 
14
14
  def headers
15
- [[''] + Spout::Helpers::ArrayStatistics.calculations.collect(&:first) + ['Total']]
15
+ [[""] + Spout::Helpers::ArrayStatistics.calculations.collect(&:first) + ["Total"]]
16
16
  end
17
17
 
18
18
  def footers
19
19
  return [] unless @totals
20
20
  total_values = Spout::Helpers::ArrayStatistics.calculations.collect do |_calculation_label, calculation_method, calculation_type, calculation_format|
21
21
  total_count = @filtered_subjects.collect(&@variable.id.to_sym).send(calculation_method)
22
- { text: Spout::Helpers::TableFormatting.format_number(total_count, calculation_type, calculation_format), style: 'font-weight:bold' }
22
+ { text: Spout::Helpers::TableFormatting.format_number(total_count, calculation_type, calculation_format), style: "font-weight:bold" }
23
23
  end
24
24
 
25
25
  [
26
- [{ text: 'Total', style: 'font-weight:bold' }] + total_values + [{ text: Spout::Helpers::TableFormatting.format_number(@filtered_subjects.count, :count), style: 'font-weight:bold' }]
26
+ [{ text: "Total", style: "font-weight:bold" }] + total_values + [{ text: Spout::Helpers::TableFormatting.format_number(@filtered_subjects.count, :count), style: "font-weight:bold" }]
27
27
  ]
28
28
  end
29
29
 
@@ -33,10 +33,10 @@ module Spout
33
33
 
34
34
  row_cells = Spout::Helpers::ArrayStatistics.calculations.collect do |_calculation_label, calculation_method, calculation_type, calculation_format|
35
35
  count = row_subjects.collect(&@variable.id.to_sym).send(calculation_method)
36
- (count == 0 && calculation_method == :count) ? { text: '-', class: 'text-muted' } : Spout::Helpers::TableFormatting.format_number(count, calculation_type, calculation_format)
36
+ (count == 0 && calculation_method == :count) ? { text: "-", class: "text-muted" } : Spout::Helpers::TableFormatting.format_number(count, calculation_type, calculation_format)
37
37
  end
38
38
 
39
- [option.display_name] + row_cells + [{ text: Spout::Helpers::TableFormatting.format_number(row_subjects.count, :count), style: 'font-weight:bold' }]
39
+ [option.display_name] + row_cells + [{ text: Spout::Helpers::TableFormatting.format_number(row_subjects.count, :count), style: "font-weight:bold" }]
40
40
  end
41
41
  end
42
42
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spout/models/tables/default'
4
- require 'spout/helpers/array_statistics'
3
+ require "spout/models/tables/default"
4
+ require "spout/helpers/array_statistics"
5
5
 
6
6
  module Spout
7
7
  module Models
@@ -12,17 +12,17 @@ module Spout
12
12
  end
13
13
 
14
14
  def headers
15
- [[''] + Spout::Helpers::ArrayStatistics.calculations.collect(&:first) + ['Total']]
15
+ [[""] + Spout::Helpers::ArrayStatistics.calculations.collect(&:first) + ["Total"]]
16
16
  end
17
17
 
18
18
  def footers
19
19
  total_values = Spout::Helpers::ArrayStatistics.calculations.collect do |_calculation_label, calculation_method, calculation_type, calculation_format|
20
20
  total_count = @filtered_subjects.collect(&@variable.id.to_sym).send(calculation_method)
21
- { text: Spout::Helpers::TableFormatting.format_number(total_count, calculation_type, calculation_format), style: 'font-weight:bold' }
21
+ { text: Spout::Helpers::TableFormatting.format_number(total_count, calculation_type, calculation_format), style: "font-weight:bold" }
22
22
  end
23
23
 
24
24
  [
25
- [{ text: 'Total', style: 'font-weight:bold' }] + total_values + [{ text: Spout::Helpers::TableFormatting.format_number(@filtered_subjects.count, :count), style: 'font-weight:bold' }]
25
+ [{ text: "Total", style: "font-weight:bold" }] + total_values + [{ text: Spout::Helpers::TableFormatting.format_number(@filtered_subjects.count, :count), style: "font-weight:bold" }]
26
26
  ]
27
27
  end
28
28
 
@@ -36,7 +36,7 @@ module Spout
36
36
 
37
37
  row_name = get_row_name(quartile, bucket, row_subjects)
38
38
 
39
- [row_name] + data + [{ text: Spout::Helpers::TableFormatting.format_number(row_subjects.count, :count), style: 'font-weight:bold' }]
39
+ [row_name] + data + [{ text: Spout::Helpers::TableFormatting.format_number(row_subjects.count, :count), style: "font-weight:bold" }]
40
40
  end
41
41
  end
42
42
 
@@ -44,7 +44,7 @@ module Spout
44
44
 
45
45
  def get_row_name(quartile, bucket, row_subjects)
46
46
  if row_subjects.size == 0
47
- quartile.to_s.capitalize.gsub('_one', ' One').gsub('_two', ' Two').gsub('_three', ' Three').gsub('_four', ' Four')
47
+ quartile.to_s.capitalize.gsub("_one", " One").gsub("_two", " Two").gsub("_three", " Three").gsub("_four", " Four")
48
48
  else
49
49
  "#{bucket.collect(&@chart_variable.id.to_sym).min} to #{bucket.collect(&@chart_variable.id.to_sym).max} #{@chart_variable.units}"
50
50
  end
@@ -1,20 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spout/models/tables/default'
4
- require 'spout/models/tables/numeric_vs_choices'
5
- require 'spout/models/tables/choices_vs_choices'
6
- require 'spout/models/tables/numeric_vs_numeric'
7
- require 'spout/models/tables/choices_vs_numeric'
3
+ require "spout/models/tables/default"
4
+ require "spout/models/tables/numeric_vs_choices"
5
+ require "spout/models/tables/choices_vs_choices"
6
+ require "spout/models/tables/numeric_vs_numeric"
7
+ require "spout/models/tables/choices_vs_numeric"
8
8
 
9
9
  module Spout
10
10
  module Models
11
11
  module Tables
12
12
  DEFAULT_CLASS = Spout::Models::Tables::Default
13
13
  GRAPHABLE_CLASSES = {
14
- 'numeric_vs_choices' => Spout::Models::Tables::NumericVsChoices,
15
- 'choices_vs_choices' => Spout::Models::Tables::ChoicesVsChoices,
16
- 'numeric_vs_numeric' => Spout::Models::Tables::NumericVsNumeric,
17
- 'choices_vs_numeric' => Spout::Models::Tables::ChoicesVsNumeric
14
+ "numeric_vs_choices" => Spout::Models::Tables::NumericVsChoices,
15
+ "choices_vs_choices" => Spout::Models::Tables::ChoicesVsChoices,
16
+ "numeric_vs_numeric" => Spout::Models::Tables::NumericVsNumeric,
17
+ "choices_vs_numeric" => Spout::Models::Tables::ChoicesVsNumeric
18
18
  }
19
19
 
20
20
  def self.for(variable, chart_variable, subjects, subtitle, totals: true)
@@ -30,8 +30,8 @@ module Spout
30
30
  def self.variable_to_table_type(variable)
31
31
  variable_type = (variable ? variable.type : nil)
32
32
  case variable_type
33
- when 'numeric', 'integer'
34
- 'numeric'
33
+ when "numeric", "integer"
34
+ "numeric"
35
35
  else
36
36
  variable_type
37
37
  end
@@ -1,16 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'json'
3
+ require "json"
4
4
 
5
- require 'spout/models/record'
6
- require 'spout/models/domain'
7
- require 'spout/models/form'
5
+ require "spout/models/record"
6
+ require "spout/models/domain"
7
+ require "spout/models/form"
8
8
 
9
9
 
10
10
  module Spout
11
11
  module Models
12
12
  class Variable < Spout::Models::Record
13
- # VARIABLE_TYPES = ['choices', 'numeric', 'integer']
13
+ # VARIABLE_TYPES = ["choices", "numeric", "integer"]
14
14
 
15
15
  attr_accessor :id, :folder, :display_name, :description, :type, :units, :labels, :commonly_used, :calculation
16
16
  attr_accessor :domain_name, :form_names
@@ -20,8 +20,8 @@ module Spout
20
20
 
21
21
  def initialize(file_name, dictionary_root)
22
22
  @errors = []
23
- @id = file_name.to_s.gsub(%r{^(.*)/|\.json$}, '').downcase
24
- @folder = file_name.to_s.gsub(%r{^#{dictionary_root}/variables/|#{@id}\.json$}, '')
23
+ @id = file_name.to_s.gsub(%r{^(.*)/|\.json$}, "").downcase
24
+ @folder = file_name.to_s.gsub(%r{^#{dictionary_root}/variables/|#{@id}\.json$}, "")
25
25
  @form_names = []
26
26
  @domain_name = nil
27
27
 
@@ -37,10 +37,10 @@ module Spout
37
37
  instance_variable_set("@#{method}", json[method])
38
38
  end
39
39
  @commonly_used = false if @commonly_used.nil?
40
- @errors << "'id': #{json['id'].inspect} does not match filename #{@id.inspect}" if @id != json['id']
41
- @domain_name = json['domain'] # Spout::Models::Domain.new(json['domain'], dictionary_root)
42
- @labels = (json['labels'] || [])
43
- @form_names = (json['forms'] || []).collect do |form_name|
40
+ @errors << "'id': #{json['id'].inspect} does not match filename #{@id.inspect}" if @id != json["id"]
41
+ @domain_name = json["domain"] # Spout::Models::Domain.new(json["domain"], dictionary_root)
42
+ @labels = (json["labels"] || [])
43
+ @form_names = (json["forms"] || []).collect do |form_name|
44
44
  form_name
45
45
  end
46
46
  elsif json
@@ -58,10 +58,10 @@ module Spout
58
58
  def known_issues
59
59
  line_found = false
60
60
  lines = []
61
- known_issues_file = 'KNOWNISSUES.md'
61
+ known_issues_file = "KNOWNISSUES.md"
62
62
  if File.exist?(known_issues_file) && File.file?(known_issues_file)
63
63
  IO.foreach(known_issues_file) do |line|
64
- if line_found && Variable.starts_with?(line, ' - ')
64
+ if line_found && Variable.starts_with?(line, " - ")
65
65
  lines << line
66
66
  elsif Variable.partial_match?(line, "\\[#{id}\\]")
67
67
  line_found = true
@@ -84,7 +84,7 @@ module Spout
84
84
 
85
85
  def deploy_params
86
86
  { name: id, display_name: display_name, variable_type: type,
87
- folder: folder.to_s.gsub(%r{/$}, ''), description: description,
87
+ folder: folder.to_s.gsub(%r{/$}, ""), description: description,
88
88
  units: units, calculation: calculation, commonly_used: commonly_used,
89
89
  labels: labels,
90
90
  stats_n: n, stats_mean: mean, stats_stddev: stddev,
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rake/testtask'
4
- require 'colorize'
3
+ require "rake/testtask"
4
+ require "colorize"
5
5
 
6
6
  Rake::TestTask.new do |t|
7
- t.libs << 'test'
8
- t.test_files = FileList['test/**/*_test.rb']
7
+ t.libs << "test"
8
+ t.test_files = FileList["test/**/*_test.rb"]
9
9
  t.warning = false
10
10
  t.verbose = false
11
11
  end
@@ -1,3 +1,3 @@
1
- ## 0.1.0 (<%= Date.today.strftime('%B %-d, %Y') %>)
1
+ ## 0.1.0 (<%= Date.today.strftime("%B %-d, %Y") %>)
2
2
 
3
3
  - Created the <%= @project_name.downcase %> data dictionary repository using Spout v<%= Spout::VERSION::STRING %>
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- source 'https://rubygems.org'
3
+ source "https://rubygems.org"
4
4
 
5
- gem 'spout'
5
+ gem "spout"
@@ -1,3 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spout/tasks'
3
+ require "spout/tasks"
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'test_helper'
3
+ require "test_helper"
4
4
 
5
5
  # Launches default Spout tests and custom tests for specific to this dictionary.
6
6
  class DictionaryTest < Minitest::Test
@@ -14,12 +14,12 @@ class DictionaryTest < Minitest::Test
14
14
  # Example 1: Create custom tests to show that `integer` and `numeric`
15
15
  # variables have a valid unit type.
16
16
  # Add your own valid units to this array.
17
- # VALID_UNITS = ['minutes', 'hours']
17
+ # VALID_UNITS = ["minutes", "hours"]
18
18
  # @variables.select { |v| %w(numeric integer).include?(v.type) }.each do |variable|
19
19
  # define_method("test_units: #{variable.path}") do
20
20
  # message = "\"#{variable.units}\"".colorize(:red) + " invalid units.\n" +
21
21
  # " Valid types: " +
22
- # VALID_UNITS.sort_by(&:to_s).collect { |u| u.inspect.colorize(:white) }.join(', ')
22
+ # VALID_UNITS.sort_by(&:to_s).collect { |u| u.inspect.colorize(:white) }.join(", ")
23
23
  # assert VALID_UNITS.include?(variable.units), message
24
24
  # end
25
25
  # end
@@ -1,3 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spout/tests'
3
+ require "spout/tests"
@@ -6,22 +6,22 @@ module Spout
6
6
  # defined.
7
7
  module DomainExistenceValidation
8
8
  def assert_domain_existence(item)
9
- domain_names = Dir.glob('domains/**/*.json').collect do |file|
10
- file.split('/').last.to_s.downcase.split('.json').first
9
+ domain_names = Dir.glob("domains/**/*.json").collect do |file|
10
+ file.split("/").last.to_s.downcase.split(".json").first
11
11
  end
12
12
  result = begin
13
- domain_name = JSON.parse(File.read(item))['domain']
13
+ domain_name = JSON.parse(File.read(item))["domain"]
14
14
  domain_names.include?(domain_name)
15
15
  rescue JSON::ParserError
16
- domain_name = ''
16
+ domain_name = ""
17
17
  false
18
18
  end
19
19
  message = "The domain #{domain_name} referenced by #{item} does not exist."
20
20
  assert result, message
21
21
  end
22
22
 
23
- Dir.glob('variables/**/*.json').each do |file|
24
- if (not [nil, ''].include?(JSON.parse(File.read(file))['domain']) rescue false)
23
+ Dir.glob("variables/**/*.json").each do |file|
24
+ if (not [nil, ""].include?(JSON.parse(File.read(file))["domain"]) rescue false)
25
25
  define_method("test_domain_exists: #{file}") do
26
26
  assert_domain_existence file
27
27
  end
@@ -22,7 +22,7 @@ module Spout
22
22
  assert result, message
23
23
  end
24
24
 
25
- Dir.glob('domains/**/*.json').each do |file|
25
+ Dir.glob("domains/**/*.json").each do |file|
26
26
  define_method("test_domain_format: #{file}") do
27
27
  assert_domain_format file
28
28
  end
@@ -5,10 +5,10 @@ module Spout
5
5
  # Tests to assure that the domain name starts with a lowercase letter
6
6
  # followed by lowercase letters, numbers, or underscores
7
7
  module DomainNameFormat
8
- Dir.glob('domains/**/*.json').each do |file|
8
+ Dir.glob("domains/**/*.json").each do |file|
9
9
  define_method("test_domain_name_format: #{file}") do
10
- message = 'Domain name format error. Name must start with a lowercase letter and be followed by lowercase letters, numbers, or underscores'
11
- name = File.basename(file).gsub(/\.json$/, '') rescue name = nil
10
+ message = "Domain name format error. Name must start with a lowercase letter and be followed by lowercase letters, numbers, or underscores"
11
+ name = File.basename(file).gsub(/\.json$/, "") rescue name = nil
12
12
  assert_match(/^[a-z]\w*$/, name, message)
13
13
  end
14
14
  end
@@ -4,8 +4,8 @@ module Spout
4
4
  module Tests
5
5
  module DomainNameUniqueness
6
6
  def test_domain_name_uniqueness
7
- files = Dir.glob("domains/**/*.json").collect{|file| file.split('/').last.downcase }
8
- assert_equal [], files.select{ |f| files.count(f) > 1 }.uniq
7
+ files = Dir.glob("domains/**/*.json").collect { |file| file.split("/").last.downcase }
8
+ assert_equal [], files.select { |f| files.count(f) > 1 }.uniq
9
9
  end
10
10
  end
11
11
  end
@@ -1,11 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spout/tests/json_helper'
3
+ require "spout/tests/json_helper"
4
4
 
5
5
  module Spout
6
6
  module Tests
7
7
  module DomainSpecified
8
-
9
8
  Dir.glob("variables/**/*.json").each do |file|
10
9
  if json_value(file, :type) == "choices"
11
10
  define_method("test_domain_specified:"+file) do
@@ -14,7 +13,6 @@ module Spout
14
13
  end
15
14
  end
16
15
  end
17
-
18
16
  end
19
17
  end
20
18
  end
@@ -3,9 +3,8 @@
3
3
  module Spout
4
4
  module Tests
5
5
  module FormExistenceValidation
6
-
7
6
  def assert_form_existence(item)
8
- form_names = Dir.glob("forms/**/*.json").collect{|file| file.split('/').last.to_s.downcase.split('.json').first}
7
+ form_names = Dir.glob("forms/**/*.json").collect{|file| file.split("/").last.to_s.downcase.split(".json").first}
9
8
 
10
9
  result = begin
11
10
  (form_names | JSON.parse(File.read(item))["forms"]).size == form_names.size
@@ -19,13 +18,12 @@ module Spout
19
18
  end
20
19
 
21
20
  Dir.glob("variables/**/*.json").each do |file|
22
- if (not [nil, ''].include?(JSON.parse(File.read(file))["forms"]) rescue false)
21
+ if (not [nil, ""].include?(JSON.parse(File.read(file))["forms"]) rescue false)
23
22
  define_method("test_form_exists: "+file) do
24
23
  assert_form_existence file
25
24
  end
26
25
  end
27
26
  end
28
-
29
27
  end
30
28
  end
31
29
  end
@@ -5,10 +5,10 @@ module Spout
5
5
  # Tests to assure that the domain name starts with a lowercase letter
6
6
  # followed by lowercase letters, numbers, or underscores
7
7
  module FormNameFormat
8
- Dir.glob('forms/**/*.json').each do |file|
8
+ Dir.glob("forms/**/*.json").each do |file|
9
9
  define_method("test_form_name_format: #{file}") do
10
- message = 'Form name format error. Name must start with a lowercase letter and be followed by lowercase letters, numbers, or underscores'
11
- assert_match(/^[a-z]\w*$/, (begin JSON.parse(File.read(file))['id'] rescue nil end), message)
10
+ message = "Form name format error. Name must start with a lowercase letter and be followed by lowercase letters, numbers, or underscores"
11
+ assert_match(/^[a-z]\w*$/, (begin JSON.parse(File.read(file))["id"] rescue nil end), message)
12
12
  end
13
13
  end
14
14
  end
@@ -5,7 +5,7 @@ module Spout
5
5
  module FormNameMatch
6
6
  Dir.glob("forms/**/*.json").each do |file|
7
7
  define_method("test_form_name_match: "+file) do
8
- assert_equal file.gsub(/^.*\//, '').gsub('.json', '').downcase, (begin JSON.parse(File.read(file))["id"] rescue nil end)
8
+ assert_equal file.gsub(/^.*\//, "").gsub(".json", "").downcase, (begin JSON.parse(File.read(file))["id"] rescue nil end)
9
9
  end
10
10
  end
11
11
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'json'
3
+ require "json"
4
4
 
5
5
  def json_value(file, key)
6
6
  begin JSON.parse(File.read(file))[key.to_s] rescue nil end
@@ -3,7 +3,6 @@
3
3
  module Spout
4
4
  module Tests
5
5
  module JsonValidation
6
-
7
6
  def assert_valid_json(item, msg = nil)
8
7
  result = begin
9
8
  !!JSON.parse(File.read(item))
@@ -33,7 +32,6 @@ module Spout
33
32
  assert_valid_json file
34
33
  end
35
34
  end
36
-
37
35
  end
38
36
  end
39
37
  end
@@ -5,10 +5,10 @@ module Spout
5
5
  # Tests to assure that the variable name starts with a lowercase letter
6
6
  # followed by lowercase letters, numbers, or underscores
7
7
  module VariableNameFormat
8
- Dir.glob('variables/**/*.json').each do |file|
8
+ Dir.glob("variables/**/*.json").each do |file|
9
9
  define_method("test_variable_name_format: #{file}") do
10
- message = 'Variable name format error. Name must start with a lowercase letter and be followed by lowercase letters, numbers, or underscores'
11
- assert_match(/^[a-z]\w*$/, (begin JSON.parse(File.read(file))['id'] rescue nil end), message)
10
+ message = "Variable name format error. Name must start with a lowercase letter and be followed by lowercase letters, numbers, or underscores"
11
+ assert_match(/^[a-z]\w*$/, (begin JSON.parse(File.read(file))["id"] rescue nil end), message)
12
12
  end
13
13
  end
14
14
  end
@@ -3,13 +3,11 @@
3
3
  module Spout
4
4
  module Tests
5
5
  module VariableNameMatch
6
-
7
6
  Dir.glob("variables/**/*.json").each do |file|
8
7
  define_method("test_variable_name_match: "+file) do
9
- assert_equal file.gsub(/^.*\//, '').gsub('.json', '').downcase, (begin JSON.parse(File.read(file))["id"] rescue nil end)
8
+ assert_equal file.gsub(/^.*\//, "").gsub(".json", "").downcase, (begin JSON.parse(File.read(file))["id"] rescue nil end)
10
9
  end
11
10
  end
12
-
13
11
  end
14
12
  end
15
13
  end
@@ -4,8 +4,8 @@ module Spout
4
4
  module Tests
5
5
  module VariableNameUniqueness
6
6
  def test_variable_name_uniqueness
7
- files = Dir.glob("variables/**/*.json").collect{|file| file.split('/').last.downcase }
8
- assert_equal [], files.select{ |f| files.count(f) > 1 }.uniq
7
+ files = Dir.glob("variables/**/*.json").collect { |file| file.split("/").last.downcase }
8
+ assert_equal [], files.select { |f| files.count(f) > 1 }.uniq
9
9
  end
10
10
  end
11
11
  end
@@ -10,9 +10,9 @@ module Spout
10
10
  assert VALID_VARIABLE_TYPES.include?(item), message
11
11
  end
12
12
 
13
- Dir.glob('variables/**/*.json').each do |file|
13
+ Dir.glob("variables/**/*.json").each do |file|
14
14
  define_method("test_variable_type: #{file}") do
15
- assert_variable_type begin JSON.parse(File.read(file))['type'] rescue nil end
15
+ assert_variable_type begin JSON.parse(File.read(file))["type"] rescue nil end
16
16
  end
17
17
  end
18
18
  end