hdo-storting-importer 0.0.1

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 (65) hide show
  1. data/.gitignore +16 -0
  2. data/.gitmodules +3 -0
  3. data/.travis.yml +7 -0
  4. data/Gemfile +8 -0
  5. data/LICENSE +20 -0
  6. data/README.md +14 -0
  7. data/Rakefile +11 -0
  8. data/bin/hdo-converter +7 -0
  9. data/features/import.feature +85 -0
  10. data/features/step_definitions/import_steps.rb +0 -0
  11. data/features/support/env.rb +7 -0
  12. data/hdo-storting-importer.gemspec +17 -0
  13. data/lib/hdo/storting_importer/api_data_source.rb +62 -0
  14. data/lib/hdo/storting_importer/category.rb +55 -0
  15. data/lib/hdo/storting_importer/cli.rb +141 -0
  16. data/lib/hdo/storting_importer/committee.rb +35 -0
  17. data/lib/hdo/storting_importer/converter.rb +45 -0
  18. data/lib/hdo/storting_importer/core_ext/enumerable.rb +12 -0
  19. data/lib/hdo/storting_importer/data_source.rb +22 -0
  20. data/lib/hdo/storting_importer/disk_data_source.rb +61 -0
  21. data/lib/hdo/storting_importer/district.rb +36 -0
  22. data/lib/hdo/storting_importer/issue.rb +90 -0
  23. data/lib/hdo/storting_importer/ivar_equality.rb +22 -0
  24. data/lib/hdo/storting_importer/parsing_data_source.rb +59 -0
  25. data/lib/hdo/storting_importer/party.rb +31 -0
  26. data/lib/hdo/storting_importer/promise.rb +49 -0
  27. data/lib/hdo/storting_importer/promise_converter.rb +48 -0
  28. data/lib/hdo/storting_importer/representative.rb +106 -0
  29. data/lib/hdo/storting_importer/script_importer.rb +20 -0
  30. data/lib/hdo/storting_importer/util.rb +26 -0
  31. data/lib/hdo/storting_importer/version.rb +5 -0
  32. data/lib/hdo/storting_importer/vote.rb +171 -0
  33. data/lib/hdo/storting_importer.rb +41 -0
  34. data/spec/fixtures/input/categories.xml +1351 -0
  35. data/spec/fixtures/input/committees.xml +92 -0
  36. data/spec/fixtures/input/districts.xml +101 -0
  37. data/spec/fixtures/input/issues.xml +2852 -0
  38. data/spec/fixtures/input/parties.xml +42 -0
  39. data/spec/fixtures/input/promises-a.csv +341 -0
  40. data/spec/fixtures/input/propositions_2175.xml +64 -0
  41. data/spec/fixtures/input/propositions_2176.xml +64 -0
  42. data/spec/fixtures/input/representatives.xml +3218 -0
  43. data/spec/fixtures/input/representatives_today.xml +4872 -0
  44. data/spec/fixtures/input/vote_results_2175.xml +4400 -0
  45. data/spec/fixtures/input/vote_results_2176.xml +4400 -0
  46. data/spec/fixtures/input/votes.xml +85 -0
  47. data/spec/fixtures/output/categories.xml +803 -0
  48. data/spec/fixtures/output/committees.xml +71 -0
  49. data/spec/fixtures/output/districts.xml +79 -0
  50. data/spec/fixtures/output/issues.xml +836 -0
  51. data/spec/fixtures/output/parties.xml +31 -0
  52. data/spec/fixtures/output/promises-a.xml +3224 -0
  53. data/spec/fixtures/output/representatives.xml +2567 -0
  54. data/spec/fixtures/output/votes.xml +4899 -0
  55. data/spec/hdo/storting_importer/category_spec.rb +76 -0
  56. data/spec/hdo/storting_importer/committee_spec.rb +46 -0
  57. data/spec/hdo/storting_importer/converter_spec.rb +72 -0
  58. data/spec/hdo/storting_importer/district_spec.rb +54 -0
  59. data/spec/hdo/storting_importer/issue_spec.rb +115 -0
  60. data/spec/hdo/storting_importer/party_spec.rb +52 -0
  61. data/spec/hdo/storting_importer/promise_spec.rb +38 -0
  62. data/spec/hdo/storting_importer/representative_spec.rb +81 -0
  63. data/spec/hdo/storting_importer/vote_spec.rb +155 -0
  64. data/spec/spec_helper.rb +39 -0
  65. metadata +145 -0
@@ -0,0 +1,155 @@
1
+ # encoding: UTF-8
2
+ require 'spec_helper'
3
+
4
+ module Hdo
5
+ module StortingImporter
6
+ describe Vote do
7
+
8
+ def create_vote
9
+ vote = Vote.new('2175', '51448', true, false, 'Forslag 24 - 26 på vegne av Per Olaf Lundteigen', 'ikke_spesifisert', 'ikke_spesifisert', '2012-04-12T16:37:27.053', 2, 96, 71)
10
+
11
+ rep = Representative.new('PTA', 'Per-Willy', 'Amundsen', 'M', '1971-01-21T00:00:00', '0001-01-01T00:00:00', 'Troms', 'Fremskrittspartiet', [], '2011-2012')
12
+ rep.vote_result = 'against'
13
+
14
+ vote.propositions << Vote::Proposition.new('1234', 'description', 'on behalf of', 'body', rep)
15
+ vote.representatives << rep
16
+
17
+ vote
18
+ end
19
+
20
+ it "builds votes from the Storting XML list" do
21
+ xml = <<-XML
22
+ <?xml version="1.0" encoding="utf-8"?>
23
+ <sak_votering_oversikt xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://data.stortinget.no">
24
+ <versjon>1.0</versjon>
25
+ <sak_id>51448</sak_id>
26
+ <sak_votering_liste>
27
+ <sak_votering>
28
+ <versjon>1.0</versjon>
29
+ <alternativ_votering_id>-1</alternativ_votering_id>
30
+ <antall_for>2</antall_for>
31
+ <antall_ikke_tilstede>71</antall_ikke_tilstede>
32
+ <antall_mot>96</antall_mot>
33
+ <behandlingsrekkefoelge>1</behandlingsrekkefoelge>
34
+ <dagsorden_sak_nummer>2</dagsorden_sak_nummer>
35
+ <fri_votering>false</fri_votering>
36
+ <kommentar i:nil="true" />
37
+ <personlig_votering>true</personlig_votering>
38
+ <president>
39
+ <versjon>1.0</versjon>
40
+ <doedsdato>0001-01-01T00:00:00</doedsdato>
41
+ <etternavn>Nybakk</etternavn>
42
+ <foedselsdato>1947-02-14T00:00:00</foedselsdato>
43
+ <fornavn>Marit</fornavn>
44
+ <id>MN</id>
45
+ <kjoenn>kvinne</kjoenn>
46
+ <fylke>
47
+ <versjon>1.0</versjon>
48
+ <id>Os</id>
49
+ <navn>Oslo</navn>
50
+ </fylke>
51
+ <parti>
52
+ <versjon>1.0</versjon>
53
+ <id>A</id>
54
+ <navn>Arbeiderpartiet</navn>
55
+ </parti>
56
+ </president>
57
+ <sak_id>51448</sak_id>
58
+ <vedtatt>false</vedtatt>
59
+ <votering_id>2175</votering_id>
60
+ <votering_metode>ikke_spesifisert</votering_metode>
61
+ <votering_resultat_type>ikke_spesifisert</votering_resultat_type>
62
+ <votering_resultat_type_tekst i:nil="true" />
63
+ <votering_tema>Forslag 24 - 26 på vegne av Per Olaf Lundteigen</votering_tema>
64
+ <votering_tid>2012-04-12T16:37:27.053</votering_tid>
65
+ </sak_votering>
66
+ </sak_votering_liste>
67
+ </sak_votering_oversikt>
68
+ XML
69
+
70
+ votes = Vote.from_storting_doc(parse(xml))
71
+ votes.size.should == 1
72
+
73
+ vote = votes.first
74
+ vote.external_id.should == "2175"
75
+ vote.external_issue_id.should == "51448"
76
+ vote.should be_personal
77
+ vote.enacted.should be_false
78
+ vote.subject.should == 'Forslag 24 - 26 på vegne av Per Olaf Lundteigen'
79
+ vote.method.should == 'ikke_spesifisert'
80
+ vote.result_type.should == 'ikke_spesifisert'
81
+ vote.time.should == '2012-04-12T16:37:27.053'
82
+ vote.counts.for.should == 2
83
+ vote.counts.against.should == 96
84
+ vote.counts.absent.should == 71
85
+ end
86
+
87
+ it 'can serialize as HDO XML' do
88
+ vote = create_vote
89
+ vote.to_hdo_xml.should == <<-XML
90
+ <vote>
91
+ <externalId>2175</externalId>
92
+ <externalIssueId>51448</externalIssueId>
93
+ <counts>
94
+ <for>2</for>
95
+ <against>96</against>
96
+ <absent>71</absent>
97
+ </counts>
98
+ <personal>true</personal>
99
+ <enacted>false</enacted>
100
+ <subject>Forslag 24 - 26 på vegne av Per Olaf Lundteigen</subject>
101
+ <method>ikke_spesifisert</method>
102
+ <resultType>ikke_spesifisert</resultType>
103
+ <time>2012-04-12T16:37:27.053</time>
104
+ <representatives>
105
+ <representative>
106
+ <externalId>PTA</externalId>
107
+ <firstName>Per-Willy</firstName>
108
+ <lastName>Amundsen</lastName>
109
+ <gender>M</gender>
110
+ <dateOfBirth>1971-01-21T00:00:00</dateOfBirth>
111
+ <dateOfDeath>0001-01-01T00:00:00</dateOfDeath>
112
+ <district>Troms</district>
113
+ <party>Fremskrittspartiet</party>
114
+ <committees>
115
+ </committees>
116
+ <period>2011-2012</period>
117
+ <voteResult>against</voteResult>
118
+ </representative>
119
+ </representatives>
120
+ <propositions>
121
+ <proposition>
122
+ <externalId>1234</externalId>
123
+ <description>description</description>
124
+ <onBehalfOf>on behalf of</onBehalfOf>
125
+ <body>body</body>
126
+ <deliveredBy>
127
+ <representative>
128
+ <externalId>PTA</externalId>
129
+ <firstName>Per-Willy</firstName>
130
+ <lastName>Amundsen</lastName>
131
+ <gender>M</gender>
132
+ <dateOfBirth>1971-01-21T00:00:00</dateOfBirth>
133
+ <dateOfDeath>0001-01-01T00:00:00</dateOfDeath>
134
+ <district>Troms</district>
135
+ <party>Fremskrittspartiet</party>
136
+ <committees>
137
+ </committees>
138
+ <period>2011-2012</period>
139
+ <voteResult>against</voteResult>
140
+ </representative>
141
+ </deliveredBy>
142
+ </proposition>
143
+ </propositions>
144
+ </vote>
145
+ XML
146
+ end
147
+
148
+ it 'can deserialize HDO XML' do
149
+ orig = create_vote
150
+ Vote.from_hdo_node(parse(orig.to_hdo_xml)).should == orig
151
+ end
152
+
153
+ end
154
+ end
155
+ end
@@ -0,0 +1,39 @@
1
+ require 'rspec'
2
+ require 'hdo/storting_importer'
3
+ require 'pp'
4
+
5
+ module Hdo
6
+ module StortingImporter
7
+ module SpecHelper
8
+ FIXTURES = Pathname.new(File.expand_path("../fixtures", __FILE__))
9
+
10
+ def input_fixture(name)
11
+ FIXTURES.join(input_path("#{name}.xml")).read
12
+ end
13
+
14
+ def output_fixture(name)
15
+ FIXTURES.join(output_path("#{name}.xml")).read
16
+ end
17
+
18
+ def input_path(filename)
19
+ FIXTURES.join("input/#{filename}")
20
+ end
21
+
22
+ def output_path(filename)
23
+ FIXTURES.join("output/#{filename}")
24
+ end
25
+
26
+ def parse(str)
27
+ doc = Nokogiri::XML.parse(str)
28
+ doc.remove_namespaces!
29
+
30
+ doc
31
+ end
32
+
33
+ end
34
+ end
35
+ end
36
+
37
+ RSpec.configure do |c|
38
+ c.include Hdo::StortingImporter::SpecHelper
39
+ end
metadata ADDED
@@ -0,0 +1,145 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hdo-storting-importer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jari Bakken
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-07-24 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Gem to process data from data.stortinget.no
15
+ email:
16
+ - jari.bakken@gmail.com
17
+ executables:
18
+ - hdo-converter
19
+ extensions: []
20
+ extra_rdoc_files: []
21
+ files:
22
+ - .gitignore
23
+ - .gitmodules
24
+ - .travis.yml
25
+ - Gemfile
26
+ - LICENSE
27
+ - README.md
28
+ - Rakefile
29
+ - bin/hdo-converter
30
+ - features/import.feature
31
+ - features/step_definitions/import_steps.rb
32
+ - features/support/env.rb
33
+ - hdo-storting-importer.gemspec
34
+ - lib/hdo/storting_importer.rb
35
+ - lib/hdo/storting_importer/api_data_source.rb
36
+ - lib/hdo/storting_importer/category.rb
37
+ - lib/hdo/storting_importer/cli.rb
38
+ - lib/hdo/storting_importer/committee.rb
39
+ - lib/hdo/storting_importer/converter.rb
40
+ - lib/hdo/storting_importer/core_ext/enumerable.rb
41
+ - lib/hdo/storting_importer/data_source.rb
42
+ - lib/hdo/storting_importer/disk_data_source.rb
43
+ - lib/hdo/storting_importer/district.rb
44
+ - lib/hdo/storting_importer/issue.rb
45
+ - lib/hdo/storting_importer/ivar_equality.rb
46
+ - lib/hdo/storting_importer/parsing_data_source.rb
47
+ - lib/hdo/storting_importer/party.rb
48
+ - lib/hdo/storting_importer/promise.rb
49
+ - lib/hdo/storting_importer/promise_converter.rb
50
+ - lib/hdo/storting_importer/representative.rb
51
+ - lib/hdo/storting_importer/script_importer.rb
52
+ - lib/hdo/storting_importer/util.rb
53
+ - lib/hdo/storting_importer/version.rb
54
+ - lib/hdo/storting_importer/vote.rb
55
+ - spec/fixtures/input/categories.xml
56
+ - spec/fixtures/input/committees.xml
57
+ - spec/fixtures/input/districts.xml
58
+ - spec/fixtures/input/issues.xml
59
+ - spec/fixtures/input/parties.xml
60
+ - spec/fixtures/input/promises-a.csv
61
+ - spec/fixtures/input/propositions_2175.xml
62
+ - spec/fixtures/input/propositions_2176.xml
63
+ - spec/fixtures/input/representatives.xml
64
+ - spec/fixtures/input/representatives_today.xml
65
+ - spec/fixtures/input/vote_results_2175.xml
66
+ - spec/fixtures/input/vote_results_2176.xml
67
+ - spec/fixtures/input/votes.xml
68
+ - spec/fixtures/output/categories.xml
69
+ - spec/fixtures/output/committees.xml
70
+ - spec/fixtures/output/districts.xml
71
+ - spec/fixtures/output/issues.xml
72
+ - spec/fixtures/output/parties.xml
73
+ - spec/fixtures/output/promises-a.xml
74
+ - spec/fixtures/output/representatives.xml
75
+ - spec/fixtures/output/votes.xml
76
+ - spec/hdo/storting_importer/category_spec.rb
77
+ - spec/hdo/storting_importer/committee_spec.rb
78
+ - spec/hdo/storting_importer/converter_spec.rb
79
+ - spec/hdo/storting_importer/district_spec.rb
80
+ - spec/hdo/storting_importer/issue_spec.rb
81
+ - spec/hdo/storting_importer/party_spec.rb
82
+ - spec/hdo/storting_importer/promise_spec.rb
83
+ - spec/hdo/storting_importer/representative_spec.rb
84
+ - spec/hdo/storting_importer/vote_spec.rb
85
+ - spec/spec_helper.rb
86
+ homepage: http://github.com/holderdeord/hdo-storting-importer
87
+ licenses: []
88
+ post_install_message:
89
+ rdoc_options: []
90
+ require_paths:
91
+ - lib
92
+ required_ruby_version: !ruby/object:Gem::Requirement
93
+ none: false
94
+ requirements:
95
+ - - ! '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ required_rubygems_version: !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ requirements: []
105
+ rubyforge_project:
106
+ rubygems_version: 1.8.24
107
+ signing_key:
108
+ specification_version: 3
109
+ summary: Gem to process data from data.stortinget.no
110
+ test_files:
111
+ - features/import.feature
112
+ - features/step_definitions/import_steps.rb
113
+ - features/support/env.rb
114
+ - spec/fixtures/input/categories.xml
115
+ - spec/fixtures/input/committees.xml
116
+ - spec/fixtures/input/districts.xml
117
+ - spec/fixtures/input/issues.xml
118
+ - spec/fixtures/input/parties.xml
119
+ - spec/fixtures/input/promises-a.csv
120
+ - spec/fixtures/input/propositions_2175.xml
121
+ - spec/fixtures/input/propositions_2176.xml
122
+ - spec/fixtures/input/representatives.xml
123
+ - spec/fixtures/input/representatives_today.xml
124
+ - spec/fixtures/input/vote_results_2175.xml
125
+ - spec/fixtures/input/vote_results_2176.xml
126
+ - spec/fixtures/input/votes.xml
127
+ - spec/fixtures/output/categories.xml
128
+ - spec/fixtures/output/committees.xml
129
+ - spec/fixtures/output/districts.xml
130
+ - spec/fixtures/output/issues.xml
131
+ - spec/fixtures/output/parties.xml
132
+ - spec/fixtures/output/promises-a.xml
133
+ - spec/fixtures/output/representatives.xml
134
+ - spec/fixtures/output/votes.xml
135
+ - spec/hdo/storting_importer/category_spec.rb
136
+ - spec/hdo/storting_importer/committee_spec.rb
137
+ - spec/hdo/storting_importer/converter_spec.rb
138
+ - spec/hdo/storting_importer/district_spec.rb
139
+ - spec/hdo/storting_importer/issue_spec.rb
140
+ - spec/hdo/storting_importer/party_spec.rb
141
+ - spec/hdo/storting_importer/promise_spec.rb
142
+ - spec/hdo/storting_importer/representative_spec.rb
143
+ - spec/hdo/storting_importer/vote_spec.rb
144
+ - spec/spec_helper.rb
145
+ has_rdoc: