Skip to content

Commit 827859c

Browse files
Fix rubocop
1 parent 2ab0fb6 commit 827859c

File tree

8 files changed

+51
-34
lines changed

8 files changed

+51
-34
lines changed

.rubocop.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,16 @@ AllCops:
66
TargetRubyVersion: 3.1
77
NewCops: enable
88

9+
# Named keyword arguments are used in many cases and names have to match
10+
Lint/UnusedBlockArgument:
11+
Enabled: false
12+
913
# Do not enforce documentation
1014
Style/Documentation:
1115
Enabled: false
1216

1317
# Disabled due to complex use cases
1418
RSpec/NestedGroups:
1519
Enabled: false
20+
RSpec/MultipleMemoizedHelpers:
21+
Enabled: false

lib/json/streamer/callbacks.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ def start_array
1717
new_level([])
1818
end
1919

20-
def key(k, symbolize_keys)
21-
@aggregator.key = symbolize_keys ? k.to_sym : k
20+
def key(param, symbolize_keys)
21+
@aggregator.key = symbolize_keys ? param.to_sym : param
2222
end
2323

2424
def value(value)

lib/json/streamer/json_streamer.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ def <<(data)
1919
parser << data
2020
end
2121

22+
# rubocop:disable Metrics/MethodLength
2223
def get(nesting_level: -1, key: nil, yield_values: true, symbolize_keys: false)
2324
conditions = Conditions.new(yield_level: nesting_level, yield_key: key)
2425
conditions.yield_value = ->(aggregator:, value:) { false } unless yield_values
@@ -40,7 +41,9 @@ def get(nesting_level: -1, key: nil, yield_values: true, symbolize_keys: false)
4041

4142
unyielded_items
4243
end
44+
# rubocop:enable Metrics/MethodLength
4345

46+
# rubocop:disable Metrics/MethodLength
4447
def get_with_conditions(conditions, options = {})
4548
@parser = Parser.new(@event_generator, symbolize_keys: options[:symbolize_keys])
4649
unyielded_items = []
@@ -57,6 +60,7 @@ def get_with_conditions(conditions, options = {})
5760

5861
unyielded_items
5962
end
63+
# rubocop:enable Metrics/MethodLength
6064

6165
def aggregator
6266
parser.aggregator

lib/json/streamer/parser.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ def initialize(event_generator, options = {})
1414
@event_consumer = Callbacks.new(@aggregator)
1515
end
1616

17+
# rubocop:disable Metrics/MethodLength
18+
# rubocop:disable Metrics/AbcSize
1719
def get(conditions)
1820
@event_generator.start_object { @event_consumer.start_object }
1921
@event_generator.start_array { @event_consumer.start_array }
@@ -40,6 +42,8 @@ def get(conditions)
4042
end
4143
end
4244
end
45+
# rubocop:enable Metrics/MethodLength
46+
# rubocop:enable Metrics/AbcSize
4347

4448
def <<(data)
4549
@event_generator << data

spec/json/streamer/conditions_spec.rb

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,42 +13,42 @@
1313
end
1414

1515
RSpec.shared_examples 'yield' do |method|
16-
context 'level' do
17-
context 'true' do
16+
context 'with level' do
17+
context 'when true' do
1818
let(:level) { 1 }
1919
let(:yield_level) { 1 }
2020

2121
it 'returns whether provided level equals yield_level' do
22-
expect(conditions.send(method).call(aggregator: aggregator)).to be
22+
expect(conditions.send(method).call(aggregator: aggregator)).to be_truthy
2323
end
2424
end
2525

26-
context 'false' do
26+
context 'when false' do
2727
let(:level) { 2 }
2828
let(:yield_level) { 1 }
2929

3030
it 'returns whether provided level equals yield_level' do
31-
expect(conditions.send(method).call(aggregator: aggregator)).not_to be
31+
expect(conditions.send(method).call(aggregator: aggregator)).to be_falsey
3232
end
3333
end
3434
end
3535

36-
context 'key' do
37-
context 'true' do
36+
context 'with key' do
37+
context 'when true' do
3838
let(:key) { 'key' }
3939
let(:yield_key) { 'key' }
4040

4141
it 'returns whether provided key equals yield_key' do
42-
expect(conditions.send(method).call(aggregator: aggregator)).to be
42+
expect(conditions.send(method).call(aggregator: aggregator)).to be_truthy
4343
end
4444
end
4545

46-
context 'false' do
46+
context 'when false' do
4747
let(:key) { 'else' }
4848
let(:yield_key) { 'key' }
4949

5050
it 'returns whether provided key equals yield_key' do
51-
expect(conditions.send(method).call(aggregator: aggregator)).not_to be
51+
expect(conditions.send(method).call(aggregator: aggregator)).to be_falsey
5252
end
5353
end
5454
end

spec/json/streamer/json_streamer_spec.rb

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,27 +29,27 @@
2929

3030
describe '#<<' do
3131
it 'forwards data to parser' do
32-
data = {}
3332
streamer = Json::Streamer.parser
33+
allow(streamer).to receive(:<<)
3434

35-
expect(streamer.parser).to receive(:<<).with(data)
35+
streamer << {}
3636

37-
streamer << data
37+
expect(streamer).to have_received(:<<).with({})
3838
end
3939
end
4040

4141
RSpec.shared_examples 'an iterable object' do
4242
let(:hash) { example_multi_level_hash }
4343

4444
context 'when no block is passed' do
45-
let(:subject) { streamer.send(method, **params) }
45+
subject(:send) { streamer.send(method, **params) }
4646

4747
it 'returns an Enumerable' do
48-
expect(subject).to be_a(Enumerable)
48+
expect(send).to be_a(Enumerable)
4949
end
5050

5151
it 'returns array of items that would have been yielded' do
52-
expect(subject).to eq(Array.new(3) { example_hash })
52+
expect(send).to eq(Array.new(3) { example_hash })
5353
end
5454
end
5555

@@ -63,7 +63,10 @@
6363

6464
context 'when an empty block is passed' do
6565
it 'returns an empty Enumerable' do
66+
# rubocop:disable Lint/EmptyBlock
6667
unyielded_objects = streamer.send(method, **params) {}
68+
# rubocop:enable Lint/EmptyBlock
69+
6770
expect(unyielded_objects).to eq([])
6871
end
6972
end
@@ -330,14 +333,14 @@
330333
let(:hash) { example_multi_level_hash }
331334

332335
context 'when no block is passed' do
333-
let(:subject) { streamer.send(method, params) }
336+
subject(:send) { streamer.send(method, params) }
334337

335338
it 'returns an Enumerable' do
336-
expect(subject).to be_a(Enumerable)
339+
expect(send).to be_a(Enumerable)
337340
end
338341

339342
it 'returns array of items that would have been yielded' do
340-
expect(subject).to eq(Array.new(3) { example_hash })
343+
expect(send).to eq(Array.new(3) { example_hash })
341344
end
342345
end
343346

@@ -351,7 +354,10 @@
351354

352355
context 'when an empty block is passed' do
353356
it 'returns an empty Enumerable' do
357+
# rubocop:disable Lint/EmptyBlock
354358
unyielded_objects = streamer.send(method, params) {}
359+
# rubocop:enable Lint/EmptyBlock
360+
355361
expect(unyielded_objects).to eq([])
356362
end
357363
end
@@ -419,6 +425,7 @@
419425

420426
describe '#get (generated)' do
421427
context 'with JSONs with various nesting level and number of objects per level' do
428+
# rubocop:disable RSpec/ExampleLength
422429
it 'yields all objects on desired level (checking number of yielded objects)' do
423430
# Setting these options to high can cause the test to run longer
424431
entries_per_level = 2
@@ -437,6 +444,7 @@
437444
expect(yielded_objects.length).to eq(entries_per_level**(max_level - 1))
438445
end
439446
end
447+
# rubocop:enable RSpec/ExampleLength
440448
end
441449
end
442450
end

spec/json/streamer_memory_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
let!(:json_file_mock) { StringIO.new(JSON.generate(hash)) }
1414

1515
RSpec.shared_examples 'does not consumne memory' do
16+
# rubocop:disable RSpec/ExampleLength
17+
# rubocop:disable RSpec/MultipleExpectations
1618
it 'does not increase memory consumption' do
1719
p "Number of elements: #{size}"
1820
memory_usage_before_parsing = current_memory_usage
@@ -31,6 +33,8 @@
3133
expect(memory_usage_after_parsing).to be < 1.1 * memory_usage_before_parsing
3234
p 'With JSON::Streamer memory consumption did not increase by more than 10% during processing.'
3335
end
36+
# rubocop:enable RSpec/ExampleLength
37+
# rubocop:enable RSpec/MultipleExpectations
3438
end
3539

3640
context 'with streaming' do
@@ -57,6 +61,8 @@
5761
context 'with array of objects parsed with JSON::Stream' do
5862
let(:content) { example_hash }
5963

64+
# rubocop:disable RSpec/MultipleExpectations
65+
# rubocop:disable RSpec/ExampleLength
6066
it 'increases memory consumption' do
6167
p "Number of elements: #{size}"
6268
memory_usage_before_parsing = current_memory_usage
@@ -71,6 +77,8 @@
7177
expect(memory_usage_after_parsing).to be > 1.5 * memory_usage_before_parsing
7278
p 'With JSON::Stream memory consumption increased by at least 50% during processing.'
7379
end
80+
# rubocop:enable RSpec/ExampleLength
81+
# rubocop:enable RSpec/MultipleExpectations
7482
end
7583
end
7684
end

spec/json/streamer_spec.rb

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,6 @@
66
expect(described_class.parser).to be_a(Json::Streamer::JsonStreamer)
77
end
88

9-
it 'forwards parameters' do
10-
json_file_mock = StringIO.new(JSON.generate(hash))
11-
chunk_size = 10
12-
13-
custom_generator = Object.new
14-
streamer = described_class.parser(file_io: json_file_mock, chunk_size: chunk_size,
15-
event_generator: custom_generator)
16-
17-
expect(streamer.instance_variable_get(:@file_io)).to eq(json_file_mock)
18-
expect(streamer.instance_variable_get(:@chunk_size)).to eq(chunk_size)
19-
expect(streamer.instance_variable_get(:@event_generator)).to eq(custom_generator)
20-
end
21-
229
it 'defaults to `JSON::Stream::Parser` event generator' do
2310
expect(described_class.parser.instance_variable_get(:@event_generator)).to be_a(JSON::Stream::Parser)
2411
end

0 commit comments

Comments
 (0)