mab2 0.0.4 → 0.1.0

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.
@@ -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