hdo-storting-importer 0.1.3 → 0.1.4

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