hdo-storting-importer 0.1.3 → 0.1.4

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.
@@ -29,6 +29,24 @@ module Hdo
29
29
  new(*arr)
30
30
  end
31
31
 
32
+ def self.from_storting_doc(doc)
33
+ doc.css("voteringsforslag").map do |n|
34
+ rep_node = n.css("forslag_levert_av_representant").first
35
+ if rep_node && rep_node['nil'] != 'true'
36
+ delivered_by = Representative.from_storting_node(rep_node)
37
+ else
38
+ delivered_by = nil
39
+ end
40
+
41
+ new n.css("forslag_id").first.text,
42
+ n.css("forslag_betegnelse").first.text,
43
+ n.css("forslag_paa_vegne_av_tekst").first.text,
44
+ Util.remove_invalid_html(n.css("forslag_tekst").first.text),
45
+ delivered_by
46
+
47
+ end
48
+ end
49
+
32
50
  def initialize(external_id, description, on_behalf_of, body, delivered_by)
33
51
  @external_id = external_id
34
52
  @description = description
@@ -11,6 +11,7 @@ module Hdo
11
11
 
12
12
  def remove_invalid_html(str)
13
13
  str.gsub("<\\p>", "")
14
+
14
15
  end
15
16
 
16
17
  ID_CONVERSIONS = {
@@ -1,5 +1,5 @@
1
1
  module Hdo
2
2
  module StortingImporter
3
- VERSION = "0.1.3"
3
+ VERSION = "0.1.4"
4
4
  end
5
5
  end
@@ -103,21 +103,7 @@ module Hdo
103
103
  end
104
104
 
105
105
  def add_storting_propositions(node)
106
- @propositions += node.css("voteringsforslag").map do |n|
107
- rep_node = n.css("forslag_levert_av_representant").first
108
- if rep_node && rep_node['nil'] != 'true'
109
- delivered_by = Representative.from_storting_node(rep_node)
110
- else
111
- delivered_by = nil
112
- end
113
-
114
- Proposition.new n.css("forslag_id").first.text,
115
- n.css("forslag_betegnelse").first.text,
116
- n.css("forslag_paa_vegne_av_tekst").first.text,
117
- Util.remove_invalid_html(n.css("forslag_tekst").first.text),
118
- delivered_by
119
-
120
- end
106
+ @propositions += Proposition.from_storting_doc(node)
121
107
  end
122
108
 
123
109
  def add_storting_results(node)
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  require 'spec_helper'
2
3
 
3
4
  module Hdo
@@ -7,6 +8,80 @@ module Hdo
7
8
  it_behaves_like 'type with JSON schema'
8
9
  it_behaves_like 'type with #short_inspect'
9
10
 
11
+ it 'builds proposition from the Storting XML' do
12
+ xml = <<-XML
13
+ <voteringsforslag>
14
+ <versjon>1.0</versjon>
15
+ <forslag_betegnelse>Forslag nr. 24 fra Per Olaf Lundteigen på vegne av Senterpartiet</forslag_betegnelse>
16
+ <forslag_betegnelse_kort>nr. 24 på vegne av Sp</forslag_betegnelse_kort>
17
+ <forslag_id>40037987</forslag_id>
18
+ <forslag_levert_av_representant>
19
+ <versjon>1.0</versjon>
20
+ <doedsdato>0001-01-01T00:00:00</doedsdato>
21
+ <etternavn>Lundteigen</etternavn>
22
+ <foedselsdato>1953-04-18T00:00:00</foedselsdato>
23
+ <fornavn>Per Olaf</fornavn>
24
+ <id>POL</id>
25
+ <kjoenn>mann</kjoenn>
26
+ </forslag_levert_av_representant>
27
+ <forslag_paa_vegne_av_tekst>Senterpartiet:</forslag_paa_vegne_av_tekst>
28
+ <forslag_sorteringsnummer>0</forslag_sorteringsnummer>
29
+ <forslag_tekst>&lt;p&gt;Stortinget ber regjeringa arbeide for å øke sjølforsyningsgraden av mat fra norsk jordbruk.&lt;/p&gt;</forslag_tekst>
30
+ <forslag_type>loest_forslag</forslag_type>
31
+ </voteringsforslag>
32
+ XML
33
+
34
+ props = Proposition.from_storting_doc(parse(xml))
35
+ props.size.should == 1
36
+
37
+ prop = props.first
38
+
39
+ prop.external_id.should == "40037987"
40
+ prop.delivered_by.should be_kind_of(Representative)
41
+ prop.on_behalf_of.should == "Senterpartiet:"
42
+ prop.description.should == "Forslag nr. 24 fra Per Olaf Lundteigen på vegne av Senterpartiet"
43
+ prop.body.should == "<p>Stortinget ber regjeringa arbeide for å øke sjølforsyningsgraden av mat fra norsk jordbruk.</p>"
44
+ end
45
+
46
+ it 'builds a proposition from buggy Storting XML' do
47
+ # see https://github.com/holderdeord/hdo-site/issues/138
48
+ xml = <<-XML
49
+ <?xml version="1.0" encoding="utf-8"?>
50
+ <voteringsforslag_oversikt xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://data.stortinget.no">
51
+ <versjon>1.0</versjon>
52
+ <votering_id>2409</votering_id>
53
+ <voteringsforslag_liste>
54
+ <voteringsforslag>
55
+ <versjon>1.0</versjon>
56
+ <forslag_betegnelse i:nil="true" />
57
+ <forslag_betegnelse_kort i:nil="true" />
58
+ <forslag_id>-1</forslag_id>
59
+ <forslag_levert_av_representant i:nil="true" />
60
+ <forslag_paa_vegne_av_tekst i:nil="true" />
61
+ <forslag_sorteringsnummer>0</forslag_sorteringsnummer>
62
+ <forslag_tekst>&lt;FONT SIZE=2&gt;
63
+ &lt;div class=WordSection1&gt;
64
+ &lt;p class=MsoNormal&gt;Utenriksministerens redegjørelse om utviklingen i
65
+ Afghanistan samt norsk sivilt og militært engasjement i Stortingets møte 29.
66
+ mai 2012 - vedlegges protokollen.&lt;BR&gt;
67
+ &lt;/div&gt;
68
+ &lt;/FONT&gt;
69
+ </forslag_tekst>
70
+ <forslag_type>ikke_spesifisert</forslag_type>
71
+ </voteringsforslag>
72
+ </voteringsforslag_liste>
73
+ </voteringsforslag_oversikt>
74
+ XML
75
+
76
+ props = Proposition.from_storting_doc(parse(xml))
77
+ props.size.should == 1
78
+
79
+ prop = props.first
80
+ prop.description.should == ""
81
+ prop.external_id.should == "-1"
82
+ prop.body.should_not be_empty
83
+ end
84
+
10
85
  end
11
86
  end
12
87
  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.3
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: