hdo-storting-importer 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
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