Skip to content

Commit d42199e

Browse files
authored
Drop multijson dependency (#385)
* Replace Multijson by Grape::Entity::Json Add require spec_helper in rspec file Add spec * Fix rubocop
1 parent e71e3cd commit d42199e

File tree

11 files changed

+32
-15
lines changed

11 files changed

+32
-15
lines changed

.rspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
--require spec_helper
12
--color
23
--profile
34
--format documentation

grape-entity.gemspec

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ Gem::Specification.new do |s|
1717
s.required_ruby_version = '>= 3.0'
1818

1919
s.add_runtime_dependency 'activesupport', '>= 3.0.0'
20-
# FIXME: remove dependecy
21-
s.add_runtime_dependency 'multi_json', '>= 1.3.2'
2220

2321
s.files = `git ls-files`.split("\n")
2422
s.test_files = `git ls-files -- {test,spec}/*`.split("\n")

lib/grape_entity/entity.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# frozen_string_literal: true
22

3-
require 'multi_json'
3+
require 'grape_entity/json'
44

55
module Grape
66
# An Entity is a lightweight structure that allows you to easily
@@ -558,7 +558,7 @@ def is_defined_in_entity?(attribute)
558558

559559
def to_json(options = {})
560560
options = options.to_h if options&.respond_to?(:to_h)
561-
MultiJson.dump(serializable_hash(options))
561+
Grape::Entity::Json.dump(serializable_hash(options))
562562
end
563563

564564
def to_xml(options = {})

lib/grape_entity/json.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# frozen_string_literal: true
2+
3+
module Grape
4+
class Entity
5+
if defined?(::MultiJson)
6+
Json = ::MultiJson
7+
else
8+
Json = ::JSON
9+
Json::ParseError = Json::ParserError
10+
end
11+
end
12+
end

spec/grape_entity/entity_spec.rb

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
# frozen_string_literal: true
22

3-
require 'spec_helper'
43
require 'ostruct'
54

65
describe Grape::Entity do
@@ -1755,6 +1754,16 @@ class NoPathCharacterEntity < Grape::Entity
17551754
end
17561755
end
17571756

1757+
describe '#to_json' do
1758+
before do
1759+
fresh_class.expose :name
1760+
end
1761+
1762+
it 'returns a json' do
1763+
expect(fresh_class.new(model).to_json).to eq(JSON.generate(attributes.slice(:name)))
1764+
end
1765+
end
1766+
17581767
describe '#inspect' do
17591768
before do
17601769
fresh_class.class_eval do

spec/grape_entity/exposure/nesting_exposure/nested_exposures_spec.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# frozen_string_literal: true
22

3-
require 'spec_helper'
4-
53
describe Grape::Entity::Exposure::NestingExposure::NestedExposures do
64
subject(:nested_exposures) { described_class.new([]) }
75

spec/grape_entity/exposure/represent_exposure_spec.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# frozen_string_literal: true
22

3-
require 'spec_helper'
4-
53
describe Grape::Entity::Exposure::RepresentExposure do
64
subject(:exposure) { described_class.new(:foo, {}, {}, double, double) }
75

spec/grape_entity/exposure_spec.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# frozen_string_literal: true
22

3-
require 'spec_helper'
4-
53
describe Grape::Entity::Exposure do
64
let(:fresh_class) { Class.new(Grape::Entity) }
75
let(:model) { double(attributes) }

spec/grape_entity/hash_spec.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# frozen_string_literal: true
22

3-
require 'spec_helper'
4-
53
describe Grape::Entity do
64
it 'except option for nested entity', :aggregate_failures do
75
module EntitySpec

spec/grape_entity/json_spec.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# frozen_string_literal: true
2+
3+
describe Grape::Entity::Json do
4+
subject { described_class }
5+
6+
it { is_expected.to eq(JSON) }
7+
end

0 commit comments

Comments
 (0)