jat 0.0.6 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/lib/jat/attribute.rb +5 -18
  3. data/lib/jat/config.rb +5 -20
  4. data/lib/jat/plugins/{common/_activerecord_preloads/_activerecord_preloads.rb → base/base_activerecord_preloads/base_activerecord_preloads.rb} +3 -3
  5. data/lib/jat/plugins/{common/_activerecord_preloads → base/base_activerecord_preloads}/lib/preloader.rb +3 -1
  6. data/lib/jat/plugins/{common/_lower_camel_case/_lower_camel_case.rb → base/base_lower_camel_case/base_lower_camel_case.rb} +3 -3
  7. data/lib/jat/plugins/{common/_preloads/_preloads.rb → base/base_preloads/base_preloads.rb} +3 -3
  8. data/lib/jat/plugins/{common/_preloads → base/base_preloads}/lib/format_user_preloads.rb +1 -1
  9. data/lib/jat/plugins/{common/_preloads → base/base_preloads}/lib/preloads_with_path.rb +1 -1
  10. data/lib/jat/plugins/json_api/lib/fields_param_parser.rb +1 -10
  11. data/lib/jat/plugins/json_api/lib/include_param_parser.rb +1 -10
  12. data/lib/jat/plugins/json_api/lib/map.rb +5 -15
  13. data/lib/jat/plugins/json_api/lib/response.rb +2 -15
  14. data/lib/jat/plugins/json_api/lib/response_piece.rb +10 -19
  15. data/lib/jat/plugins/json_api/plugins/json_api_activerecord/json_api_activerecord.rb +1 -1
  16. data/lib/jat/plugins/json_api/plugins/json_api_lower_camel_case/json_api_lower_camel_case.rb +1 -1
  17. data/lib/jat/plugins/json_api/plugins/json_api_preloads/json_api_preloads.rb +1 -1
  18. data/lib/jat/plugins/json_api/plugins/json_api_validate_params/lib/validate_include_param.rb +1 -3
  19. data/lib/jat/plugins/presenter/presenter.rb +79 -0
  20. data/lib/jat/plugins/simple_api/lib/fields_param_parser.rb +21 -46
  21. data/lib/jat/plugins/simple_api/lib/map.rb +5 -15
  22. data/lib/jat/plugins/simple_api/lib/response.rb +2 -15
  23. data/lib/jat/plugins/simple_api/lib/response_piece.rb +2 -15
  24. data/lib/jat/plugins/simple_api/plugins/simple_api_activerecord/simple_api_activerecord.rb +1 -1
  25. data/lib/jat/plugins/simple_api/plugins/simple_api_lower_camel_case/simple_api_lower_camel_case.rb +1 -1
  26. data/lib/jat/plugins/simple_api/plugins/simple_api_preloads/simple_api_preloads.rb +1 -1
  27. data/lib/jat/plugins/simple_api/plugins/simple_api_validate_params/simple_api_validate_params.rb +1 -1
  28. data/lib/jat/plugins/simple_api/simple_api.rb +1 -1
  29. data/lib/jat/plugins/types/types.rb +55 -0
  30. data/lib/jat/plugins.rb +38 -25
  31. data/lib/jat/utils/jat_class.rb +21 -0
  32. data/lib/jat.rb +9 -6
  33. data/test/lib/jat/attribute_test.rb +8 -0
  34. data/test/lib/jat/plugins/activerecord/activerecord_test.rb +27 -0
  35. data/test/lib/jat/plugins/{_activerecord_preloads/_activerecord_preloads_test.rb → base_activerecord_preloads/base_activerecord_preloads_test.rb} +3 -3
  36. data/test/lib/jat/plugins/{_activerecord_preloads → base_activerecord_preloads}/lib/preloader_test.rb +2 -2
  37. data/test/lib/jat/plugins/{_camel_lower/_camel_lower_test.rb → base_lower_camel_case/base_lower_camel_case_test.rb} +2 -2
  38. data/test/lib/jat/plugins/{_preloads/_preloads_test.rb → base_preloads/base_preloads_test.rb} +2 -2
  39. data/test/lib/jat/plugins/{_preloads → base_preloads}/lib/format_user_preloads_test.rb +3 -3
  40. data/test/lib/jat/plugins/{_preloads → base_preloads}/lib/preloads_with_path_test.rb +2 -2
  41. data/test/lib/jat/plugins/json_api/json_api_test.rb +1 -1
  42. data/test/lib/jat/plugins/json_api/lib/fields_param_parser_test.rb +20 -12
  43. data/test/lib/jat/plugins/json_api/lib/include_param_parser_test.rb +25 -11
  44. data/test/lib/jat/plugins/json_api/lib/map_test.rb +132 -124
  45. data/test/lib/jat/plugins/json_api/lib/response_piece_test.rb +13 -0
  46. data/test/lib/jat/plugins/json_api/lib/response_test.rb +6 -1
  47. data/test/lib/jat/plugins/json_api_activerecord/json_api_activerecord_test.rb +1 -1
  48. data/test/lib/jat/plugins/{json_api_camel_lower/json_api_camel_lower_test.rb → json_api_lower_camel_case/json_api_lower_camel_case_test.rb} +6 -0
  49. data/test/lib/jat/plugins/json_api_preloads/json_api_preloads_test.rb +16 -2
  50. data/test/lib/jat/plugins/json_api_preloads/lib/preloads_test.rb +0 -3
  51. data/test/lib/jat/plugins/json_api_validate_params/json_api_validate_params_test.rb +30 -6
  52. data/test/lib/jat/plugins/lower_camel_case/lower_camel_case_test.rb +27 -0
  53. data/test/lib/jat/plugins/maps_cache/maps_cache_test.rb +27 -0
  54. data/test/lib/jat/plugins/preloads/preloads_test.rb +27 -0
  55. data/test/lib/jat/plugins/presenter/presenter_test.rb +215 -0
  56. data/test/lib/jat/plugins/simple_api/lib/fields_param_parser_test.rb +57 -43
  57. data/test/lib/jat/plugins/simple_api/lib/map_test.rb +90 -82
  58. data/test/lib/jat/plugins/simple_api/lib/response_piece_test.rb +13 -0
  59. data/test/lib/jat/plugins/simple_api/lib/response_test.rb +17 -11
  60. data/test/lib/jat/plugins/simple_api/simple_api_test.rb +36 -1
  61. data/test/lib/jat/plugins/simple_api_activerecord/simple_api_activerecord_test.rb +1 -1
  62. data/test/lib/jat/plugins/{simple_api_camel_lower/simple_api_camel_lower_test.rb → simple_api_lower_camel_case/simple_api_lower_camel_case_test.rb} +7 -1
  63. data/test/lib/jat/plugins/simple_api_preloads/lib/preloads_test.rb +1 -6
  64. data/test/lib/jat/plugins/simple_api_preloads/simple_api_preloads_test.rb +16 -2
  65. data/test/lib/jat/plugins/simple_api_validate_params/simple_api_validate_params_test.rb +12 -0
  66. data/test/lib/jat/plugins/types/types_test.rb +83 -0
  67. data/test/lib/jat/plugins/validate_params/validate_params_test.rb +27 -0
  68. data/test/lib/jat/plugins_test.rb +89 -0
  69. data/test/test_helper.rb +14 -4
  70. metadata +72 -67
  71. data/test/lib/plugin_test.rb +0 -49
  72. data/test/test_plugin.rb +0 -56
@@ -10,15 +10,10 @@ describe "Jat::Plugins::SimpleApiPreloads::Preloads" do
10
10
  end
11
11
  end
12
12
 
13
+ let(:described_class) { Jat::Plugins::SimpleApiPreloads::Preloads }
13
14
  let(:user_serializer) { Class.new(base) }
14
15
  let(:profile_serializer) { Class.new(base) }
15
- let(:email_serializer) { Class.new(base) }
16
-
17
16
  let(:jat_user) { user_serializer.new }
18
- let(:jat_profile) { profile_serializer.new }
19
- let(:jat_email) { email_serializer.new }
20
-
21
- let(:described_class) { Jat::Plugins::SimpleApiPreloads::Preloads }
22
17
 
23
18
  def define_map(map)
24
19
  user_serializer::Map.expects(:call).returns(map)
@@ -17,13 +17,13 @@ describe "Jat::Plugins::SimpleApiPreloads" do
17
17
  jat_class = Class.new(Jat)
18
18
  jat_class.plugin :simple_api
19
19
 
20
- jat_class.expects(:plugin).with(:_preloads, foo: :bar)
20
+ jat_class.expects(:plugin).with(:base_preloads, foo: :bar)
21
21
 
22
22
  @plugin.before_load(jat_class, foo: :bar)
23
23
  end
24
24
 
25
25
  describe "InstanceMethods" do
26
- it "add .preloads method as a delegator to #{@plugin}::Preloads" do
26
+ it "adds #preloads method as a delegator to #{@plugin}::Preloads" do
27
27
  jat_class = Class.new(Jat)
28
28
  jat_class.plugin :simple_api
29
29
  jat_class.plugin @plugin
@@ -34,4 +34,18 @@ describe "Jat::Plugins::SimpleApiPreloads" do
34
34
  assert_equal "RES", jat.preloads
35
35
  end
36
36
  end
37
+
38
+ describe "ClassMethods" do
39
+ it "adds .preloads method as a delegator to #{@plugin}::Preloads" do
40
+ jat_class = Class.new(Jat)
41
+ jat_class.plugin :simple_api
42
+ jat_class.plugin @plugin
43
+
44
+ jat = jat_class.allocate
45
+ jat_class.expects(:new).with("CONTEXT").returns(jat)
46
+ @plugin::Preloads.expects(:call).with(jat).returns("RES")
47
+
48
+ assert_equal "RES", jat_class.preloads("CONTEXT")
49
+ end
50
+ end
37
51
  end
@@ -36,6 +36,11 @@ describe "Jat::Plugins::SimpleApiValidateParams" do
36
36
  jat_class
37
37
  end
38
38
 
39
+ it "returns true when provided fields present" do
40
+ jat = serializer.new(fields: "foo_bar,foo_bazz(foo_bar)")
41
+ assert jat.validate
42
+ end
43
+
39
44
  it "validates fields" do
40
45
  jat = serializer.new(fields: "foo_bar,extra")
41
46
  error = assert_raises(Jat::SimpleApiFieldsError) { jat.validate }
@@ -43,6 +48,13 @@ describe "Jat::Plugins::SimpleApiValidateParams" do
43
48
  assert_equal(expected_message, error.message)
44
49
  end
45
50
 
51
+ it "validates fields when using lower_camel_case plugin" do
52
+ jat = serializer_lower_camel_case.new(fields: "fooBar,extra")
53
+ error = assert_raises(Jat::SimpleApiFieldsError) { jat.validate }
54
+ expected_message = "Field 'extra' not exists"
55
+ assert_equal(expected_message, error.message)
56
+ end
57
+
46
58
  it "validates deeply nested fields" do
47
59
  c = Class.new(base_serializer)
48
60
  c.attribute :c1
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ describe "Jat::Plugins::Types" do
6
+ let(:struct) { Struct.new(:attr) }
7
+
8
+ let(:jat_class) do
9
+ new_class = Class.new(Jat)
10
+ new_class.plugin(:types)
11
+ new_class
12
+ end
13
+
14
+ def attr_value(original_value)
15
+ obj = struct.new(original_value)
16
+ jat_class.attributes[:attr].value(obj, nil)
17
+ end
18
+
19
+ it "has predefined :int type" do
20
+ jat_class.attribute(:attr, type: :int)
21
+
22
+ assert_equal(0, attr_value("0"))
23
+ assert_equal(8, attr_value("010")) # octal system
24
+ assert_equal(10, attr_value("0xa")) # hexadecimal system
25
+ end
26
+
27
+ it "has predefined :bool type" do
28
+ jat_class.attribute(:attr, type: :bool)
29
+
30
+ assert_equal(false, attr_value(nil))
31
+ assert_equal(false, attr_value(false))
32
+ assert_equal(true, attr_value(1))
33
+ end
34
+
35
+ it "has predefined :float type" do
36
+ jat_class.attribute(:attr, type: :float)
37
+
38
+ assert_same(0.0, attr_value("0"))
39
+ assert_same(0.001, attr_value("1e-3"))
40
+ assert_same(1.234, attr_value("1.234"))
41
+ end
42
+
43
+ it "has predefined :array type" do
44
+ jat_class.attribute(:attr, type: :array)
45
+
46
+ assert_equal([1], attr_value(1))
47
+ assert_equal([1], attr_value([1]))
48
+ end
49
+
50
+ it "has predefined :hash type" do
51
+ jat_class.attribute(:attr, type: :hash)
52
+
53
+ assert_equal({}, attr_value([]))
54
+ assert_equal({}, attr_value({}))
55
+ assert_equal({key: :value}, attr_value(key: :value))
56
+ end
57
+
58
+ it "has predefined :str type" do
59
+ jat_class.attribute(:attr, type: :str)
60
+
61
+ assert_equal("", attr_value(nil))
62
+ assert_equal("123", attr_value(123))
63
+ end
64
+
65
+ it "allows to use callable method as type" do
66
+ jat_class.attribute(:attr, type: ->(obj) { obj ? :yes : :no })
67
+
68
+ assert_equal(:no, attr_value(nil))
69
+ assert_equal(:yes, attr_value(1))
70
+ end
71
+
72
+ it "allows to configure custom type" do
73
+ jat_class.config[:types][:year] = ->(obj) { obj.strftime("%Y") }
74
+ jat_class.attribute(:attr, type: :year)
75
+
76
+ assert_equal("2020", attr_value(Time.new(2020, 10, 10)))
77
+ end
78
+
79
+ it "allows to skip type" do
80
+ jat_class.attribute(:attr)
81
+ assert_equal(333, attr_value(333))
82
+ end
83
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ describe "Jat::Plugins::ValidateParams" do
6
+ it "raises error if no response plugin is loaded" do
7
+ new_class = Class.new(Jat)
8
+ err = assert_raises(Jat::Error) { new_class.plugin :validate_params }
9
+ assert_equal "Please load :json_api or :simple_api plugin first", err.message
10
+ end
11
+
12
+ it "loads simple_api compatible plugin" do
13
+ new_class = Class.new(Jat)
14
+ new_class.plugin :simple_api
15
+ new_class.plugin :validate_params
16
+
17
+ assert new_class.plugin_used?(:simple_api_validate_params)
18
+ end
19
+
20
+ it "loads json_api compatible plugin" do
21
+ new_class = Class.new(Jat)
22
+ new_class.plugin :json_api
23
+ new_class.plugin :validate_params
24
+
25
+ assert new_class.plugin_used?(:json_api_validate_params)
26
+ end
27
+ end
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ describe Jat::Plugins do
6
+ let(:described_module) { Jat::Plugins }
7
+
8
+ describe ".register_plugin" do
9
+ it "adds plugin to the @plugins list" do
10
+ plugin = Module.new
11
+ plugin_name = :new_plugin
12
+ described_module.register_plugin(plugin_name, plugin)
13
+
14
+ assert_equal plugin, described_module.instance_variable_get(:@plugins).fetch(plugin_name)
15
+ end
16
+ end
17
+
18
+ describe ".find_plugin" do
19
+ it "returns module if module provided" do
20
+ plugin = Module.new
21
+ assert_equal plugin, described_module.find_plugin(plugin)
22
+ end
23
+
24
+ it "returns already registered plugin found by name" do
25
+ plugin = Module.new
26
+ plugin_name = :new_plugin
27
+ described_module.register_plugin(plugin_name, plugin)
28
+
29
+ assert_equal plugin, described_module.find_plugin(plugin_name)
30
+ end
31
+
32
+ it "returns global plugins found by name" do
33
+ assert_equal "Jat::Plugins::Activerecord", described_module.find_plugin(:activerecord).name
34
+ assert_equal "Jat::Plugins::Cache", described_module.find_plugin(:cache).name
35
+ assert_equal "Jat::Plugins::JsonApi", described_module.find_plugin(:json_api).name
36
+ assert_equal "Jat::Plugins::LowerCamelCase", described_module.find_plugin(:lower_camel_case).name
37
+ assert_equal "Jat::Plugins::MapsCache", described_module.find_plugin(:maps_cache).name
38
+ assert_equal "Jat::Plugins::Preloads", described_module.find_plugin(:preloads).name
39
+ assert_equal "Jat::Plugins::Presenter", described_module.find_plugin(:presenter).name
40
+ assert_equal "Jat::Plugins::SimpleApi", described_module.find_plugin(:simple_api).name
41
+ assert_equal "Jat::Plugins::ToStr", described_module.find_plugin(:to_str).name
42
+ assert_equal "Jat::Plugins::Types", described_module.find_plugin(:types).name
43
+ assert_equal "Jat::Plugins::ValidateParams", described_module.find_plugin(:validate_params).name
44
+ end
45
+
46
+ it "returns json_api only plugins found by name (name has `json_api_` prefix)" do
47
+ assert_equal "Jat::Plugins::JsonApiActiverecord", described_module.find_plugin(:json_api_activerecord).name
48
+ assert_equal "Jat::Plugins::JsonApiLowerCamelCase", described_module.find_plugin(:json_api_lower_camel_case).name
49
+ assert_equal "Jat::Plugins::JsonApiMapsCache", described_module.find_plugin(:json_api_maps_cache).name
50
+ assert_equal "Jat::Plugins::JsonApiPreloads", described_module.find_plugin(:json_api_preloads).name
51
+ assert_equal "Jat::Plugins::JsonApiValidateParams", described_module.find_plugin(:json_api_validate_params).name
52
+ end
53
+
54
+ it "returns simple_api only plugins found by name (name has `simple_api_` prefix)" do
55
+ assert_equal "Jat::Plugins::SimpleApiActiverecord", described_module.find_plugin(:simple_api_activerecord).name
56
+ assert_equal "Jat::Plugins::SimpleApiLowerCamelCase", described_module.find_plugin(:simple_api_lower_camel_case).name
57
+ assert_equal "Jat::Plugins::SimpleApiMapsCache", described_module.find_plugin(:simple_api_maps_cache).name
58
+ assert_equal "Jat::Plugins::SimpleApiPreloads", described_module.find_plugin(:simple_api_preloads).name
59
+ assert_equal "Jat::Plugins::SimpleApiValidateParams", described_module.find_plugin(:simple_api_validate_params).name
60
+ end
61
+
62
+ it "returns base plugins found by name (name has `base_` prefix)" do
63
+ assert_equal "Jat::Plugins::BaseActiverecordPreloads", described_module.find_plugin(:base_activerecord_preloads).name
64
+ assert_equal "Jat::Plugins::BaseLowerCamelCase", described_module.find_plugin(:base_lower_camel_case).name
65
+ assert_equal "Jat::Plugins::BasePreloads", described_module.find_plugin(:base_preloads).name
66
+ end
67
+
68
+ it "raises specific error if plugin not found" do
69
+ err = assert_raises(Jat::PluginLoadError) { described_module.find_plugin(:foo) }
70
+ assert_equal "Plugin 'foo' does not exist", err.message
71
+ end
72
+
73
+ it "raises specific error if plugin was found by name but was not registered" do
74
+ plugin_name = "test_foo"
75
+
76
+ # Add plugin folder and file in plugins directory
77
+ plugin_dir = File.join(__dir__, "../../../lib/jat/plugins", plugin_name)
78
+ plugin_path = File.join(plugin_dir, "#{plugin_name}.rb")
79
+ Dir.mkdir(plugin_dir)
80
+ File.new(plugin_path, File::CREAT)
81
+
82
+ err = assert_raises(Jat::PluginLoadError) { described_module.find_plugin(plugin_name) }
83
+ assert_equal "Plugin '#{plugin_name}' did not register itself correctly", err.message
84
+ ensure
85
+ File.unlink(plugin_path)
86
+ Dir.unlink(plugin_dir)
87
+ end
88
+ end
89
+ end
data/test/test_helper.rb CHANGED
@@ -1,13 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- if RUBY_VERSION >= "2.7"
4
- Warning[:deprecated] = true
5
- Warning[:experimental] = true
3
+ # ARGV is populated with all test file names when running `rake`
4
+ # ARGV is not populated when running `ruby -Itest {file}`
5
+ # ARGV is not populated when running test by `m` gem - `m {file}`
6
+ # ARGV is not populated when running tests by `m` gem with line number - `m {file}:{line_number}`
7
+ # jruby and truffleruby have bad simplecov support
8
+ if RUBY_ENGINE == "ruby" && ARGV.any?
9
+ require "simplecov"
10
+ SimpleCov.start
6
11
  end
7
12
 
8
13
  require "bundler/setup"
9
14
  require "minitest/autorun"
10
15
  require "mocha/minitest"
11
- require "pry-byebug"
12
16
 
13
17
  require_relative "../lib/jat"
18
+
19
+ begin
20
+ require "debug" if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.1.0")
21
+ require "pry-byebug"
22
+ rescue LoadError
23
+ end
metadata CHANGED
@@ -1,113 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrey Glushkov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-06 00:00:00.000000000 Z
11
+ date: 2022-01-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.14'
19
+ version: '0'
20
20
  type: :development
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: '5.14'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mocha
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '1.12'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '1.12'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '13.0'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '13.0'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: simplecov
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '0.21'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '0.21'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: standard
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '1.0'
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '1.0'
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: activerecord
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '6.0'
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '6.0'
97
- - !ruby/object:Gem::Dependency
98
- name: sqlite3
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '1.4'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '1.4'
96
+ version: '0'
111
97
  description: |
112
98
  JAT serializer allows you to generate a JSON response based on the fields requested by the client.
113
99
  Besides, it helps to preload relations to avoid N+1 when used with activerecord.
@@ -121,13 +107,13 @@ files:
121
107
  - lib/jat/config.rb
122
108
  - lib/jat/plugins.rb
123
109
  - lib/jat/plugins/activerecord/activerecord.rb
110
+ - lib/jat/plugins/base/base_activerecord_preloads/base_activerecord_preloads.rb
111
+ - lib/jat/plugins/base/base_activerecord_preloads/lib/preloader.rb
112
+ - lib/jat/plugins/base/base_lower_camel_case/base_lower_camel_case.rb
113
+ - lib/jat/plugins/base/base_preloads/base_preloads.rb
114
+ - lib/jat/plugins/base/base_preloads/lib/format_user_preloads.rb
115
+ - lib/jat/plugins/base/base_preloads/lib/preloads_with_path.rb
124
116
  - lib/jat/plugins/cache/cache.rb
125
- - lib/jat/plugins/common/_activerecord_preloads/_activerecord_preloads.rb
126
- - lib/jat/plugins/common/_activerecord_preloads/lib/preloader.rb
127
- - lib/jat/plugins/common/_lower_camel_case/_lower_camel_case.rb
128
- - lib/jat/plugins/common/_preloads/_preloads.rb
129
- - lib/jat/plugins/common/_preloads/lib/format_user_preloads.rb
130
- - lib/jat/plugins/common/_preloads/lib/preloads_with_path.rb
131
117
  - lib/jat/plugins/json_api/json_api.rb
132
118
  - lib/jat/plugins/json_api/lib/fields_param_parser.rb
133
119
  - lib/jat/plugins/json_api/lib/include_param_parser.rb
@@ -152,6 +138,7 @@ files:
152
138
  - lib/jat/plugins/lower_camel_case/lower_camel_case.rb
153
139
  - lib/jat/plugins/maps_cache/maps_cache.rb
154
140
  - lib/jat/plugins/preloads/preloads.rb
141
+ - lib/jat/plugins/presenter/presenter.rb
155
142
  - lib/jat/plugins/simple_api/lib/fields_param_parser.rb
156
143
  - lib/jat/plugins/simple_api/lib/map.rb
157
144
  - lib/jat/plugins/simple_api/lib/response.rb
@@ -166,47 +153,57 @@ files:
166
153
  - lib/jat/plugins/simple_api/plugins/simple_api_validate_params/simple_api_validate_params.rb
167
154
  - lib/jat/plugins/simple_api/simple_api.rb
168
155
  - lib/jat/plugins/to_str/to_str.rb
156
+ - lib/jat/plugins/types/types.rb
169
157
  - lib/jat/plugins/validate_params/validate_params.rb
170
158
  - lib/jat/utils/enum_deep_dup.rb
171
159
  - lib/jat/utils/enum_deep_freeze.rb
160
+ - lib/jat/utils/jat_class.rb
172
161
  - test/lib/jat/attribute_test.rb
173
162
  - test/lib/jat/config_test.rb
174
- - test/lib/jat/plugins/_activerecord_preloads/_activerecord_preloads_test.rb
175
- - test/lib/jat/plugins/_activerecord_preloads/lib/preloader_test.rb
176
- - test/lib/jat/plugins/_camel_lower/_camel_lower_test.rb
177
- - test/lib/jat/plugins/_preloads/_preloads_test.rb
178
- - test/lib/jat/plugins/_preloads/lib/format_user_preloads_test.rb
179
- - test/lib/jat/plugins/_preloads/lib/preloads_with_path_test.rb
163
+ - test/lib/jat/plugins/activerecord/activerecord_test.rb
164
+ - test/lib/jat/plugins/base_activerecord_preloads/base_activerecord_preloads_test.rb
165
+ - test/lib/jat/plugins/base_activerecord_preloads/lib/preloader_test.rb
166
+ - test/lib/jat/plugins/base_lower_camel_case/base_lower_camel_case_test.rb
167
+ - test/lib/jat/plugins/base_preloads/base_preloads_test.rb
168
+ - test/lib/jat/plugins/base_preloads/lib/format_user_preloads_test.rb
169
+ - test/lib/jat/plugins/base_preloads/lib/preloads_with_path_test.rb
180
170
  - test/lib/jat/plugins/cache/cache_test.rb
181
171
  - test/lib/jat/plugins/json_api/json_api_test.rb
182
172
  - test/lib/jat/plugins/json_api/lib/fields_param_parser_test.rb
183
173
  - test/lib/jat/plugins/json_api/lib/include_param_parser_test.rb
184
174
  - test/lib/jat/plugins/json_api/lib/map_test.rb
175
+ - test/lib/jat/plugins/json_api/lib/response_piece_test.rb
185
176
  - test/lib/jat/plugins/json_api/lib/response_test.rb
186
177
  - test/lib/jat/plugins/json_api_activerecord/json_api_activerecord_test.rb
187
- - test/lib/jat/plugins/json_api_camel_lower/json_api_camel_lower_test.rb
178
+ - test/lib/jat/plugins/json_api_lower_camel_case/json_api_lower_camel_case_test.rb
188
179
  - test/lib/jat/plugins/json_api_maps_cache/json_api_maps_cache_test.rb
189
180
  - test/lib/jat/plugins/json_api_preloads/json_api_preloads_test.rb
190
181
  - test/lib/jat/plugins/json_api_preloads/lib/preloads_test.rb
191
182
  - test/lib/jat/plugins/json_api_validate_params/json_api_validate_params_test.rb
183
+ - test/lib/jat/plugins/lower_camel_case/lower_camel_case_test.rb
184
+ - test/lib/jat/plugins/maps_cache/maps_cache_test.rb
185
+ - test/lib/jat/plugins/preloads/preloads_test.rb
186
+ - test/lib/jat/plugins/presenter/presenter_test.rb
192
187
  - test/lib/jat/plugins/simple_api/lib/fields_param_parser_test.rb
193
188
  - test/lib/jat/plugins/simple_api/lib/map_test.rb
189
+ - test/lib/jat/plugins/simple_api/lib/response_piece_test.rb
194
190
  - test/lib/jat/plugins/simple_api/lib/response_test.rb
195
191
  - test/lib/jat/plugins/simple_api/simple_api_test.rb
196
192
  - test/lib/jat/plugins/simple_api_activerecord/simple_api_activerecord_test.rb
197
- - test/lib/jat/plugins/simple_api_camel_lower/simple_api_camel_lower_test.rb
193
+ - test/lib/jat/plugins/simple_api_lower_camel_case/simple_api_lower_camel_case_test.rb
198
194
  - test/lib/jat/plugins/simple_api_maps_cache/simple_api_maps_cache_test.rb
199
195
  - test/lib/jat/plugins/simple_api_preloads/lib/preloads_test.rb
200
196
  - test/lib/jat/plugins/simple_api_preloads/simple_api_preloads_test.rb
201
197
  - test/lib/jat/plugins/simple_api_validate_params/simple_api_validate_params_test.rb
202
198
  - test/lib/jat/plugins/to_str/to_str_test.rb
199
+ - test/lib/jat/plugins/types/types_test.rb
200
+ - test/lib/jat/plugins/validate_params/validate_params_test.rb
201
+ - test/lib/jat/plugins_test.rb
203
202
  - test/lib/jat/utils/enum_deep_dup_test.rb
204
203
  - test/lib/jat/utils/enum_deep_freeze_test.rb
205
204
  - test/lib/jat_test.rb
206
- - test/lib/plugin_test.rb
207
205
  - test/support/activerecord.rb
208
206
  - test/test_helper.rb
209
- - test/test_plugin.rb
210
207
  homepage: https://github.com/aglushkov/jat
211
208
  licenses:
212
209
  - MIT
@@ -229,46 +226,54 @@ required_rubygems_version: !ruby/object:Gem::Requirement
229
226
  - !ruby/object:Gem::Version
230
227
  version: '0'
231
228
  requirements: []
232
- rubygems_version: 3.2.22
229
+ rubygems_version: 3.3.3
233
230
  signing_key:
234
231
  specification_version: 4
235
232
  summary: JSON API TOOLKIT
236
233
  test_files:
237
234
  - test/lib/jat/attribute_test.rb
238
235
  - test/lib/jat/config_test.rb
239
- - test/lib/jat/plugins/_activerecord_preloads/_activerecord_preloads_test.rb
240
- - test/lib/jat/plugins/_activerecord_preloads/lib/preloader_test.rb
241
- - test/lib/jat/plugins/_camel_lower/_camel_lower_test.rb
242
- - test/lib/jat/plugins/_preloads/_preloads_test.rb
243
- - test/lib/jat/plugins/_preloads/lib/format_user_preloads_test.rb
244
- - test/lib/jat/plugins/_preloads/lib/preloads_with_path_test.rb
236
+ - test/lib/jat/plugins/activerecord/activerecord_test.rb
237
+ - test/lib/jat/plugins/base_activerecord_preloads/base_activerecord_preloads_test.rb
238
+ - test/lib/jat/plugins/base_activerecord_preloads/lib/preloader_test.rb
239
+ - test/lib/jat/plugins/base_lower_camel_case/base_lower_camel_case_test.rb
240
+ - test/lib/jat/plugins/base_preloads/base_preloads_test.rb
241
+ - test/lib/jat/plugins/base_preloads/lib/format_user_preloads_test.rb
242
+ - test/lib/jat/plugins/base_preloads/lib/preloads_with_path_test.rb
245
243
  - test/lib/jat/plugins/cache/cache_test.rb
246
244
  - test/lib/jat/plugins/json_api/json_api_test.rb
247
245
  - test/lib/jat/plugins/json_api/lib/fields_param_parser_test.rb
248
246
  - test/lib/jat/plugins/json_api/lib/include_param_parser_test.rb
249
247
  - test/lib/jat/plugins/json_api/lib/map_test.rb
248
+ - test/lib/jat/plugins/json_api/lib/response_piece_test.rb
250
249
  - test/lib/jat/plugins/json_api/lib/response_test.rb
251
250
  - test/lib/jat/plugins/json_api_activerecord/json_api_activerecord_test.rb
252
- - test/lib/jat/plugins/json_api_camel_lower/json_api_camel_lower_test.rb
251
+ - test/lib/jat/plugins/json_api_lower_camel_case/json_api_lower_camel_case_test.rb
253
252
  - test/lib/jat/plugins/json_api_maps_cache/json_api_maps_cache_test.rb
254
253
  - test/lib/jat/plugins/json_api_preloads/json_api_preloads_test.rb
255
254
  - test/lib/jat/plugins/json_api_preloads/lib/preloads_test.rb
256
255
  - test/lib/jat/plugins/json_api_validate_params/json_api_validate_params_test.rb
256
+ - test/lib/jat/plugins/lower_camel_case/lower_camel_case_test.rb
257
+ - test/lib/jat/plugins/maps_cache/maps_cache_test.rb
258
+ - test/lib/jat/plugins/preloads/preloads_test.rb
259
+ - test/lib/jat/plugins/presenter/presenter_test.rb
257
260
  - test/lib/jat/plugins/simple_api/lib/fields_param_parser_test.rb
258
261
  - test/lib/jat/plugins/simple_api/lib/map_test.rb
262
+ - test/lib/jat/plugins/simple_api/lib/response_piece_test.rb
259
263
  - test/lib/jat/plugins/simple_api/lib/response_test.rb
260
264
  - test/lib/jat/plugins/simple_api/simple_api_test.rb
261
265
  - test/lib/jat/plugins/simple_api_activerecord/simple_api_activerecord_test.rb
262
- - test/lib/jat/plugins/simple_api_camel_lower/simple_api_camel_lower_test.rb
266
+ - test/lib/jat/plugins/simple_api_lower_camel_case/simple_api_lower_camel_case_test.rb
263
267
  - test/lib/jat/plugins/simple_api_maps_cache/simple_api_maps_cache_test.rb
264
268
  - test/lib/jat/plugins/simple_api_preloads/lib/preloads_test.rb
265
269
  - test/lib/jat/plugins/simple_api_preloads/simple_api_preloads_test.rb
266
270
  - test/lib/jat/plugins/simple_api_validate_params/simple_api_validate_params_test.rb
267
271
  - test/lib/jat/plugins/to_str/to_str_test.rb
272
+ - test/lib/jat/plugins/types/types_test.rb
273
+ - test/lib/jat/plugins/validate_params/validate_params_test.rb
274
+ - test/lib/jat/plugins_test.rb
268
275
  - test/lib/jat/utils/enum_deep_dup_test.rb
269
276
  - test/lib/jat/utils/enum_deep_freeze_test.rb
270
277
  - test/lib/jat_test.rb
271
- - test/lib/plugin_test.rb
272
278
  - test/support/activerecord.rb
273
279
  - test/test_helper.rb
274
- - test/test_plugin.rb
@@ -1,49 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "test_helper"
4
- require "test_plugin"
5
-
6
- describe "plugin system" do
7
- describe "Jat.plugin" do
8
- let(:jat_class) { Class.new(Jat) }
9
- let(:components) { [jat_class, jat_class::Attribute, jat_class::Config] }
10
-
11
- before do
12
- components.each do |component|
13
- component::InstanceMethods.send(:define_method, :foo) { :foo }
14
- component::ClassMethods.send(:define_method, :foo) { :foo }
15
- end
16
- end
17
-
18
- after do
19
- components.each do |component|
20
- component::InstanceMethods.send(:undef_method, :foo)
21
- component::ClassMethods.send(:undef_method, :foo)
22
- end
23
- end
24
-
25
- it "allows the plugin to override base methods of core classes" do
26
- components.each do |component|
27
- assert_equal :foo, component.foo
28
- assert_equal :foo, component.allocate.foo
29
- end
30
-
31
- jat_class.plugin(TestPlugin)
32
-
33
- components.each do |component|
34
- assert_equal :plugin_foo, component.foo
35
- assert_equal :plugin_foo, component.allocate.foo
36
- end
37
- end
38
-
39
- it "calls before_load before loading plugin" do
40
- jat_class.plugin(TestPlugin)
41
- assert_equal :foo, jat_class.config[:before_load]
42
- end
43
-
44
- it "calls after_load after loading plugin" do
45
- jat_class.plugin(TestPlugin)
46
- assert_equal :plugin_foo, jat_class.config[:after_load]
47
- end
48
- end
49
- end