hdo-storting-importer 0.1.4 → 0.1.5

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/.gitignore CHANGED
@@ -14,4 +14,4 @@ spec/reports
14
14
  test/tmp
15
15
  test/version_tmp
16
16
  tmp
17
- .tm_properties
17
+ .tm_properties
@@ -1,6 +1,10 @@
1
1
  require 'aruba'
2
2
  require 'aruba/cucumber'
3
3
 
4
+ require 'simplecov'
5
+ SimpleCov.start
6
+ SimpleCov.command_name 'cucumber'
7
+
4
8
  Before do
5
9
  @aruba_timeout_seconds = 10
6
10
  ENV['VOTE_COUNT'] = '5'
@@ -29,4 +29,5 @@ Gem::Specification.new do |gem|
29
29
  gem.add_development_dependency 'guard'
30
30
  gem.add_development_dependency 'guard-rspec'
31
31
  gem.add_development_dependency 'rspec'
32
+ gem.add_development_dependency 'simplecov'
32
33
  end
@@ -16,45 +16,21 @@ module Hdo
16
16
  schema_path StortingImporter.lib.join("hdo/storting_importer/schema/promise.json").to_s
17
17
 
18
18
  def self.example
19
- pr = new("H", "Stille strengere krav til orden og oppførsel for å hindre at uro ødelegger undervisningen.", true, ["GRUNNSKOLE"], "PP", 8)
20
- pr.external_id = "1"
21
-
22
- pr
19
+ new(
20
+ "1",
21
+ "H",
22
+ "Stille strengere krav til orden og oppførsel for å hindre at uro ødelegger undervisningen.",
23
+ true,
24
+ ["GRUNNSKOLE"],
25
+ "PP",
26
+ 8
27
+ )
23
28
  end
24
29
 
25
30
  def self.json_example
26
31
  Util.json_pretty example
27
32
  end
28
33
 
29
- def self.from_csv(str)
30
- # cleanup
31
- str.gsub!(/\bFrp\b/, "FrP")
32
- str.gsub!(/\bKrf\b/, "KrF")
33
- str.gsub!(/\bSP\b/, "Sp")
34
-
35
- rows = CSV.parse(
36
- str,
37
- headers: [:party, :body, :general, :categories, :source, :page],
38
- col_sep: ";",
39
- skip_blanks: true,
40
- return_headers: false,
41
- )
42
-
43
- rows.map do |e|
44
- pr = e.to_hash
45
- next if pr[:party].to_s.strip == "Parti" # header row
46
-
47
- new(
48
- pr[:party].to_s.strip,
49
- pr[:body].to_s.strip,
50
- pr[:general].to_s.downcase == 'ja',
51
- pr[:categories].to_s.split(","),
52
- pr[:source].to_s.strip,
53
- pr[:page].to_s.strip
54
- )
55
- end.compact
56
- end
57
-
58
34
  # doesn't really belong here - data source?
59
35
  def self.from_fusion_table(table_id, api_key)
60
36
  table = FusionTable.new(api_key)
@@ -75,32 +51,31 @@ module Hdo
75
51
  end
76
52
 
77
53
  def self.from_hash(hash)
78
- pr = new hash['party'],
54
+ pr = new hash['externalId'],
55
+ hash['party'],
79
56
  hash['body'],
80
57
  hash['general'],
81
58
  hash['categories'],
82
59
  hash['source'],
83
60
  hash['page']
84
61
 
85
- pr.external_id = hash['externalId']
86
-
87
62
  pr
88
63
  end
89
64
 
90
- def initialize(party, body, general, categories, source, page)
65
+ def initialize(external_id, party, body, general, categories, source, page)
66
+ @external_id = external_id
91
67
  @party = strip_if_string(party)
92
68
  @body = strip_if_string(body)
93
69
  @general = general
94
70
  @categories = clean_categories(categories)
95
71
  @source = strip_if_string(source)
96
72
  @page = page
97
-
98
- @external_id = nil
99
73
  end
100
74
 
101
75
  def to_hash
102
76
  h = {
103
77
  'kind' => self.class.kind,
78
+ 'externalId' => @external_id,
104
79
  'party' => @party,
105
80
  'general' => @general,
106
81
  'categories' => @categories,
@@ -109,8 +84,6 @@ module Hdo
109
84
  'body' => @body
110
85
  }
111
86
 
112
- h["externalId"] = @external_id if @external_id
113
-
114
87
  h
115
88
  end
116
89
 
@@ -10,7 +10,9 @@
10
10
  "required": true
11
11
  },
12
12
  "externalId": {
13
- "type": "string"
13
+ "type": "string",
14
+ "description": "A unique identifier for this promise.",
15
+ "required": true
14
16
  },
15
17
  "party": {
16
18
  "type": "string",
@@ -1,5 +1,5 @@
1
1
  module Hdo
2
2
  module StortingImporter
3
- VERSION = "0.1.4"
3
+ VERSION = "0.1.5"
4
4
  end
5
5
  end
@@ -8,34 +8,6 @@ module Hdo
8
8
  it_behaves_like 'type with JSON schema'
9
9
  it_behaves_like 'type with #short_inspect'
10
10
 
11
- it 'builds promises from CSV' do
12
- csv = <<-CSV
13
- Parti;Løftetekst;Generell;Emner;Kilde;Side
14
- A;Ha et inntektspolitisk samarbeid og en økonomisk politikk som sikrer arbeid til alle. ;Ja;LØNN , SYSSELSETTING;PP;10
15
- A;Følge handlingsregelen for en forsvarlig bruk av oljepenger.;Ja;FINANSER;PP;10
16
- A;Bruke penger slik at det bidrar til å utjevne svingninger i økonomien.;Ja;FINANSER;PP;10
17
- A;Sette ned et utvalg som skal gjennomgå årsakene til finanskrisen.;Nei;FINANSER;PP;10
18
- A;Gjennomføre de tiltak som er nødvendig for å sikre et stabilt og fungerende finansmarked.;Ja;FINANSER;PP;10
19
- A;Stille etiske krav til forvaltning av statlig kapital. ;Ja;FINANSER;PP;10
20
- A;Holde de samlede skattene og avgiftene på samme nivå som i dag.;Nei;SKATTER;PP;10
21
- A;Ha en grundig evaluering av skattereformen av 2006, med særlig blikk på fordelingsvirkningene. ;Ja;SKATTER;PP;10
22
- A;Opprettholde formueskatten, men gjøre den mer rettferdig.;Ja;SKATTER;PP;10
23
- CSV
24
-
25
-
26
- promises = Promise.from_csv(csv)
27
-
28
- promises.size.should == 9
29
-
30
- prom = promises.first
31
- prom.party.should == 'A'
32
- prom.body.should == 'Ha et inntektspolitisk samarbeid og en økonomisk politikk som sikrer arbeid til alle.'
33
- prom.general.should be_true
34
- prom.categories.should == %w[LØNN SYSSELSETTING]
35
- prom.source.should == "PP"
36
- prom.page.should == '10'
37
- end
38
-
39
11
  it 'serializes to JSON' do
40
12
  Promise.example.to_json.should be_json <<-JSON
41
13
  {
@@ -51,25 +23,18 @@ module Hdo
51
23
  JSON
52
24
  end
53
25
 
54
- it 'deserializes from JSON with externalId missing' do
55
- pr = Promise.example
56
- pr.external_id = nil
57
-
58
- Promise.from_json(pr.to_json).should be_kind_of(Promise)
59
- end
60
-
61
26
  it 'strips trailing space from the body' do
62
- promise = Promise.new("Party", "Body ", true, ["æøå"], "PP", 8)
27
+ promise = Promise.new("1", "Party", "Body ", true, ["æøå"], "PP", 8)
63
28
  promise.body.should == "Body"
64
29
  end
65
30
 
66
31
  it 'correctly upcases non-ASCII category names' do
67
- promise = Promise.new("Party", "Body", true, ["æøå"], "PP", 8)
32
+ promise = Promise.new("1", "Party", "Body", true, ["æøå"], "PP", 8)
68
33
  promise.categories.should == ["ÆØÅ"]
69
34
  end
70
35
 
71
36
  it 'ignores empty categories' do
72
- promise = Promise.new("Party", "Body", true, ["FOO", ""], "PP", 8)
37
+ promise = Promise.new("1", "Party", "Body", true, ["FOO", ""], "PP", 8)
73
38
  promise.categories.should == ["FOO"]
74
39
  end
75
40
 
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,12 @@
1
1
  require 'rspec'
2
- require 'hdo/storting_importer'
3
2
  require 'pry'
4
3
  require 'pp'
5
4
 
5
+ require 'simplecov'
6
+ SimpleCov.start
7
+ SimpleCov.command_name 'spec'
8
+
9
+ require 'hdo/storting_importer'
6
10
  Dir[File.expand_path("../support/**/*.rb", __FILE__)].each do |f|
7
11
  require f
8
12
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hdo-storting-importer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-11 00:00:00.000000000 Z
12
+ date: 2012-08-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: builder
@@ -219,6 +219,22 @@ dependencies:
219
219
  - - ! '>='
220
220
  - !ruby/object:Gem::Version
221
221
  version: '0'
222
+ - !ruby/object:Gem::Dependency
223
+ name: simplecov
224
+ requirement: !ruby/object:Gem::Requirement
225
+ none: false
226
+ requirements:
227
+ - - ! '>='
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ none: false
234
+ requirements:
235
+ - - ! '>='
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
222
238
  description: Gem to process data from data.stortinget.no
223
239
  email:
224
240
  - jari.bakken@gmail.com