mab2 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,140 @@
1
+ describe Mab2::Document::Scope do
2
+ let(:doc) do
3
+ document.doc
4
+ end
5
+
6
+ let(:document) do
7
+ Mab2::Document.new(mab_xml)
8
+ end
9
+
10
+ let(:mab_xml) do
11
+ read_asset("mab_files/mab.xml")
12
+ end
13
+
14
+ let(:scope) do
15
+ document.field("100", ind1: "1", ind2: "2")
16
+ end
17
+
18
+ describe "#get" do
19
+ it "returns itself" do
20
+ expect(scope.get).to eq(scope)
21
+ end
22
+ end
23
+
24
+ describe "#get_subfield" do
25
+ it "returns a subfield by it's code" do
26
+ expect(doc.field("PSW").fields.first.get_subfield("s")).to be_a(described_class::Subfield)
27
+ end
28
+
29
+ context "if the requested subfield does not exists" do
30
+ let(:subfield) { doc.field("PSW").fields.first.get_subfield("foo") }
31
+
32
+ it "returns an empty subfield" do
33
+ expect(subfield.code).to be(nil)
34
+ expect(subfield.value).to be(nil)
35
+ end
36
+ end
37
+ end
38
+
39
+ describe "#fields" do
40
+ it "returns an array of scopes, one scope per datafield" do
41
+ fields = doc.field("PSW").fields
42
+
43
+ expect(fields).to be_an(Array)
44
+ fields.each { |field| expect(field).to be_a(Mab2::Document::Scope) }
45
+ expect(fields.length).to eq(doc.field("PSW").values.length)
46
+ end
47
+ end
48
+
49
+ describe "#subfield" do
50
+ it "returns a document scope for the given parameters" do
51
+ expect(scope.subfield(subfield = ["a"]).instance_variable_get(:@subfield)).to eq(subfield)
52
+ end
53
+ end
54
+
55
+ describe "#subfields" do
56
+ it "returns an array of subfields" do
57
+ subfields = doc.field("PSW").fields.first.subfields
58
+
59
+ expect(subfields).to be_an(Array)
60
+ expect(subfields).not_to be(:empty)
61
+ end
62
+ end
63
+
64
+ describe "#value" do
65
+ it "returns all subfield values of the first datafield which matches the scope conditions" do
66
+ expect(doc.field("PSW").subfield("s").value).to eq("Politiktheorie")
67
+ expect(doc.field("PSW").subfield(["s", "9"]).value).to eq("Politiktheorie (DE-588)4046563-9")
68
+ end
69
+
70
+ context "if join_subfields option is given" do
71
+ it "joins the subfields by the given value" do
72
+ expect(doc.field("PSW").value(join_subfields: ": ")).to eq("Politiktheorie: (DE-588)4046563-9")
73
+ end
74
+ end
75
+
76
+ context "if there are more than one field" do
77
+ context "if the scope conditions do not match the first field" do
78
+ it "returns the subfield values of the first field which matches the scope conditions" do
79
+ expect(doc.field("PSW").subfield("x").value).to eq("Theorie")
80
+ end
81
+
82
+ context "if legacy_mabmapper_mode is requested" do
83
+ let(:document) do
84
+ Mab2::Document.new(mab_xml, legacy_mabmapper_mode: true)
85
+ end
86
+
87
+ it "returns an empty string" do
88
+ expect(doc.field("PSW").subfield("x").value).to eq("")
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
94
+
95
+ describe "#values" do
96
+ it "returns subfield values for the fields of the scope" do
97
+ expect(doc.field("PSW").get.values).to eq([
98
+ ["Politiktheorie", "(DE-588)4046563-9"],
99
+ ["Politik", "Theorie", "(DE-588)4046563-9"],
100
+ ["Politische Theorien", "(DE-588)4046563-9"]
101
+ ])
102
+
103
+ expect(doc.field("PSW", ind1: "-").values).to eq([
104
+ ["Politik", "Theorie", "(DE-588)4046563-9"]
105
+ ])
106
+
107
+ expect(doc.field("PSW", ind1: "1").values).to eq([
108
+ ["Politiktheorie", "(DE-588)4046563-9"],
109
+ ["Politische Theorien", "(DE-588)4046563-9"]
110
+ ])
111
+
112
+ expect(doc.field("PSW", ind1: "1").subfield("s").values).to eq([
113
+ ["Politiktheorie"],
114
+ ["Politische Theorien"]
115
+ ])
116
+
117
+ expect(doc.field("PSW", ind1: ["-", "1"], ind2: ["1", "2"]).subfield(["x","9"]).values).to eq([
118
+ ["(DE-588)4046563-9"],
119
+ ["Theorie", "(DE-588)4046563-9"],
120
+ ["(DE-588)4046563-9"]
121
+ ])
122
+
123
+ expect(doc.field("PSW", ind1: "1").subfield("y").values).to eq([
124
+ [],
125
+ []
126
+ ])
127
+
128
+ expect(doc.field("Foo", ind1: "1").subfield("y").values).to eq([])
129
+ expect(doc.field("PSW", ind1: "y").subfield("y").values).to eq([])
130
+ end
131
+
132
+ context "if join_subfields option is given" do
133
+ it "joins the subfields by the given separator" do
134
+ expect(doc.field("PSW", ind1: "-").values(join_subfields: "; ")).to eq([
135
+ "Politik; Theorie; (DE-588)4046563-9"
136
+ ])
137
+ end
138
+ end
139
+ end
140
+ end
@@ -0,0 +1,52 @@
1
+ describe Mab2::Document do
2
+ let(:doc) do
3
+ document.doc
4
+ end
5
+
6
+ let(:document) do
7
+ described_class.new(mab_xml)
8
+ end
9
+
10
+ let(:mab_xml) do
11
+ read_asset("mab_files/mab.xml")
12
+ end
13
+
14
+ describe "#initialize" do
15
+ context "if called with a mab xml string" do
16
+ it "returns a #{described_class} instance" do
17
+ expect(described_class.new(mab_xml)).to be_a(described_class)
18
+ end
19
+ end
20
+ end
21
+
22
+ describe "#controlfield" do
23
+ let(:controlfield_result) { doc.controlfield("SYS") }
24
+
25
+ it "returns the value of an controlfield as an array of chars" do
26
+ expect(controlfield_result).to be_an(Array)
27
+ expect(controlfield_result).not_to be(:empty)
28
+ end
29
+
30
+ it "replaces all \"|\" with nil" do
31
+ expect(doc.controlfield("050").at(0)).to eq("a")
32
+ expect(doc.controlfield("050").at(1)).to be(nil)
33
+ end
34
+ end
35
+
36
+ describe "#doc" do
37
+ it "returns itself" do
38
+ expect(document.doc).to be(document)
39
+ end
40
+ end
41
+
42
+ describe "#field" do
43
+ it "returns a document scope for the given parameters" do
44
+ scope = doc.field(tag = "100", ind1: (ind1 = ["1"]), ind2: (ind2 = ["2"]))
45
+
46
+ expect(scope).to be_a(described_class::Scope)
47
+ expect(scope.instance_variable_get(:@tag)).to eq(tag)
48
+ expect(scope.instance_variable_get(:@ind1)).to eq(ind1)
49
+ expect(scope.instance_variable_get(:@ind2)).to eq(ind2)
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,2 @@
1
+ describe Mab2 do
2
+ end
@@ -0,0 +1,30 @@
1
+ if ENV["CODECLIMATE_REPO_TOKEN"]
2
+ require "codeclimate-test-reporter"
3
+ CodeClimate::TestReporter.start
4
+ else
5
+ require "simplecov"
6
+ SimpleCov.start
7
+ end
8
+
9
+ require "mab2"
10
+
11
+ begin
12
+ require "pry"
13
+ rescue LoadError
14
+ end
15
+
16
+ RSpec.configure do |config|
17
+ # begin --- rspec 3.1 generator
18
+ config.expect_with :rspec do |expectations|
19
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
20
+ end
21
+
22
+ config.mock_with :rspec do |mocks|
23
+ mocks.verify_partial_doubles = true
24
+ end
25
+ # end --- rspec 3.1 generator
26
+ end
27
+
28
+ def read_asset(path_to_file)
29
+ File.read(File.expand_path(File.join(File.dirname(__FILE__), "assets", path_to_file)))
30
+ end
metadata CHANGED
@@ -1,148 +1,122 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mab2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Sievers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-21 00:00:00.000000000 Z
11
+ date: 2015-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: nokogiri
14
+ name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.6.0
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 1.6.0
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: activesupport
28
+ name: badgerfish
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
32
- - !ruby/object:Gem::Version
33
- version: 3.2.0
34
- - - <
31
+ - - ">="
35
32
  - !ruby/object:Gem::Version
36
- version: 4.0.0
37
- type: :development
33
+ version: 0.2.0
34
+ type: :runtime
38
35
  prerelease: false
39
36
  version_requirements: !ruby/object:Gem::Requirement
40
37
  requirements:
41
- - - '>='
42
- - !ruby/object:Gem::Version
43
- version: 3.2.0
44
- - - <
38
+ - - ">="
45
39
  - !ruby/object:Gem::Version
46
- version: 4.0.0
40
+ version: 0.2.0
47
41
  - !ruby/object:Gem::Dependency
48
42
  name: bundler
49
43
  requirement: !ruby/object:Gem::Requirement
50
44
  requirements:
51
- - - ~>
45
+ - - "~>"
52
46
  - !ruby/object:Gem::Version
53
- version: '1.3'
47
+ version: '1.7'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
51
  requirements:
58
- - - ~>
52
+ - - "~>"
59
53
  - !ruby/object:Gem::Version
60
- version: '1.3'
54
+ version: '1.7'
61
55
  - !ruby/object:Gem::Dependency
62
- name: minitest
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ~>
66
- - !ruby/object:Gem::Version
67
- version: 5.0.6
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - ~>
73
- - !ruby/object:Gem::Version
74
- version: 5.0.6
75
- - !ruby/object:Gem::Dependency
76
- name: pry
56
+ name: rake
77
57
  requirement: !ruby/object:Gem::Requirement
78
58
  requirements:
79
- - - ~>
59
+ - - ">="
80
60
  - !ruby/object:Gem::Version
81
- version: 0.9.12.2
61
+ version: '0'
82
62
  type: :development
83
63
  prerelease: false
84
64
  version_requirements: !ruby/object:Gem::Requirement
85
65
  requirements:
86
- - - ~>
66
+ - - ">="
87
67
  - !ruby/object:Gem::Version
88
- version: 0.9.12.2
68
+ version: '0'
89
69
  - !ruby/object:Gem::Dependency
90
- name: pry-nav
70
+ name: rspec
91
71
  requirement: !ruby/object:Gem::Requirement
92
72
  requirements:
93
- - - ~>
73
+ - - ">="
94
74
  - !ruby/object:Gem::Version
95
- version: 0.2.3
75
+ version: 3.0.0
96
76
  type: :development
97
77
  prerelease: false
98
78
  version_requirements: !ruby/object:Gem::Requirement
99
79
  requirements:
100
- - - ~>
80
+ - - ">="
101
81
  - !ruby/object:Gem::Version
102
- version: 0.2.3
82
+ version: 3.0.0
103
83
  - !ruby/object:Gem::Dependency
104
- name: rake
84
+ name: simplecov
105
85
  requirement: !ruby/object:Gem::Requirement
106
86
  requirements:
107
- - - '>='
87
+ - - ">="
108
88
  - !ruby/object:Gem::Version
109
- version: '0'
89
+ version: 0.8.0
110
90
  type: :development
111
91
  prerelease: false
112
92
  version_requirements: !ruby/object:Gem::Requirement
113
93
  requirements:
114
- - - '>='
94
+ - - ">="
115
95
  - !ruby/object:Gem::Version
116
- version: '0'
117
- description: Simplifies access and handling of MAB documents
118
- email:
119
- - michael_sievers@web.de
96
+ version: 0.8.0
97
+ description: Simplifies access and handling of Mab documents
98
+ email:
120
99
  executables: []
121
100
  extensions: []
122
101
  extra_rdoc_files: []
123
102
  files:
124
- - .gitignore
103
+ - ".gitignore"
104
+ - ".rspec"
125
105
  - Gemfile
126
106
  - LICENSE.txt
127
107
  - README.md
128
108
  - Rakefile
129
109
  - lib/mab2.rb
130
- - lib/mab2/aleph_sequential_adapter.rb
131
110
  - lib/mab2/document.rb
132
- - lib/mab2/document/datafield.rb
133
111
  - lib/mab2/document/scope.rb
134
- - lib/mab2/document/subfield.rb
135
- - lib/mab2/mab_xml_adapter.rb
136
112
  - lib/mab2/version.rb
137
113
  - mab2.gemspec
138
- - test/mab2/test_controlfield.rb
139
- - test/mab2/test_datafield.rb
140
- - test/mab_files/PAD01.000806191.PRIMO.xml
141
- - test/mab_files/PAD01.000978177.PRIMO.xml
142
- - test/mab_files/dsl_1.xml
143
- - test/mab_files/dsl_2.xml
144
- - test/test_helper.rb
145
- - test/test_mab2.rb
114
+ - spec/assets/mab_files/mab.xml
115
+ - spec/mab2/document/scope/subfield_spec.rb
116
+ - spec/mab2/document/scope_spec.rb
117
+ - spec/mab2/document_spec.rb
118
+ - spec/mab2_spec.rb
119
+ - spec/spec_helper.rb
146
120
  homepage: https://github.com/msievers/mab2
147
121
  licenses:
148
122
  - MIT
@@ -153,26 +127,24 @@ require_paths:
153
127
  - lib
154
128
  required_ruby_version: !ruby/object:Gem::Requirement
155
129
  requirements:
156
- - - '>='
130
+ - - ">="
157
131
  - !ruby/object:Gem::Version
158
132
  version: '0'
159
133
  required_rubygems_version: !ruby/object:Gem::Requirement
160
134
  requirements:
161
- - - '>='
135
+ - - ">="
162
136
  - !ruby/object:Gem::Version
163
137
  version: '0'
164
138
  requirements: []
165
139
  rubyforge_project:
166
- rubygems_version: 2.0.6
140
+ rubygems_version: 2.4.6
167
141
  signing_key:
168
142
  specification_version: 4
169
143
  summary: Implementation if the mabmapper DSL
170
144
  test_files:
171
- - test/mab2/test_controlfield.rb
172
- - test/mab2/test_datafield.rb
173
- - test/mab_files/PAD01.000806191.PRIMO.xml
174
- - test/mab_files/PAD01.000978177.PRIMO.xml
175
- - test/mab_files/dsl_1.xml
176
- - test/mab_files/dsl_2.xml
177
- - test/test_helper.rb
178
- - test/test_mab2.rb
145
+ - spec/assets/mab_files/mab.xml
146
+ - spec/mab2/document/scope/subfield_spec.rb
147
+ - spec/mab2/document/scope_spec.rb
148
+ - spec/mab2/document_spec.rb
149
+ - spec/mab2_spec.rb
150
+ - spec/spec_helper.rb