citeproc 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,14 +4,14 @@ module CiteProc
4
4
  describe Engine do
5
5
 
6
6
  it 'cannot be instantiated' do
7
- lambda { Engine.new }.should raise_error(NoMethodError)
7
+ expect { Engine.new }.to raise_error(NoMethodError)
8
8
  end
9
9
 
10
10
  describe 'subclasses' do
11
11
  let(:subject) { Class.new(Engine).new }
12
12
 
13
13
  it 'can be instantiated' do
14
- subject.should_not be nil
14
+ expect(subject).not_to be nil
15
15
  end
16
16
  end
17
17
 
@@ -5,29 +5,29 @@ describe Hash do
5
5
 
6
6
 
7
7
  describe '#deep_copy' do
8
- it { hash.should respond_to(:deep_copy) }
8
+ it { expect(hash).to respond_to(:deep_copy) }
9
9
 
10
10
  it 'returns a copy equal to the hash' do
11
- hash.deep_copy.should == hash
11
+ expect(hash.deep_copy).to eq(hash)
12
12
  end
13
13
 
14
14
  it 'returns a copy that is not identical to the hash' do
15
- hash.deep_copy.should_not equal(hash)
15
+ expect(hash.deep_copy).not_to equal(hash)
16
16
  end
17
17
 
18
18
  it 'returns a deep copy' do
19
- hash.deep_copy[:a].should == hash[:a]
20
- hash.deep_copy[:a].should_not equal(hash[:a])
21
- hash.deep_copy[:a][:b].should == hash[:a][:b]
22
- hash.deep_copy[:a][:b].should_not equal(hash[:a][:b])
23
- hash.deep_copy[:a][:b][:c].should == hash[:a][:b][:c]
19
+ expect(hash.deep_copy[:a]).to eq(hash[:a])
20
+ expect(hash.deep_copy[:a]).not_to equal(hash[:a])
21
+ expect(hash.deep_copy[:a][:b]).to eq(hash[:a][:b])
22
+ expect(hash.deep_copy[:a][:b]).not_to equal(hash[:a][:b])
23
+ expect(hash.deep_copy[:a][:b][:c]).to eq(hash[:a][:b][:c])
24
24
  end
25
25
 
26
26
  context 'when given nested arrays' do
27
27
  let(:hash) {{:a => [[1,2]]}}
28
28
  it 'it returns a deep copy' do
29
- hash.deep_copy[:a].should == hash[:a]
30
- hash.deep_copy[:a].should_not equal(hash[:a])
29
+ expect(hash.deep_copy[:a]).to eq(hash[:a])
30
+ expect(hash.deep_copy[:a]).not_to equal(hash[:a])
31
31
  end
32
32
 
33
33
  end
@@ -43,13 +43,13 @@ describe Hash do
43
43
  # end
44
44
 
45
45
  it 'returns the value of all the arguments applied as keys' do
46
- hash.deep_fetch(:a, :b, :c).should == :d
46
+ expect(hash.deep_fetch(:a, :b, :c)).to eq(:d)
47
47
  end
48
48
 
49
49
  it 'returns nil if any of the values did not exist' do
50
- hash.deep_fetch(:x, :b, :c).should be nil
51
- hash.deep_fetch(:a, :x, :c).should be nil
52
- hash.deep_fetch(:a, :b, :x).should be nil
50
+ expect(hash.deep_fetch(:x, :b, :c)).to be nil
51
+ expect(hash.deep_fetch(:a, :x, :c)).to be nil
52
+ expect(hash.deep_fetch(:a, :b, :x)).to be nil
53
53
  end
54
54
 
55
55
  end
@@ -61,27 +61,27 @@ describe Array do
61
61
  describe '#compact_join' do
62
62
 
63
63
  it 'is equivalent to #join when there are no blank elements' do
64
- [1,2,3].compact_join(' ').should == [1,2,3].join(' ')
64
+ expect([1,2,3].compact_join(' ')).to eq([1,2,3].join(' '))
65
65
  end
66
66
 
67
67
  it 'is equivalent to #compact and #join when there are no empty elements' do
68
- [1,2,3,nil,nil,4].compact_join(' ').should == [1,2,3,nil,nil,4].compact.join(' ')
68
+ expect([1,2,3,nil,nil,4].compact_join(' ')).to eq([1,2,3,nil,nil,4].compact.join(' '))
69
69
  end
70
70
 
71
71
  it 'returns an empty string if the array is empty' do
72
- [].compact_join(' ').should == ''
72
+ expect([].compact_join(' ')).to eq('')
73
73
  end
74
74
 
75
75
  it 'returns an empty string if there are only nil elements' do
76
- [nil,nil,nil].compact_join(' ').should == ''
76
+ expect([nil,nil,nil].compact_join(' ')).to eq('')
77
77
  end
78
78
 
79
79
  it 'returns an empty string if there are only empty elements' do
80
- ['','',''].compact_join(' ').should == ''
80
+ expect(['','',''].compact_join(' ')).to eq('')
81
81
  end
82
82
 
83
83
  it 'returns an empty string if there are only blank elements' do
84
- ['','',nil,'',nil].compact_join(' ').should == ''
84
+ expect(['','',nil,'',nil].compact_join(' ')).to eq('')
85
85
  end
86
86
 
87
87
  end
@@ -8,26 +8,26 @@ module CiteProc
8
8
  it { should_not be nil }
9
9
 
10
10
  it 'creates number variables for number fields' do
11
- Item.new(:edition => 23).edition.should be_a(Number)
11
+ expect(Item.new(:edition => 23).edition).to be_a(Number)
12
12
  end
13
13
 
14
14
  it 'creates text variable for text fields' do
15
- Item.new(:ISBN => 23).isbn.should be_a(Text)
15
+ expect(Item.new(:ISBN => 23).isbn).to be_a(Text)
16
16
  end
17
17
 
18
18
  it 'creates date variables for date fields' do
19
- Item.new(:accessed => Time.now).accessed.should be_a(CiteProc::Date)
19
+ expect(Item.new(:accessed => Time.now).accessed).to be_a(CiteProc::Date)
20
20
  end
21
21
 
22
22
  it 'creates names variables for name fields' do
23
- Item.new(:editor => { :given => 'Jane' }).editor.should be_a(Names)
24
- Item.new(:editor => 'Plato and Socrates').editor.should have(2).names
23
+ expect(Item.new(:editor => { :given => 'Jane' }).editor).to be_a(Names)
24
+ expect(Item.new(:editor => 'Plato and Socrates').editor.names.size).to eq(2)
25
25
  end
26
26
 
27
27
  it 'creates text variables for unknown fields' do
28
28
  v = Item.new(:unknown => 42)[:unknown]
29
- v.should be_a(Variable)
30
- v.should == '42'
29
+ expect(v).to be_a(Variable)
30
+ expect(v).to eq('42')
31
31
  end
32
32
  end
33
33
 
@@ -35,44 +35,44 @@ module CiteProc
35
35
  it { should be_empty }
36
36
 
37
37
  it 'returns false when there is at least one variable in the item' do
38
- Item.new(:title => 'foo').should_not be_empty
38
+ expect(Item.new(:title => 'foo')).not_to be_empty
39
39
  end
40
40
  end
41
41
 
42
42
  describe '#each' do
43
43
  it 'yields each variable to the given block' do
44
- Item.new(:title => 'foo', :edition => 2).each.map {|kv| kv.join('-') }.sort.should == %w{edition-2 title-foo}
44
+ expect(Item.new(:title => 'foo', :edition => 2).each.map {|kv| kv.join('-') }.sort).to eq(%w{edition-2 title-foo})
45
45
  end
46
46
  end
47
47
 
48
48
  describe '#each_value' do
49
49
  it "yields each variable's value to the given block" do
50
- Item.new(:title => 'foo', :edition => 2).each_value.map(&:to_s).sort.should == %w{2 foo}
50
+ expect(Item.new(:title => 'foo', :edition => 2).each_value.map(&:to_s).sort).to eq(%w{2 foo})
51
51
  end
52
52
  end
53
53
 
54
54
  describe '#to_citeproc' do
55
55
  it 'returns an empty hash by default' do
56
- Item.new.to_citeproc.should == {}
56
+ expect(Item.new.to_citeproc).to eq({})
57
57
  end
58
58
 
59
59
  it 'returns a hash with stringified keys' do
60
- Item.new(:issue => 42).to_citeproc.should have_key('issue')
60
+ expect(Item.new(:issue => 42).to_citeproc).to have_key('issue')
61
61
  end
62
62
 
63
63
  it 'returns a hash with stringified values' do
64
- Item.new(:issue => 42).to_citeproc.values[0].should == '42'
64
+ expect(Item.new(:issue => 42).to_citeproc.values[0]).to eq('42')
65
65
  end
66
66
  end
67
67
 
68
68
  describe '#dup' do
69
69
  it 'returns a copy' do
70
70
  item = Item.new
71
- item.dup.should_not equal(item)
71
+ expect(item.dup).not_to equal(item)
72
72
  end
73
73
 
74
74
  it 'copies all variables' do
75
- Item.new(:issued => 1976).dup[:issued].year.should == 1976
75
+ expect(Item.new(:issued => 1976).dup[:issued].year).to eq(1976)
76
76
  end
77
77
  end
78
78
  end
@@ -75,44 +75,44 @@ module CiteProc
75
75
  describe 'formatting options' do
76
76
 
77
77
  it 'does not always demote particle by default' do
78
- Name.new.always_demote_particle?.should be false
79
- Name.new.always_demote_non_dropping_particle?.should be false
78
+ expect(Name.new.always_demote_particle?).to be false
79
+ expect(Name.new.always_demote_non_dropping_particle?).to be false
80
80
  end
81
81
 
82
82
  it 'does not demote particle by default' do
83
- Name.new.demote_particle?.should be false
84
- Name.new.demote_non_dropping_particle?.should be false
83
+ expect(Name.new.demote_particle?).to be false
84
+ expect(Name.new.demote_non_dropping_particle?).to be false
85
85
  end
86
86
 
87
87
  it 'does not demote particle in sort order by default' do
88
- Name.new.sort_order!.demote_particle?.should be false
89
- Name.new.sort_order!.demote_non_dropping_particle?.should be false
88
+ expect(Name.new.sort_order!.demote_particle?).to be false
89
+ expect(Name.new.sort_order!.demote_non_dropping_particle?).to be false
90
90
  end
91
91
 
92
92
  it 'always demotes particle if option is set' do
93
- Name.new({}, :'demote-non-dropping-particle' => 'display-and-sort').always_demote_particle?.should be true
94
- Name.new({}, :'demote-non-dropping-particle' => 'display-and-sort').always_demote_non_dropping_particle?.should be true
93
+ expect(Name.new({}, :'demote-non-dropping-particle' => 'display-and-sort').always_demote_particle?).to be true
94
+ expect(Name.new({}, :'demote-non-dropping-particle' => 'display-and-sort').always_demote_non_dropping_particle?).to be true
95
95
  end
96
96
 
97
97
  it 'demotes particle in sort order if option is set to sort-only' do
98
- Name.new({}, :'demote-non-dropping-particle' => 'display-and-sort').sort_order!.demote_particle?.should be true
98
+ expect(Name.new({}, :'demote-non-dropping-particle' => 'display-and-sort').sort_order!.demote_particle?).to be true
99
99
  end
100
100
 
101
101
  it 'never demotes particle by default' do
102
- Name.new.never_demote_particle?.should be true
103
- Name.new.never_demote_non_dropping_particle?.should be true
102
+ expect(Name.new.never_demote_particle?).to be true
103
+ expect(Name.new.never_demote_non_dropping_particle?).to be true
104
104
  end
105
105
 
106
106
  it 'is not in sort order by default' do
107
- Name.new.sort_order?.should be false
107
+ expect(Name.new.sort_order?).to be false
108
108
  end
109
109
 
110
110
  it 'uses the long form by default' do
111
- Name.new.should be_long_form
111
+ expect(Name.new).to be_long_form
112
112
  end
113
113
 
114
114
  it 'does not use short form by default' do
115
- Name.new.should_not be_short_form
115
+ expect(Name.new).not_to be_short_form
116
116
  end
117
117
 
118
118
  end
@@ -122,41 +122,41 @@ module CiteProc
122
122
 
123
123
  it 'returns the given name initials' do
124
124
  name.given = 'Edgar A'
125
- name.initials.should == 'E. A.'
125
+ expect(name.initials).to eq('E. A.')
126
126
 
127
127
  name.options[:initialize] = 'false'
128
- name.initials.should == 'Edgar A.'
128
+ expect(name.initials).to eq('Edgar A.')
129
129
  end
130
130
 
131
131
  describe 'private helpers' do
132
132
  it '#initials_of initializes the given string' do
133
- name.send(:initials_of, 'James T.').should == 'J. T.'
134
- name.send(:initials_of, 'JT').should == 'J. T.'
135
- name.send(:initials_of, 'James T').should == 'J. T.'
136
- name.send(:initials_of, 'Jean-Luc').should == 'J.-L.'
137
- name.send(:initials_of, 'Vérité Äpfel').should == 'V. Ä.'
133
+ expect(name.send(:initials_of, 'James T.')).to eq('J. T.')
134
+ expect(name.send(:initials_of, 'JT')).to eq('J. T.')
135
+ expect(name.send(:initials_of, 'James T')).to eq('J. T.')
136
+ expect(name.send(:initials_of, 'Jean-Luc')).to eq('J.-L.')
137
+ expect(name.send(:initials_of, 'Vérité Äpfel')).to eq('V. Ä.')
138
138
 
139
139
  name.initialize_without_hyphen!
140
- name.send(:initials_of, 'Jean-Luc').should == 'J. L.'
140
+ expect(name.send(:initials_of, 'Jean-Luc')).to eq('J. L.')
141
141
 
142
142
  name.options[:'initialize-with'] = '.'
143
- name.send(:initials_of, 'James T.').should == 'J.T.'
144
- name.send(:initials_of, 'James T').should == 'J.T.'
145
- name.send(:initials_of, 'Jean-Luc').should == 'J.L.'
143
+ expect(name.send(:initials_of, 'James T.')).to eq('J.T.')
144
+ expect(name.send(:initials_of, 'James T')).to eq('J.T.')
145
+ expect(name.send(:initials_of, 'Jean-Luc')).to eq('J.L.')
146
146
 
147
147
  name.options[:'initialize-with-hyphen'] = true
148
- name.send(:initials_of, 'Jean-Luc').should == 'J.-L.'
148
+ expect(name.send(:initials_of, 'Jean-Luc')).to eq('J.-L.')
149
149
  end
150
150
 
151
151
  it '#initialize_existing_only initializes only current initials' do
152
- name.send(:existing_initials_of, 'James T. Kirk').should == 'James T. Kirk'
153
- name.send(:existing_initials_of, 'James T.Kirk').should == 'James T. Kirk'
154
- name.send(:existing_initials_of, 'James T').should == 'James T.'
155
- name.send(:existing_initials_of, 'Jean-Luc').should == 'Jean-Luc'
156
- name.send(:existing_initials_of, 'J.-L.M.').should == 'J.-L. M.'
157
- name.send(:existing_initials_of, 'J-L').should == 'J.-L.'
158
- name.send(:existing_initials_of, 'J-LM').should == 'J.-L. M.'
159
- name.send(:existing_initials_of, 'JT').should == 'J. T.'
152
+ expect(name.send(:existing_initials_of, 'James T. Kirk')).to eq('James T. Kirk')
153
+ expect(name.send(:existing_initials_of, 'James T.Kirk')).to eq('James T. Kirk')
154
+ expect(name.send(:existing_initials_of, 'James T')).to eq('James T.')
155
+ expect(name.send(:existing_initials_of, 'Jean-Luc')).to eq('Jean-Luc')
156
+ expect(name.send(:existing_initials_of, 'J.-L.M.')).to eq('J.-L. M.')
157
+ expect(name.send(:existing_initials_of, 'J-L')).to eq('J.-L.')
158
+ expect(name.send(:existing_initials_of, 'J-LM')).to eq('J.-L. M.')
159
+ expect(name.send(:existing_initials_of, 'JT')).to eq('J. T.')
160
160
  end
161
161
  end
162
162
  end
@@ -166,11 +166,11 @@ module CiteProc
166
166
  describe '.new' do
167
167
 
168
168
  it 'accepts a symbolized hash' do
169
- Name.new(:family => 'Doe').format.should == 'Doe'
169
+ expect(Name.new(:family => 'Doe').format).to eq('Doe')
170
170
  end
171
171
 
172
172
  it 'accepts a stringified hash' do
173
- Name.new('family' => 'Doe').format.should == 'Doe'
173
+ expect(Name.new('family' => 'Doe').format).to eq('Doe')
174
174
  end
175
175
 
176
176
  end
@@ -180,7 +180,7 @@ module CiteProc
180
180
  describe '#dup' do
181
181
 
182
182
  it 'returns a new name copied by value' do
183
- poe.dup.upcase!.format.should_not == poe.format
183
+ expect(poe.dup.upcase!.format).not_to eq(poe.format)
184
184
  end
185
185
 
186
186
  end
@@ -188,31 +188,31 @@ module CiteProc
188
188
  describe 'script awareness' do
189
189
 
190
190
  it 'english names are romanesque' do
191
- frank.should be_romanesque
191
+ expect(frank).to be_romanesque
192
192
  end
193
193
 
194
194
  it 'ancient greek names are romanesque' do
195
- aristotle.should be_romanesque
195
+ expect(aristotle).to be_romanesque
196
196
  end
197
197
 
198
198
  it 'russian names are romanesque' do
199
- dostoyevksy.should be_romanesque
199
+ expect(dostoyevksy).to be_romanesque
200
200
  end
201
201
 
202
202
  it 'japanese names are not romanesque' do
203
- japanese.should_not be_romanesque
203
+ expect(japanese).not_to be_romanesque
204
204
  end
205
205
 
206
206
  it 'german names are romanesque' do
207
- Name.new(:given => 'Friedrich', :family => 'Hölderlin').should be_romanesque
207
+ expect(Name.new(:given => 'Friedrich', :family => 'Hölderlin')).to be_romanesque
208
208
  end
209
209
 
210
210
  it 'french names are romanesque' do
211
- utf.should be_romanesque
211
+ expect(utf).to be_romanesque
212
212
  end
213
213
 
214
214
  it 'markup does not interfere with romanesque test' do
215
- markup.should be_romanesque
215
+ expect(markup).to be_romanesque
216
216
  end
217
217
 
218
218
  end
@@ -220,15 +220,15 @@ module CiteProc
220
220
  describe 'literals' do
221
221
 
222
222
  it 'is a literal if the literal attribute is set' do
223
- Name.new(:literal => 'GNU/Linux').should be_literal
223
+ expect(Name.new(:literal => 'GNU/Linux')).to be_literal
224
224
  end
225
225
 
226
226
  it 'is not literal by default' do
227
- Name.new.should_not be_literal
227
+ expect(Name.new).not_to be_literal
228
228
  end
229
229
 
230
230
  it 'is literal even if other name parts are set' do
231
- Name.new(:family => 'Tux', :literal => 'GNU/Linux').should be_literal
231
+ expect(Name.new(:family => 'Tux', :literal => 'GNU/Linux')).to be_literal
232
232
  end
233
233
 
234
234
  end
@@ -236,27 +236,27 @@ module CiteProc
236
236
  describe 'in-place manipulation (bang! methods)' do
237
237
 
238
238
  it 'delegates to string for family name' do
239
- plato.swapcase!.format.should == 'pLATO'
239
+ expect(plato.swapcase!.format).to eq('pLATO')
240
240
  end
241
241
 
242
242
  it 'delegates to string for given name' do
243
- humboldt.gsub!(/^Alex\w*/, 'Wilhelm').format.should == 'Wilhelm von Humboldt'
243
+ expect(humboldt.gsub!(/^Alex\w*/, 'Wilhelm').format).to eq('Wilhelm von Humboldt')
244
244
  end
245
245
 
246
246
  it 'delegates to string for dropping particle' do
247
- humboldt.upcase!.dropping_particle.should == 'VON'
247
+ expect(humboldt.upcase!.dropping_particle).to eq('VON')
248
248
  end
249
249
 
250
250
  it 'delegates to string for non dropping particle' do
251
- van_gogh.upcase!.non_dropping_particle.should == 'VAN'
251
+ expect(van_gogh.upcase!.non_dropping_particle).to eq('VAN')
252
252
  end
253
253
 
254
254
  it 'delegates to string for suffix' do
255
- frank.sub!(/jr./i, 'Sr.').format.should == 'Frank G. Bennett, Sr.'
255
+ expect(frank.sub!(/jr./i, 'Sr.').format).to eq('Frank G. Bennett, Sr.')
256
256
  end
257
257
 
258
258
  it 'returns the name object' do
259
- poe.upcase!.should be_a(Name)
259
+ expect(poe.upcase!).to be_a(Name)
260
260
  end
261
261
 
262
262
  end
@@ -265,19 +265,19 @@ module CiteProc
265
265
  describe '#format' do
266
266
 
267
267
  it 'returns an empty string by default' do
268
- Name.new.format.should be_empty
268
+ expect(Name.new.format).to be_empty
269
269
  end
270
270
 
271
271
  it 'returns the last name if only last name is set' do
272
- Name.new(:family => 'Doe').format.should == 'Doe'
272
+ expect(Name.new(:family => 'Doe').format).to eq('Doe')
273
273
  end
274
274
 
275
275
  it 'returns the first name if only the first name is set' do
276
- Name.new(:given => 'John').format.should == 'John'
276
+ expect(Name.new(:given => 'John').format).to eq('John')
277
277
  end
278
278
 
279
279
  it 'prints japanese names using static ordering' do
280
- japanese.format.should == '穂積 陳重'
280
+ expect(japanese.format).to eq('穂積 陳重')
281
281
  end
282
282
 
283
283
  it 'returns the literal if the name is a literal' do
@@ -285,45 +285,45 @@ module CiteProc
285
285
  end
286
286
 
287
287
  it 'returns the name in display order by default' do
288
- Name.new(:family => 'Doe', :given => 'John').format.should == 'John Doe'
288
+ expect(Name.new(:family => 'Doe', :given => 'John').format).to eq('John Doe')
289
289
  end
290
290
 
291
291
  it 'returns the name in sort order if the sort order option is active' do
292
- Name.new(:family => 'Doe', :given => 'John').sort_order!.format.should == 'Doe, John'
292
+ expect(Name.new(:family => 'Doe', :given => 'John').sort_order!.format).to eq('Doe, John')
293
293
  end
294
294
 
295
295
  it 'returns the full given name' do
296
- saunders.format.should == 'John Bertrand de Cusance Morant Saunders'
296
+ expect(saunders.format).to eq('John Bertrand de Cusance Morant Saunders')
297
297
  end
298
298
 
299
299
  it 'includes dropping particles' do
300
- humboldt.format.should == 'Alexander von Humboldt'
300
+ expect(humboldt.format).to eq('Alexander von Humboldt')
301
301
  end
302
302
 
303
303
  it 'includes non dropping particles' do
304
- van_gogh.format.should == 'Vincent van Gogh'
304
+ expect(van_gogh.format).to eq('Vincent van Gogh')
305
305
  end
306
306
 
307
307
  it 'includes suffices' do
308
- jr.format.should == 'James Stephens Jr.'
308
+ expect(jr.format).to eq('James Stephens Jr.')
309
309
  end
310
310
 
311
311
  it 'uses the comma suffix option' do
312
- frank.format.should == 'Frank G. Bennett, Jr.'
312
+ expect(frank.format).to eq('Frank G. Bennett, Jr.')
313
313
  end
314
314
 
315
315
  it 'prints unicode characters' do
316
- utf.format.should == "Gérard de la Martinière III"
316
+ expect(utf.format).to eq("Gérard de la Martinière III")
317
317
  end
318
318
 
319
319
  it 'prints russian names normally' do
320
- dostoyevksy.format.should == 'Фёдор Михайлович Достоевский'
320
+ expect(dostoyevksy.format).to eq('Фёдор Михайлович Достоевский')
321
321
  end
322
322
 
323
323
  describe 'when static ordering is active' do
324
324
 
325
325
  it 'always prints the family name first' do
326
- poe.static_order!.format.should == 'Poe Edgar Allen'
326
+ expect(poe.static_order!.format).to eq('Poe Edgar Allen')
327
327
  end
328
328
 
329
329
  end
@@ -331,19 +331,19 @@ module CiteProc
331
331
  describe 'when the sort order option is active' do
332
332
 
333
333
  it 'returns an empty string by default' do
334
- Name.new.sort_order!.format.should be_empty
334
+ expect(Name.new.sort_order!.format).to be_empty
335
335
  end
336
336
 
337
337
  it 'returns the last name if only last name is set' do
338
- Name.new({:family => 'Doe'}, { :'name-as-sort-order' => true }).format.should == 'Doe'
338
+ expect(Name.new({:family => 'Doe'}, { :'name-as-sort-order' => true }).format).to eq('Doe')
339
339
  end
340
340
 
341
341
  it 'returns the first name if only the first name is set' do
342
- Name.new(:given => 'John').sort_order!.format.should == 'John'
342
+ expect(Name.new(:given => 'John').sort_order!.format).to eq('John')
343
343
  end
344
344
 
345
345
  it 'prints japanese names using static ordering' do
346
- japanese.sort_order!.format.should == '穂積 陳重'
346
+ expect(japanese.sort_order!.format).to eq('穂積 陳重')
347
347
  end
348
348
 
349
349
  it 'returns the literal if the name is a literal' do
@@ -351,31 +351,31 @@ module CiteProc
351
351
  end
352
352
 
353
353
  it 'uses comma for suffix if comma suffix is set' do
354
- frank.sort_order!.format.should == 'Bennett, Frank G., Jr.'
354
+ expect(frank.sort_order!.format).to eq('Bennett, Frank G., Jr.')
355
355
  end
356
356
 
357
357
  it 'also uses comma for suffix if comma suffix is *not* set' do
358
- jr.sort_order!.format.should == 'Stephens, James, Jr.'
358
+ expect(jr.sort_order!.format).to eq('Stephens, James, Jr.')
359
359
  end
360
360
 
361
361
  it 'for normal names it prints them as "family, given"' do
362
- poe.sort_order!.format.should == 'Poe, Edgar Allen'
362
+ expect(poe.sort_order!.format).to eq('Poe, Edgar Allen')
363
363
  end
364
364
 
365
365
  it 'particles come after given name by default' do
366
- van_gogh.sort_order!.format.should == 'van Gogh, Vincent'
366
+ expect(van_gogh.sort_order!.format).to eq('van Gogh, Vincent')
367
367
  end
368
368
 
369
369
  it 'particles come after given name if demote option is active' do
370
- van_gogh.sort_order!.demote_particle!.format.should == 'Gogh, Vincent van'
370
+ expect(van_gogh.sort_order!.demote_particle!.format).to eq('Gogh, Vincent van')
371
371
  end
372
372
 
373
373
  it 'dropping particles come after given name' do
374
- humboldt.sort_order!.format.should == 'Humboldt, Alexander von'
374
+ expect(humboldt.sort_order!.format).to eq('Humboldt, Alexander von')
375
375
  end
376
376
 
377
377
  it 'by default if all parts are set they are returned as "particle family, first dropping-particle, suffix"' do
378
- utf.sort_order!.format.should == 'la Martinière, Gérard de, III'
378
+ expect(utf.sort_order!.format).to eq('la Martinière, Gérard de, III')
379
379
  end
380
380
 
381
381
  end
@@ -385,52 +385,52 @@ module CiteProc
385
385
  describe '#sort_order' do
386
386
 
387
387
  it 'returns only a single token for literal names' do
388
- Name.new(:literal => 'ACME Corp.').sort_order.should have(1).element
388
+ expect(Name.new(:literal => 'ACME Corp.').sort_order.size).to eq(1)
389
389
  end
390
390
 
391
391
  it 'strips leading "the" off literal names' do
392
- Name.new(:literal => 'The ACME Corp.').sort_order[0].should == 'ACME Corp.'
392
+ expect(Name.new(:literal => 'The ACME Corp.').sort_order[0]).to eq('ACME Corp.')
393
393
  end
394
394
 
395
395
  it 'strips leading "a" off literal names' do
396
- Name.new(:literal => 'A Company').sort_order[0].should == 'Company'
396
+ expect(Name.new(:literal => 'A Company').sort_order[0]).to eq('Company')
397
397
  end
398
398
 
399
399
  it 'strips leading "an" off literal names' do
400
- Name.new(:literal => 'an ACME Corp.').sort_order[0].should == 'ACME Corp.'
400
+ expect(Name.new(:literal => 'an ACME Corp.').sort_order[0]).to eq('ACME Corp.')
401
401
  end
402
402
 
403
403
  it 'strips leading "l\'" off literal names' do
404
- Name.new(:literal => "L'Augustine").sort_order[0].should == 'Augustine'
404
+ expect(Name.new(:literal => "L'Augustine").sort_order[0]).to eq('Augustine')
405
405
  end
406
406
 
407
407
  it 'always returns four tokens for non literal names' do
408
- poe.sort_order.should have(4).elements
409
- joe.sort_order.should have(4).elements
410
- aristotle.sort_order.should have(4).elements
411
- utf.sort_order.should have(4).elements
412
- frank.sort_order.should have(4).elements
413
- japanese.sort_order.should have(4).elements
408
+ expect(poe.sort_order.size).to eq(4)
409
+ expect(joe.sort_order.size).to eq(4)
410
+ expect(aristotle.sort_order.size).to eq(4)
411
+ expect(utf.sort_order.size).to eq(4)
412
+ expect(frank.sort_order.size).to eq(4)
413
+ expect(japanese.sort_order.size).to eq(4)
414
414
  end
415
415
 
416
416
  it 'demotes non dropping particles if option is set' do
417
- van_gogh.demote_particle!.sort_order.should == ['Gogh', 'van', 'Vincent', '']
417
+ expect(van_gogh.demote_particle!.sort_order).to eq(['Gogh', 'van', 'Vincent', ''])
418
418
  end
419
419
 
420
420
  it 'does not demote non dropping particles by default' do
421
- van_gogh.sort_order.should == ['van Gogh', '', 'Vincent', '']
421
+ expect(van_gogh.sort_order).to eq(['van Gogh', '', 'Vincent', ''])
422
422
  end
423
423
 
424
424
  it 'does not demote non dropping particles by default but dropping particles are demoted' do
425
- utf.sort_order.should == ['la Martinière', 'de', 'Gérard', 'III']
425
+ expect(utf.sort_order).to eq(['la Martinière', 'de', 'Gérard', 'III'])
426
426
  end
427
427
 
428
428
  it 'demotes dropping particles' do
429
- humboldt.sort_order.should == ['Humboldt', 'von', 'Alexander', '']
429
+ expect(humboldt.sort_order).to eq(['Humboldt', 'von', 'Alexander', ''])
430
430
  end
431
431
 
432
432
  it 'combines non dropping particles with family name if option demote-non-dropping-particles is not active' do
433
- van_gogh.never_demote_particle!.sort_order.should == ['van Gogh', '', 'Vincent', '']
433
+ expect(van_gogh.never_demote_particle!.sort_order).to eq(['van Gogh', '', 'Vincent', ''])
434
434
  end
435
435
 
436
436
  end
@@ -438,7 +438,7 @@ module CiteProc
438
438
  describe 'sorting' do
439
439
 
440
440
  it 'sorts by sort order by default' do
441
- [poe, utf, joe, plato].sort.should == [joe, plato, utf, poe]
441
+ expect([poe, utf, joe, plato].sort).to eq([joe, plato, utf, poe])
442
442
  end
443
443
 
444
444
  end
@@ -458,43 +458,43 @@ module CiteProc
458
458
  describe 'constructing' do
459
459
 
460
460
  it 'accepts a single name' do
461
- lambda { Names.new(joe) }.should_not raise_error
461
+ expect { Names.new(joe) }.not_to raise_error
462
462
  end
463
463
 
464
464
  it 'accepts a single name as hash' do
465
- Names.new(:given => 'Jim').should have(1).names
465
+ expect(Names.new(:given => 'Jim').names.size).to eq(1)
466
466
  end
467
467
 
468
468
  it 'accepts two names' do
469
- Names.new(joe, poe).should have(2).names
469
+ expect(Names.new(joe, poe).names.size).to eq(2)
470
470
  end
471
471
 
472
472
  it 'accepts two names as hash' do
473
- Names.new({:given => 'Jim'}, {:family => 'Jameson'}).should have(2).names
473
+ expect(Names.new({:given => 'Jim'}, {:family => 'Jameson'}).names.size).to eq(2)
474
474
  end
475
475
 
476
476
  it 'accepts an array of names' do
477
- Names.new([joe, poe]).should have(2).names
477
+ expect(Names.new([joe, poe]).names.size).to eq(2)
478
478
  end
479
479
 
480
480
  end
481
481
 
482
482
  describe 'parsing' do
483
483
  it 'accepts a single name as a string' do
484
- Names.parse('Edgar A. Poe').should have(1).names
484
+ expect(Names.parse('Edgar A. Poe').names.size).to eq(1)
485
485
  end
486
486
 
487
487
  it 'accepts multiple names as a string' do
488
- Names.parse('Edgar A. Poe and Hawthorne, Nathaniel and Herman Melville').should have(3).names
488
+ expect(Names.parse('Edgar A. Poe and Hawthorne, Nathaniel and Herman Melville').names.size).to eq(3)
489
489
  end
490
490
 
491
491
  it 'parses the passed-in family names' do
492
- Names.parse('Edgar A. Poe and Hawthorne, Nathaniel and Herman Melville').map { |n|
493
- n.values_at(:family) }.flatten.should == %w{ Poe Hawthorne Melville }
492
+ expect(Names.parse('Edgar A. Poe and Hawthorne, Nathaniel and Herman Melville').map { |n|
493
+ n.values_at(:family) }.flatten).to eq(%w{ Poe Hawthorne Melville })
494
494
  end
495
495
 
496
496
  it '#parse returns nil on error' do
497
- Names.parse(23).should be_nil
497
+ expect(Names.parse(23)).to be_nil
498
498
  end
499
499
 
500
500
  it '#parse! raises an error on bad input' do
@@ -506,11 +506,11 @@ module CiteProc
506
506
  describe '#strip_markup' do
507
507
 
508
508
  it 'strips markup off string representation' do
509
- Names.new(markup).strip_markup.should == utf.to_s
509
+ expect(Names.new(markup).strip_markup).to eq(utf.to_s)
510
510
  end
511
511
 
512
512
  it 'when using the bang! version, strips markup off each name part' do
513
- Names.new(markup).strip_markup![0].should == utf
513
+ expect(Names.new(markup).strip_markup![0]).to eq(utf)
514
514
  end
515
515
 
516
516
 
@@ -518,7 +518,7 @@ module CiteProc
518
518
 
519
519
  describe 'bang! methods' do
520
520
  it 'delegate to the individual names and return self' do
521
- Names.new(poe, plato, joe).upcase!.map(&:given).should == ['EDGAR ALLEN', 'PLATO', 'JOE']
521
+ expect(Names.new(poe, plato, joe).upcase!.map(&:given)).to eq(['EDGAR ALLEN', 'PLATO', 'JOE'])
522
522
  end
523
523
  end
524
524
 
@@ -528,34 +528,34 @@ module CiteProc
528
528
 
529
529
  describe "##{setter}" do
530
530
  it 'sets the delimiter precedes last option accordingly' do
531
- Names.new.send(setter).send(predicate).should == true
531
+ expect(Names.new.send(setter).send(predicate)).to eq(true)
532
532
  end
533
533
  end
534
534
  end
535
535
 
536
536
  describe '#delimiter_precedes_last' do
537
537
  it 'returns false by default' do
538
- Names.new(joe).should_not be_delimiter_precedes_last
538
+ expect(Names.new(joe)).not_to be_delimiter_precedes_last
539
539
  end
540
540
 
541
541
  it 'returns false by default for a single name' do
542
- Names.new(joe).should_not be_delimiter_precedes_last
542
+ expect(Names.new(joe)).not_to be_delimiter_precedes_last
543
543
  end
544
544
 
545
545
  it 'returns false by default for two names' do
546
- Names.new(joe, poe).should_not be_delimiter_precedes_last
546
+ expect(Names.new(joe, poe)).not_to be_delimiter_precedes_last
547
547
  end
548
548
 
549
549
  it 'returns true for two names when option set to always' do
550
- Names.new(joe, poe).delimiter_always_precedes_last!.should be_delimiter_precedes_last
550
+ expect(Names.new(joe, poe).delimiter_always_precedes_last!).to be_delimiter_precedes_last
551
551
  end
552
552
 
553
553
  it 'returns true by default for three names' do
554
- Names.new(joe, poe, plato).should be_delimiter_precedes_last
554
+ expect(Names.new(joe, poe, plato)).to be_delimiter_precedes_last
555
555
  end
556
556
 
557
557
  it 'returns false for three names when option set to :never' do
558
- Names.new(joe, poe, plato).delimiter_never_precedes_last!.should_not be_delimiter_precedes_last
558
+ expect(Names.new(joe, poe, plato).delimiter_never_precedes_last!).not_to be_delimiter_precedes_last
559
559
  end
560
560
  end
561
561
 
@@ -563,13 +563,13 @@ module CiteProc
563
563
 
564
564
  describe 'when there is only a single name' do
565
565
  it 'prints the name in sort order' do
566
- Names.new(poe).to_bibtex.should == 'Poe, Edgar Allen'
566
+ expect(Names.new(poe).to_bibtex).to eq('Poe, Edgar Allen')
567
567
  end
568
568
  end
569
569
 
570
570
  describe 'when there are two or more names' do
571
571
  it 'prints the names in sort order connected with the word "and"' do
572
- Names.new(poe, plato, humboldt).to_bibtex.should == 'Poe, Edgar Allen and Plato and Humboldt, Alexander von'
572
+ expect(Names.new(poe, plato, humboldt).to_bibtex).to eq('Poe, Edgar Allen and Plato and Humboldt, Alexander von')
573
573
  end
574
574
  end
575
575
 
@@ -585,57 +585,57 @@ module CiteProc
585
585
  end
586
586
 
587
587
  it 'prints only the et-al-use-first names' do
588
- gang_of_four.to_s.should match(/gamma.+helm/i)
589
- gang_of_four.to_s.should_not match(/johnson|vlissides/i)
588
+ expect(gang_of_four.to_s).to match(/gamma.+helm/i)
589
+ expect(gang_of_four.to_s).not_to match(/johnson|vlissides/i)
590
590
  end
591
591
 
592
592
  it 'adds et-al at the end' do
593
- gang_of_four.to_s.should end_with('FOO')
593
+ expect(gang_of_four.to_s).to end_with('FOO')
594
594
  end
595
595
 
596
596
  it 'adds the delimiter before et-al when multiple names are printed' do
597
- gang_of_four.to_s.should end_with(', FOO')
597
+ expect(gang_of_four.to_s).to end_with(', FOO')
598
598
  end
599
599
 
600
600
  it 'does not add the delimiter before et-al when only one name is printed' do
601
601
  gang_of_four.options[:'et-al-use-first'] = 1
602
- gang_of_four.to_s.should_not end_with(', FOO')
602
+ expect(gang_of_four.to_s).not_to end_with(', FOO')
603
603
  end
604
604
 
605
605
  end
606
606
 
607
607
  it 'squeezes multiple whitespace between delimiter and connector' do
608
- Names.new(poe, humboldt, van_gogh, joe).to_s.should_not match(/\s{2}/)
608
+ expect(Names.new(poe, humboldt, van_gogh, joe).to_s).not_to match(/\s{2}/)
609
609
  end
610
610
  end
611
611
 
612
612
  describe '#each' do
613
613
  it 'returns an enumerator when no block given' do
614
- gang_of_four.each.should respond_to(:each)
614
+ expect(gang_of_four.each).to respond_to(:each)
615
615
  end
616
616
  end
617
617
 
618
618
  describe '#to_citeproc' do
619
619
  it 'returns a list of hashes' do
620
- gang_of_four.to_citeproc.map(&:class).uniq.should == [Hash]
620
+ expect(gang_of_four.to_citeproc.map(&:class).uniq).to eq([Hash])
621
621
  end
622
622
  end
623
623
 
624
624
  describe 'sorting' do
625
625
  it 'accepts other Names instance' do
626
- (Names.new(poe, plato) <=> Names.new(plato)).should equal(1)
627
- (Names.new(plato) <=> Names.new(poe, plato)).should equal(-1)
626
+ expect(Names.new(poe, plato) <=> Names.new(plato)).to equal(1)
627
+ expect(Names.new(plato) <=> Names.new(poe, plato)).to equal(-1)
628
628
  end
629
629
 
630
630
  it 'accepts other list of names' do
631
- (Names.new(poe, plato) <=> [plato]).should equal(1)
632
- (Names.new(plato) <=> [poe, plato]).should equal(-1)
631
+ expect(Names.new(poe, plato) <=> [plato]).to equal(1)
632
+ expect(Names.new(plato) <=> [poe, plato]).to equal(-1)
633
633
  end
634
634
  end
635
635
 
636
636
  describe '#inspect' do
637
637
  it 'returns a string' do
638
- gang_of_four.inspect.should be_a(String)
638
+ expect(gang_of_four.inspect).to be_a(String)
639
639
  end
640
640
  end
641
641