csvlint 1.0.0 → 1.2.0

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 (51) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +4 -0
  3. data/.github/workflows/push.yml +14 -2
  4. data/.pre-commit-hooks.yaml +5 -0
  5. data/.ruby-version +1 -1
  6. data/.standard_todo.yml +43 -0
  7. data/CHANGELOG.md +84 -32
  8. data/Dockerfile +16 -0
  9. data/Gemfile +2 -2
  10. data/README.md +30 -9
  11. data/Rakefile +7 -7
  12. data/csvlint.gemspec +14 -16
  13. data/docker_notes_for_windows.txt +20 -0
  14. data/features/step_definitions/cli_steps.rb +11 -11
  15. data/features/step_definitions/information_steps.rb +4 -4
  16. data/features/step_definitions/parse_csv_steps.rb +11 -11
  17. data/features/step_definitions/schema_validation_steps.rb +10 -10
  18. data/features/step_definitions/sources_steps.rb +1 -1
  19. data/features/step_definitions/validation_errors_steps.rb +19 -19
  20. data/features/step_definitions/validation_info_steps.rb +9 -9
  21. data/features/step_definitions/validation_warnings_steps.rb +11 -11
  22. data/features/support/aruba.rb +6 -6
  23. data/features/support/earl_formatter.rb +39 -39
  24. data/features/support/env.rb +10 -11
  25. data/features/support/load_tests.rb +107 -103
  26. data/features/support/webmock.rb +2 -2
  27. data/lib/csvlint/cli.rb +133 -130
  28. data/lib/csvlint/csvw/column.rb +279 -280
  29. data/lib/csvlint/csvw/date_format.rb +90 -92
  30. data/lib/csvlint/csvw/metadata_error.rb +1 -3
  31. data/lib/csvlint/csvw/number_format.rb +40 -32
  32. data/lib/csvlint/csvw/property_checker.rb +714 -717
  33. data/lib/csvlint/csvw/table.rb +49 -52
  34. data/lib/csvlint/csvw/table_group.rb +24 -23
  35. data/lib/csvlint/error_collector.rb +2 -0
  36. data/lib/csvlint/error_message.rb +0 -1
  37. data/lib/csvlint/field.rb +153 -141
  38. data/lib/csvlint/schema.rb +34 -42
  39. data/lib/csvlint/validate.rb +161 -143
  40. data/lib/csvlint/version.rb +1 -1
  41. data/lib/csvlint.rb +22 -23
  42. data/spec/csvw/column_spec.rb +15 -16
  43. data/spec/csvw/date_format_spec.rb +5 -7
  44. data/spec/csvw/number_format_spec.rb +2 -4
  45. data/spec/csvw/table_group_spec.rb +103 -105
  46. data/spec/csvw/table_spec.rb +71 -73
  47. data/spec/field_spec.rb +116 -121
  48. data/spec/schema_spec.rb +129 -139
  49. data/spec/spec_helper.rb +6 -6
  50. data/spec/validator_spec.rb +167 -190
  51. metadata +23 -55
@@ -1,7 +1,6 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe Csvlint::Csvw::Column do
4
-
5
4
  it "shouldn't generate errors for string values" do
6
5
  column = Csvlint::Csvw::Column.new(1, "foo")
7
6
  value = column.validate("bar", 2)
@@ -9,14 +8,14 @@ describe Csvlint::Csvw::Column do
9
8
  end
10
9
 
11
10
  it "should generate errors for string values that aren't long enough" do
12
- column = Csvlint::Csvw::Column.new(1, "foo", datatype: { "base" => "http://www.w3.org/2001/XMLSchema#string", "minLength" => 4 })
11
+ column = Csvlint::Csvw::Column.new(1, "foo", datatype: {"base" => "http://www.w3.org/2001/XMLSchema#string", "minLength" => 4})
13
12
  value = column.validate("bar", 2)
14
- expect(value).to eq({ :invalid => "bar" })
13
+ expect(value).to eq({invalid: "bar"})
15
14
  expect(column.errors.length).to eq(1)
16
15
  end
17
16
 
18
17
  it "shouldn't generate errors for string values that are long enough" do
19
- column = Csvlint::Csvw::Column.new(1, "foo", datatype: { "base" => "http://www.w3.org/2001/XMLSchema#string", "minLength" => 4 })
18
+ column = Csvlint::Csvw::Column.new(1, "foo", datatype: {"base" => "http://www.w3.org/2001/XMLSchema#string", "minLength" => 4})
20
19
  value = column.validate("barn", 2)
21
20
  expect(value).to eq("barn")
22
21
  expect(column.errors.length).to eq(0)
@@ -24,19 +23,19 @@ describe Csvlint::Csvw::Column do
24
23
 
25
24
  context "when parsing CSVW column descriptions" do
26
25
  it "should provide appropriate default values" do
27
- @desc=<<-EOL
26
+ @desc = <<-EOL
28
27
  {
29
28
  "name": "countryCode"
30
29
  }
31
30
  EOL
32
- json = JSON.parse( @desc )
31
+ json = JSON.parse(@desc)
33
32
  column = Csvlint::Csvw::Column.from_json(1, json)
34
33
 
35
34
  expect(column).to be_a(Csvlint::Csvw::Column)
36
35
  expect(column.number).to eq(1)
37
36
  expect(column.name).to eq("countryCode")
38
37
  expect(column.about_url).to eq(nil)
39
- expect(column.datatype).to eq({ "@id" => "http://www.w3.org/2001/XMLSchema#string" })
38
+ expect(column.datatype).to eq({"@id" => "http://www.w3.org/2001/XMLSchema#string"})
40
39
  expect(column.default).to eq("")
41
40
  expect(column.lang).to eq("und")
42
41
  expect(column.null).to eq([""])
@@ -54,21 +53,21 @@ describe Csvlint::Csvw::Column do
54
53
  end
55
54
 
56
55
  it "should override default values" do
57
- @desc=<<-EOL
56
+ @desc = <<-EOL
58
57
  {
59
58
  "name": "countryCode",
60
59
  "titles": "countryCode",
61
60
  "propertyUrl": "http://www.geonames.org/ontology{#_name}"
62
61
  }
63
62
  EOL
64
- json = JSON.parse( @desc )
63
+ json = JSON.parse(@desc)
65
64
  column = Csvlint::Csvw::Column.from_json(2, json)
66
65
 
67
66
  expect(column).to be_a(Csvlint::Csvw::Column)
68
67
  expect(column.number).to eq(2)
69
68
  expect(column.name).to eq("countryCode")
70
69
  expect(column.about_url).to eq(nil)
71
- expect(column.datatype).to eq({ "@id" => "http://www.w3.org/2001/XMLSchema#string" })
70
+ expect(column.datatype).to eq({"@id" => "http://www.w3.org/2001/XMLSchema#string"})
72
71
  expect(column.default).to eq("")
73
72
  expect(column.lang).to eq("und")
74
73
  expect(column.null).to eq([""])
@@ -79,31 +78,31 @@ describe Csvlint::Csvw::Column do
79
78
  expect(column.source_number).to eq(2)
80
79
  expect(column.suppress_output).to eq(false)
81
80
  expect(column.text_direction).to eq(:inherit)
82
- expect(column.titles).to eql({ "und" => [ "countryCode" ]})
81
+ expect(column.titles).to eql({"und" => ["countryCode"]})
83
82
  expect(column.value_url).to eq(nil)
84
83
  expect(column.virtual).to eq(false)
85
84
  expect(column.annotations).to eql({})
86
85
  end
87
86
 
88
87
  it "should include the datatype" do
89
- @desc=<<-EOL
88
+ @desc = <<-EOL
90
89
  { "name": "Id", "required": true, "datatype": { "base": "string", "minLength": 3 } }
91
90
  EOL
92
91
  json = JSON.parse(@desc)
93
92
  column = Csvlint::Csvw::Column.from_json(1, json)
94
93
  expect(column.name).to eq("Id")
95
94
  expect(column.required).to eq(true)
96
- expect(column.datatype).to eql({ "base" => "http://www.w3.org/2001/XMLSchema#string", "minLength" => 3 })
95
+ expect(column.datatype).to eql({"base" => "http://www.w3.org/2001/XMLSchema#string", "minLength" => 3})
97
96
  end
98
97
 
99
98
  it "should generate warnings for invalid null values" do
100
- @desc=<<-EOL
99
+ @desc = <<-EOL
101
100
  {
102
101
  "name": "countryCode",
103
102
  "null": true
104
103
  }
105
104
  EOL
106
- json = JSON.parse( @desc )
105
+ json = JSON.parse(@desc)
107
106
  column = Csvlint::Csvw::Column.from_json(1, json)
108
107
  expect(column.warnings.length).to eq(1)
109
108
  expect(column.warnings[0].type).to eq(:invalid_value)
@@ -1,7 +1,6 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe Csvlint::Csvw::DateFormat do
4
-
5
4
  it "should parse dates that match yyyy-MM-dd correctly" do
6
5
  format = Csvlint::Csvw::DateFormat.new("yyyy-MM-dd")
7
6
  expect(format.parse("2015-03-22")[:dateTime]).to eql(Date.new(2015, 3, 22))
@@ -11,15 +10,15 @@ describe Csvlint::Csvw::DateFormat do
11
10
 
12
11
  it "should parse times that match HH:mm:ss correctly" do
13
12
  format = Csvlint::Csvw::DateFormat.new("HH:mm:ss")
14
- expect(format.parse("12:34:56")).to eql({ :hour => 12, :minute => 34, :second => 56.0, :string => "12:34:56", :dateTime => DateTime.new(0,1,1,12,34,56.0,"+00:00") })
13
+ expect(format.parse("12:34:56")).to eql({hour: 12, minute: 34, second: 56.0, string: "12:34:56", dateTime: DateTime.new(0, 1, 1, 12, 34, 56.0, "+00:00")})
15
14
  expect(format.parse("22/03/2015")).to eq(nil)
16
15
  end
17
16
 
18
17
  it "should parse times that match HH:mm:ss.SSS correctly" do
19
18
  format = Csvlint::Csvw::DateFormat.new("HH:mm:ss.SSS")
20
- expect(format.parse("12:34:56")).to eql({ :hour => 12, :minute => 34, :second => 56.0, :string => "12:34:56", :dateTime => DateTime.new(0,1,1,12,34,56.0,"+00:00") })
21
- expect(format.parse("12:34:56.78")).to eql({ :hour => 12, :minute => 34, :second => 56.78, :string => "12:34:56.78", :dateTime => DateTime.new(0,1,1,12,34,56.78,"+00:00") })
22
- expect(format.parse("12:34:56.789")).to eql({ :hour => 12, :minute => 34, :second => 56.789, :string => "12:34:56.789", :dateTime => DateTime.new(0,1,1,12,34,56.789,"+00:00") })
19
+ expect(format.parse("12:34:56")).to eql({hour: 12, minute: 34, second: 56.0, string: "12:34:56", dateTime: DateTime.new(0, 1, 1, 12, 34, 56.0, "+00:00")})
20
+ expect(format.parse("12:34:56.78")).to eql({hour: 12, minute: 34, second: 56.78, string: "12:34:56.78", dateTime: DateTime.new(0, 1, 1, 12, 34, 56.78, "+00:00")})
21
+ expect(format.parse("12:34:56.789")).to eql({hour: 12, minute: 34, second: 56.789, string: "12:34:56.789", dateTime: DateTime.new(0, 1, 1, 12, 34, 56.789, "+00:00")})
23
22
  expect(format.parse("12:34:56.7890")).to eql(nil)
24
23
  expect(format.parse("22/03/2015")).to eq(nil)
25
24
  end
@@ -45,5 +44,4 @@ describe Csvlint::Csvw::DateFormat do
45
44
  expect(format.parse("2015-03-15T15:02:37")).to eql(nil)
46
45
  expect(format.parse("3/15/2015 15:02")[:dateTime]).to eql(DateTime.new(2015, 3, 15, 15, 2))
47
46
  end
48
-
49
47
  end
@@ -1,7 +1,6 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe Csvlint::Csvw::NumberFormat do
4
-
5
4
  it "should correctly parse #,##0.##" do
6
5
  format = Csvlint::Csvw::NumberFormat.new("#,##0.##")
7
6
  expect(format.pattern).to eq("#,##0.##")
@@ -397,7 +396,7 @@ describe Csvlint::Csvw::NumberFormat do
397
396
  end
398
397
 
399
398
  it "should parse numbers normally when there is no pattern" do
400
- format = Csvlint::Csvw::NumberFormat.new()
399
+ format = Csvlint::Csvw::NumberFormat.new
401
400
  expect(format.parse("1")).to eql(1)
402
401
  expect(format.parse("-1")).to eql(-1)
403
402
  expect(format.parse("12.3")).to eql(12.3)
@@ -442,5 +441,4 @@ describe Csvlint::Csvw::NumberFormat do
442
441
  expect(format.parse("1 234 567")).to eql(1234567)
443
442
  expect(format.parse("1 234")).to eq(nil)
444
443
  end
445
-
446
444
  end
@@ -1,41 +1,40 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe Csvlint::Csvw::TableGroup do
4
-
5
4
  it "should inherit null to all columns" do
6
- @metadata=<<-EOL
7
- {
8
- "@context": "http://www.w3.org/ns/csvw",
9
- "null": true,
10
- "tables": [{
11
- "url": "test040.csv",
12
- "tableSchema": {
13
- "columns": [{
14
- "titles": "null"
15
- }, {
16
- "titles": "lang"
17
- }, {
18
- "titles": "textDirection"
19
- }, {
20
- "titles": "separator"
21
- }, {
22
- "titles": "ordered"
23
- }, {
24
- "titles": "default"
25
- }, {
26
- "titles": "datatype"
27
- }, {
28
- "titles": "aboutUrl"
29
- }, {
30
- "titles": "propertyUrl"
31
- }, {
32
- "titles": "valueUrl"
33
- }]
34
- }
35
- }]
36
- }
5
+ @metadata = <<~EOL
6
+ {
7
+ "@context": "http://www.w3.org/ns/csvw",
8
+ "null": true,
9
+ "tables": [{
10
+ "url": "test040.csv",
11
+ "tableSchema": {
12
+ "columns": [{
13
+ "titles": "null"
14
+ }, {
15
+ "titles": "lang"
16
+ }, {
17
+ "titles": "textDirection"
18
+ }, {
19
+ "titles": "separator"
20
+ }, {
21
+ "titles": "ordered"
22
+ }, {
23
+ "titles": "default"
24
+ }, {
25
+ "titles": "datatype"
26
+ }, {
27
+ "titles": "aboutUrl"
28
+ }, {
29
+ "titles": "propertyUrl"
30
+ }, {
31
+ "titles": "valueUrl"
32
+ }]
33
+ }
34
+ }]
35
+ }
37
36
  EOL
38
- json = JSON.parse( @metadata )
37
+ json = JSON.parse(@metadata)
39
38
  table_group = Csvlint::Csvw::TableGroup.from_json("http://w3c.github.io/csvw/tests/test040-metadata.json", json)
40
39
 
41
40
  expect(table_group.class).to eq(Csvlint::Csvw::TableGroup)
@@ -54,82 +53,81 @@ describe Csvlint::Csvw::TableGroup do
54
53
  end
55
54
 
56
55
  context "when parsing CSVW table group metadata" do
57
-
58
56
  before(:each) do
59
- @metadata=<<-EOL
60
- {
61
- "@context": "http://www.w3.org/ns/csvw",
62
- "tables": [{
63
- "url": "countries.csv",
64
- "tableSchema": {
65
- "columns": [{
66
- "name": "countryCode",
67
- "titles": "countryCode",
68
- "datatype": "string",
69
- "propertyUrl": "http://www.geonames.org/ontology{#_name}"
70
- }, {
71
- "name": "latitude",
72
- "titles": "latitude",
73
- "datatype": "number"
74
- }, {
75
- "name": "longitude",
76
- "titles": "longitude",
77
- "datatype": "number"
78
- }, {
79
- "name": "name",
80
- "titles": "name",
81
- "datatype": "string"
82
- }],
83
- "aboutUrl": "http://example.org/countries.csv{#countryCode}",
84
- "propertyUrl": "http://schema.org/{_name}",
85
- "primaryKey": "countryCode"
86
- }
87
- }, {
88
- "url": "country_slice.csv",
89
- "tableSchema": {
90
- "columns": [{
91
- "name": "countryRef",
92
- "titles": "countryRef",
93
- "valueUrl": "http://example.org/countries.csv{#countryRef}"
94
- }, {
95
- "name": "year",
96
- "titles": "year",
97
- "datatype": "gYear"
98
- }, {
99
- "name": "population",
100
- "titles": "population",
101
- "datatype": "integer"
102
- }],
103
- "foreignKeys": [{
104
- "columnReference": "countryRef",
105
- "reference": {
106
- "resource": "countries.csv",
107
- "columnReference": "countryCode"
57
+ @metadata = <<~EOL
58
+ {
59
+ "@context": "http://www.w3.org/ns/csvw",
60
+ "tables": [{
61
+ "url": "countries.csv",
62
+ "tableSchema": {
63
+ "columns": [{
64
+ "name": "countryCode",
65
+ "titles": "countryCode",
66
+ "datatype": "string",
67
+ "propertyUrl": "http://www.geonames.org/ontology{#_name}"
68
+ }, {
69
+ "name": "latitude",
70
+ "titles": "latitude",
71
+ "datatype": "number"
72
+ }, {
73
+ "name": "longitude",
74
+ "titles": "longitude",
75
+ "datatype": "number"
76
+ }, {
77
+ "name": "name",
78
+ "titles": "name",
79
+ "datatype": "string"
80
+ }],
81
+ "aboutUrl": "http://example.org/countries.csv{#countryCode}",
82
+ "propertyUrl": "http://schema.org/{_name}",
83
+ "primaryKey": "countryCode"
84
+ }
85
+ }, {
86
+ "url": "country_slice.csv",
87
+ "tableSchema": {
88
+ "columns": [{
89
+ "name": "countryRef",
90
+ "titles": "countryRef",
91
+ "valueUrl": "http://example.org/countries.csv{#countryRef}"
92
+ }, {
93
+ "name": "year",
94
+ "titles": "year",
95
+ "datatype": "gYear"
96
+ }, {
97
+ "name": "population",
98
+ "titles": "population",
99
+ "datatype": "integer"
100
+ }],
101
+ "foreignKeys": [{
102
+ "columnReference": "countryRef",
103
+ "reference": {
104
+ "resource": "countries.csv",
105
+ "columnReference": "countryCode"
106
+ }
107
+ }]
108
+ }
109
+ }]
108
110
  }
109
- }]
110
- }
111
- }]
112
- }
113
- EOL
114
- stub_request(:get, "http://w3c.github.io/csvw/tests/countries.json").to_return(:status => 200, :body => @metadata)
115
- @countries=<<-EOL
116
- countryCode,latitude,longitude,name
117
- AD,42.546245,1.601554,Andorra
118
- AE,23.424076,53.847818,"United Arab Emirates"
119
- AF,33.93911,67.709953,Afghanistan
120
- EOL
121
- stub_request(:get, "http://w3c.github.io/csvw/tests/countries.csv").to_return(:status => 200, :body => @countries)
122
- @country_slice=<<-EOL
123
- countryRef,year,population
124
- AF,1960,9616353
125
- AF,1961,9799379
126
- AF,1962,9989846
127
- EOL
128
- stub_request(:get, "http://w3c.github.io/csvw/tests/country_slice.csv").to_return(:status => 200, :body => @country_slice)
111
+ EOL
112
+ stub_request(:get, "http://w3c.github.io/csvw/tests/countries.json").to_return(status: 200, body: @metadata)
113
+ @countries = <<~EOL
114
+ countryCode,latitude,longitude,name
115
+ AD,42.546245,1.601554,Andorra
116
+ AE,23.424076,53.847818,"United Arab Emirates"
117
+ AF,33.93911,67.709953,Afghanistan
118
+ EOL
119
+ stub_request(:get, "http://w3c.github.io/csvw/tests/countries.csv").to_return(status: 200, body: @countries)
120
+ @country_slice = <<~EOL
121
+ countryRef,year,population
122
+ AF,1960,9616353
123
+ AF,1961,9799379
124
+ AF,1962,9989846
125
+ EOL
126
+ stub_request(:get, "http://w3c.github.io/csvw/tests/country_slice.csv").to_return(status: 200, body: @country_slice)
129
127
  end
130
128
 
131
129
  it "should create a table group from pre-parsed CSVW metadata" do
132
- json = JSON.parse( @metadata )
130
+ json = JSON.parse(@metadata)
133
131
  table_group = Csvlint::Csvw::TableGroup.from_json("http://w3c.github.io/csvw/tests/countries.json", json)
134
132
 
135
133
  expect(table_group.class).to eq(Csvlint::Csvw::TableGroup)
@@ -1,84 +1,82 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe Csvlint::Csvw::Table do
4
-
5
4
  context "when parsing CSVW table metadata" do
6
-
7
5
  before(:each) do
8
- @metadata=<<-EOL
9
- {
10
- "@context": "http://www.w3.org/ns/csvw",
11
- "tables": [{
12
- "url": "countries.csv",
13
- "tableSchema": {
14
- "columns": [{
15
- "name": "countryCode",
16
- "titles": "countryCode",
17
- "datatype": "string",
18
- "propertyUrl": "http://www.geonames.org/ontology{#_name}"
19
- }, {
20
- "name": "latitude",
21
- "titles": "latitude",
22
- "datatype": "number"
23
- }, {
24
- "name": "longitude",
25
- "titles": "longitude",
26
- "datatype": "number"
27
- }, {
28
- "name": "name",
29
- "titles": "name",
30
- "datatype": "string"
31
- }],
32
- "aboutUrl": "http://example.org/countries.csv{#countryCode}",
33
- "propertyUrl": "http://schema.org/{_name}",
34
- "primaryKey": "countryCode"
35
- }
36
- }, {
37
- "url": "country_slice.csv",
38
- "tableSchema": {
39
- "columns": [{
40
- "name": "countryRef",
41
- "titles": "countryRef",
42
- "valueUrl": "http://example.org/countries.csv{#countryRef}"
43
- }, {
44
- "name": "year",
45
- "titles": "year",
46
- "datatype": "gYear"
47
- }, {
48
- "name": "population",
49
- "titles": "population",
50
- "datatype": "integer"
51
- }],
52
- "foreignKeys": [{
53
- "columnReference": "countryRef",
54
- "reference": {
55
- "resource": "countries.csv",
56
- "columnReference": "countryCode"
6
+ @metadata = <<~EOL
7
+ {
8
+ "@context": "http://www.w3.org/ns/csvw",
9
+ "tables": [{
10
+ "url": "countries.csv",
11
+ "tableSchema": {
12
+ "columns": [{
13
+ "name": "countryCode",
14
+ "titles": "countryCode",
15
+ "datatype": "string",
16
+ "propertyUrl": "http://www.geonames.org/ontology{#_name}"
17
+ }, {
18
+ "name": "latitude",
19
+ "titles": "latitude",
20
+ "datatype": "number"
21
+ }, {
22
+ "name": "longitude",
23
+ "titles": "longitude",
24
+ "datatype": "number"
25
+ }, {
26
+ "name": "name",
27
+ "titles": "name",
28
+ "datatype": "string"
29
+ }],
30
+ "aboutUrl": "http://example.org/countries.csv{#countryCode}",
31
+ "propertyUrl": "http://schema.org/{_name}",
32
+ "primaryKey": "countryCode"
33
+ }
34
+ }, {
35
+ "url": "country_slice.csv",
36
+ "tableSchema": {
37
+ "columns": [{
38
+ "name": "countryRef",
39
+ "titles": "countryRef",
40
+ "valueUrl": "http://example.org/countries.csv{#countryRef}"
41
+ }, {
42
+ "name": "year",
43
+ "titles": "year",
44
+ "datatype": "gYear"
45
+ }, {
46
+ "name": "population",
47
+ "titles": "population",
48
+ "datatype": "integer"
49
+ }],
50
+ "foreignKeys": [{
51
+ "columnReference": "countryRef",
52
+ "reference": {
53
+ "resource": "countries.csv",
54
+ "columnReference": "countryCode"
55
+ }
56
+ }]
57
+ }
58
+ }]
57
59
  }
58
- }]
59
- }
60
- }]
61
- }
62
- EOL
63
- stub_request(:get, "http://w3c.github.io/csvw/tests/countries.json").to_return(:status => 200, :body => @metadata)
64
- @countries=<<-EOL
65
- countryCode,latitude,longitude,name
66
- AD,42.546245,1.601554,Andorra
67
- AE,23.424076,53.847818,"United Arab Emirates"
68
- AF,33.93911,67.709953,Afghanistan
69
- EOL
70
- stub_request(:get, "http://w3c.github.io/csvw/tests/countries.csv").to_return(:status => 200, :body => @countries)
71
- @country_slice=<<-EOL
72
- countryRef,year,population
73
- AF,1960,9616353
74
- AF,1961,9799379
75
- AF,1962,9989846
76
- EOL
77
- stub_request(:get, "http://w3c.github.io/csvw/tests/country_slice.csv").to_return(:status => 200, :body => @country_slice)
60
+ EOL
61
+ stub_request(:get, "http://w3c.github.io/csvw/tests/countries.json").to_return(status: 200, body: @metadata)
62
+ @countries = <<~EOL
63
+ countryCode,latitude,longitude,name
64
+ AD,42.546245,1.601554,Andorra
65
+ AE,23.424076,53.847818,"United Arab Emirates"
66
+ AF,33.93911,67.709953,Afghanistan
67
+ EOL
68
+ stub_request(:get, "http://w3c.github.io/csvw/tests/countries.csv").to_return(status: 200, body: @countries)
69
+ @country_slice = <<~EOL
70
+ countryRef,year,population
71
+ AF,1960,9616353
72
+ AF,1961,9799379
73
+ AF,1962,9989846
74
+ EOL
75
+ stub_request(:get, "http://w3c.github.io/csvw/tests/country_slice.csv").to_return(status: 200, body: @country_slice)
78
76
  end
79
77
 
80
78
  it "should create a table from pre-parsed CSVW metadata" do
81
- json = JSON.parse( @metadata )
79
+ json = JSON.parse(@metadata)
82
80
  table = Csvlint::Csvw::Table.from_json(json["tables"][0], "http://w3c.github.io/csvw/tests/countries.json")
83
81
 
84
82
  expect(table).to be_a(Csvlint::Csvw::Table)