tire-am_serializers 0.0.2 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 19507b2069ef8fe4d96ef988a4ff56a45b99024d
4
- data.tar.gz: b4064dbe20e841d18816b6881c2e2723780e47f6
3
+ metadata.gz: aaeb1f24b76db25a951875f4a20c456caba3861b
4
+ data.tar.gz: 9afd95fe25a4099a97217a2c0948e8fa0b7a5cd0
5
5
  SHA512:
6
- metadata.gz: b7fb13113679b491869b5a83dbacbae2cce894143ecff0f353ed8a35eb25f16b17f5f95fd9e6e221e8c7618e9b62367892d29a7f87ceb812fa87ed6bc0cb6c0a
7
- data.tar.gz: abf971f17cd8cc63dae8ab24c2770c451f5d855a5046c87f5e5aadc57d299a539c098dad05947286eed1f79fc30397a283df1ea98af2208cc4b7991a7c5b679b
6
+ metadata.gz: 0a39fc38d7b4d7df60aada0b33249b0d34e49f2c5452dde6934a18e623f899b8b41a1269c8dd5a98967e42a45aa8d5a5b91a472513a636360e923645d8118547
7
+ data.tar.gz: 6d45d3653e1c682f5b71d6d9ab741dfa729ede4b82be73d914b8f83147ee359d5b5315e5c106119d869a0b0ad2635517f189783f9cb85756cb19b6814d6af2ca
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Active Model Serializers + Tire
1
+ # Active Model Serializers + Tire (Beta)
2
2
 
3
3
  The easy way to add [Active Model Serializers](https://github.com/rails-api/active_model_serializers) to your [Tire](https://github.com/karmi/tire/) results.
4
4
 
@@ -11,14 +11,16 @@ gem 'tire-am_serializers'
11
11
 
12
12
  ## Usage
13
13
 
14
- Do nothing, it should works as expected:
14
+ Same as [Active Model Serializers](https://github.com/rails-api/active_model_serializers):
15
15
  ```ruby
16
- render json: User.search(...).results
16
+ render json: User.search(...)
17
17
  ```
18
18
 
19
+ There is only one thing, Rails will look for `TireUserSeralizer` by default. If class doesn't exist, it will try to find `UserSerailizer`. If no Serilaizers present for this model, it will use default behaviour of `to_json`.
20
+
19
21
  If you want to get old behaviour from Tire:
20
22
  ```ruby
21
- render json: Vacancy.search("*").map(&:tire_as_json)
23
+ render json: Vacancy.search("*").to_json
22
24
  ```
23
25
 
24
26
  ## Contributing
@@ -27,4 +29,4 @@ render json: Vacancy.search("*").map(&:tire_as_json)
27
29
  2. Create your feature branch (`git checkout -b my-new-feature`)
28
30
  3. Commit your changes (`git commit -am 'Add some feature'`)
29
31
  4. Push to the branch (`git push origin my-new-feature`)
30
- 5. Create new Pull Request
32
+ 5. Create new Pull Request
data/Rakefile CHANGED
@@ -1 +1,12 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ desc 'Run tests'
5
+ Rake::TestTask.new(:test) do |t|
6
+ t.libs << 'lib'
7
+ t.libs << 'test'
8
+ t.pattern = 'test/**/*_test.rb'
9
+ t.verbose = true
10
+ end
11
+
12
+ task :default => :test
@@ -0,0 +1,27 @@
1
+ module Tire
2
+ module ActiveModel
3
+ module SerializerSupport
4
+
5
+ extend ActiveSupport::Concern
6
+
7
+ if "".respond_to?(:safe_constantize)
8
+ def tire_active_model_serializer
9
+ "Tire#{self.class.name}Serializer".safe_constantize
10
+ end
11
+ else
12
+ def tire_active_model_serializer
13
+ begin
14
+ "Tire#{self.class.name}Serializer".constantize
15
+ rescue NameError => e
16
+ raise unless e.message =~ /uninitialized constant/
17
+ end
18
+ end
19
+ end
20
+
21
+ # Returns a model serializer for this object considering its namespace.
22
+ def active_model_serializer
23
+ self.tire_active_model_serializer || self.class.active_model_serializer
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,18 +1,6 @@
1
1
  require "tire/version"
2
- require "tire/active_model/serializer"
2
+ require "tire/active_model/serializer_support"
3
3
 
4
4
  Tire::Results::Collection.send(:include, ActiveModel::ArraySerializerSupport)
5
-
6
5
  Tire::Results::Item.send(:include, ActiveModel::SerializerSupport)
7
- Tire::Results::Item.send(:include, Tire::ActiveModel::Serializer)
8
-
9
- Tire::Results::Item.send(:alias_method, :tire_as_json, :as_json)
10
-
11
- Tire::Results::Item.send :define_method, :to_json do |options|
12
- tire_as_json.to_json(options)
13
- end
14
-
15
- Tire::Results::Item.send(:alias_method, :tire_to_json, :to_json)
16
-
17
- Tire::Results::Item.send(:alias_method, :to_json, :serializer_to_json)
18
- Tire::Results::Item.send(:alias_method, :as_json, :serializer_as_json)
6
+ Tire::Results::Item.send(:include, Tire::ActiveModel::SerializerSupport)
data/lib/tire/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Tire
2
2
  module AmSerializers
3
- VERSION = "0.0.2"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
@@ -0,0 +1,21 @@
1
+ require "rubygems"
2
+ require "bundler/setup"
3
+ require "test/unit"
4
+ require "tire"
5
+ require "active_model_serializers"
6
+
7
+ class Test::Unit::TestCase
8
+
9
+ def mock_response(body, code=200, headers={})
10
+ Tire::HTTP::Response.new(body, code, headers)
11
+ end
12
+
13
+ def fixtures_path
14
+ Pathname( File.expand_path( 'fixtures', File.dirname(__FILE__) ) )
15
+ end
16
+
17
+ def fixture_file(path)
18
+ File.read File.expand_path( path, fixtures_path )
19
+ end
20
+
21
+ end
@@ -0,0 +1,45 @@
1
+ require 'test_helper'
2
+
3
+ require 'tire/am_serializers'
4
+
5
+ class SomeClass
6
+ include ActiveModel::SerializerSupport
7
+ end
8
+
9
+ class SomeClassSerializer
10
+ end
11
+
12
+ class OtherClass
13
+ include ActiveModel::SerializerSupport
14
+ end
15
+
16
+ class TireOtherClassSerializer
17
+ end
18
+
19
+ class OtherClassSerializer
20
+ end
21
+
22
+
23
+ class TireSerializerSupportTest < ActiveModel::TestCase
24
+
25
+ test "active model serializer is nil if no serializer exists" do
26
+ assert_equal nil, Tire::Results::Item.new({"_type" => "RandomClass"}).active_model_serializer
27
+ end
28
+
29
+ test "active model serializer returned for item if serializer exists" do
30
+ class ::Rails; end
31
+ assert_equal SomeClassSerializer, Tire::Results::Item.new({"_type" => "SomeClass"}).active_model_serializer
32
+ Object.class_eval{remove_const :Rails}
33
+ end
34
+
35
+ test "active model serializer with tire prefix returned for item if serializer exists" do
36
+ class ::Rails; end
37
+ assert_equal TireOtherClassSerializer, Tire::Results::Item.new({"_type" => "OtherClass"}).active_model_serializer
38
+ Object.class_eval{remove_const :Rails}
39
+ end
40
+
41
+ test "active model serializer is ArraySerializer for Collection" do
42
+ assert_equal ActiveModel::ArraySerializer, Tire::Results::Collection.new({}).active_model_serializer
43
+ end
44
+
45
+ end
@@ -6,8 +6,8 @@ require 'tire/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "tire-am_serializers"
8
8
  spec.version = Tire::AmSerializers::VERSION
9
- spec.authors = ["Sergey Efremov", "Ilya Zayats"]
10
- spec.email = ["efremov.sergey@gmail.com", "somebody32@gmail.com"]
9
+ spec.authors = ["Sergey Efremov", "Ilya Zayats", "Vyacheslav Shebanov"]
10
+ spec.email = ["efremov.sergey@gmail.com", "somebody32@gmail.com", "terminal2010@gmail.com"]
11
11
  spec.description = %q{The easy way to add active model serializers to your tire results}
12
12
  spec.summary = %q{The easy way to add active model serializers to your tire results}
13
13
  spec.homepage = "https://github.com/ResumUP/tire_am_serializers/"
@@ -23,4 +23,5 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  spec.add_development_dependency "bundler", "~> 1.3"
25
25
  spec.add_development_dependency "rake"
26
- end
26
+
27
+ end
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tire-am_serializers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Efremov
8
8
  - Ilya Zayats
9
+ - Vyacheslav Shebanov
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2013-03-13 00:00:00.000000000 Z
13
+ date: 2013-03-15 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: tire
@@ -71,6 +72,7 @@ description: The easy way to add active model serializers to your tire results
71
72
  email:
72
73
  - efremov.sergey@gmail.com
73
74
  - somebody32@gmail.com
75
+ - terminal2010@gmail.com
74
76
  executables: []
75
77
  extensions: []
76
78
  extra_rdoc_files: []
@@ -80,9 +82,11 @@ files:
80
82
  - LICENSE.txt
81
83
  - README.md
82
84
  - Rakefile
83
- - lib/tire/active_model/serializer.rb
85
+ - lib/tire/active_model/serializer_support.rb
84
86
  - lib/tire/am_serializers.rb
85
87
  - lib/tire/version.rb
88
+ - test/test_helper.rb
89
+ - test/tire_serializers_support_test.rb
86
90
  - tire-am_serializers.gemspec
87
91
  homepage: https://github.com/ResumUP/tire_am_serializers/
88
92
  licenses:
@@ -108,4 +112,6 @@ rubygems_version: 2.0.1
108
112
  signing_key:
109
113
  specification_version: 4
110
114
  summary: The easy way to add active model serializers to your tire results
111
- test_files: []
115
+ test_files:
116
+ - test/test_helper.rb
117
+ - test/tire_serializers_support_test.rb
@@ -1,29 +0,0 @@
1
- module Tire
2
- module ActiveModel
3
- module Serializer
4
-
5
- def serializer_to_json(options = {})
6
- serialization :to_json, options
7
- end
8
-
9
- def serializer_as_json(options = {})
10
- serialization :as_json, options
11
- end
12
-
13
- private
14
-
15
- def serializer_defined?
16
- !active_model_serializer.nil?
17
- end
18
-
19
- def serialization(method, options)
20
- if serializer_defined?
21
- active_model_serializer.new(self).send(method, options)
22
- else
23
- send("tire_#{method}", options)
24
- end
25
- end
26
-
27
- end
28
- end
29
- end