wor-paginate 0.1.4 → 0.1.5a

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0ece2d8e06ba836333189b0db686523324723403a7b78e094d4d6d609247f501
4
- data.tar.gz: c649acf92be56898747bc758bfb6479ecb82894305fb13f16c28259c0e8b96ac
3
+ metadata.gz: a7bfb0360345a51c5eb2ab8ed52d90f3dc7032155830e37b48a83e09e049f1fd
4
+ data.tar.gz: f145fa8f27deb86310b600ff75b2623a620ea7445cfca7f387fabe2dcb000471
5
5
  SHA512:
6
- metadata.gz: 491c2345cc0add8083d0ef428d70194a180c12c3d4b3298da3c4fcb9cd662477b8bc8e2dc5285e4019bb6b1f7d71608d17ab942cc72f64d1910874741864522a
7
- data.tar.gz: 9a6bbee3a30cdee550cb309890fb822c325d77411251fa32aa41b6b9b0962cbf381a83b88d33f91b9f910c6bad5e9b8e3aefe767028a69191ffe16b546b60cb1
6
+ metadata.gz: 9cfa29bf30aacda22b8f2702018b078de0e1c1631aa5f51366bc69a9d5a2fe7fd74ec2514d44597357fc604912718205b756fe43e5cee68cb01f492659235fa9
7
+ data.tar.gz: 84576e26892ca4d718084e0d064323a0d46e73e209085409e8f77577f115aac38eb4fb491a05f50a7a95a531e55c0284a218946f0ae303e0151fd126c13e5ce8
data/.travis.yml CHANGED
@@ -1,20 +1,23 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.2.2
4
- - 2.3.3
5
- - 2.4.0
3
+ - 2.3.8
4
+ - 2.4.7
5
+ - 2.5.6
6
+ - 2.6.4
6
7
  - ruby-head
7
8
 
9
+ before_install:
10
+ - gem install bundler -v 2.0.1
11
+
8
12
  install:
9
- - gem install bundler
10
- - gem install danger --version '~> 5.0'
11
- - bundle install --retry=3
13
+ - bundle _2.0.1_ install --retry=3
12
14
  - bundle exec rake db:migrate RAILS_ENV=test -f spec/dummy/Rakefile
13
15
 
14
- before_script:
15
- - danger
16
-
17
16
  script:
18
17
  - bundle exec rubocop lib spec --format simple
19
18
  - bundle exec rspec
20
19
  - bundle exec codeclimate-test-reporter
20
+
21
+ matrix:
22
+ allow_failures:
23
+ - rvm : ruby-head
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  ## Change log
2
2
 
3
+ ### V0.1.5a
4
+ * [#62](https://github.com/Wolox/wor-paginate/pull/62): Add options in active model serializer - [@blacksam07](https://github.com/blacksam07).
5
+
6
+ ### V0.1.5
7
+ * [#59](https://github.com/Wolox/wor-paginate/pull/59): Add include option to serialize nested models - [@jcgrethe](https://github.com/jcgrethe).
8
+ * [#65](https://github.com/Wolox/wor-paginate/pull/65): Add scope on serializer - [@mtejedorwolox](https://github.com/mtejedorwolox).
9
+ * [#72](https://github.com/Wolox/wor-paginate/pull/72): Update readme and CI fix - [@mnmallea](https://github.com/mnmallea).
10
+
3
11
  ### V0.1.4
4
12
  * [#57](https://github.com/Wolox/wor-paginate/pull/57): Update rails max version - [@hdf1986](https://github.com/hdf1986).
5
13
 
data/Gemfile CHANGED
@@ -15,7 +15,7 @@ gemspec
15
15
 
16
16
  group :development, :test do
17
17
  gem 'active_model_serializers', '~> 0.10.0'
18
- gem 'bundler', '~> 1.13'
18
+ gem 'bundler', '~> 2.0.1'
19
19
  gem 'byebug', '~> 9.0'
20
20
  gem 'codeclimate-test-reporter', '~> 1.0.0'
21
21
  gem 'database_cleaner', '~> 1.6.0'
@@ -33,8 +33,3 @@ group :development, :test do
33
33
  gem 'webmock', '~> 3.0.0'
34
34
  gem 'will_paginate', '~> 3.1.0'
35
35
  end
36
-
37
- group :test do
38
- gem 'danger'
39
- gem 'danger-todoist'
40
- end
data/README.md CHANGED
@@ -1,9 +1,28 @@
1
- # Wor::Paginate
1
+ Wor::Paginate
2
+ =============
3
+
2
4
  [![Build Status](https://travis-ci.org/Wolox/wor-paginate.svg?branch=master)](https://travis-ci.org/Wolox/wor-paginate)
3
5
  [![Gem Version](https://badge.fury.io/rb/wor-paginate.svg)](https://badge.fury.io/rb/wor-paginate)
4
- [![Dependency Status](https://gemnasium.com/badges/github.com/Wolox/wor-paginate.svg)](https://gemnasium.com/github.com/Wolox/wor-paginate)
5
6
  [![Code Climate](https://codeclimate.com/github/Wolox/wor-paginate/badges/gpa.svg)](https://codeclimate.com/github/Wolox/wor-paginate)
6
- [![Test Coverage](https://codeclimate.com/github/Wolox/wor-paginate/badges/coverage.svg)](https://codeclimate.com/github/Wolox/wor-paginate/coverage)
7
+
8
+ # Table of contents
9
+ - [Description](#description)
10
+ - [Installation](#installation)
11
+ - [Usage](#usage)
12
+ - [Basic usage](#basic-usage)
13
+ - [Customizing output](#customizing-output)
14
+ - [Custom serializers](#custom-serializers)
15
+ - [Custom formatters](#custom-formatters)
16
+ - [Working with Kaminari or will_paginate](#working-with-kaminari-or-will_paginate)
17
+ - [Test helpers](#test-helpers)
18
+ - [Contributing](#contributing)
19
+ - [Releases](#releases)
20
+ - [About](#about)
21
+ - [License](#license)
22
+
23
+ -----------------------
24
+
25
+ ## Description
7
26
 
8
27
  Wor::Paginate is a gem for Rails that simplifies pagination, particularly for controller methods, while standardizing JSON output for APIs. It's meant to work both as a standalone pagination gem and as an extra layer over [Kaminari](https://github.com/kaminari/kaminari) and [will_paginate](https://github.com/mislav/will_paginate).
9
28
 
@@ -34,7 +53,7 @@ The basic use case is to paginate using default values. This is achieved by incl
34
53
  include Wor::Paginate
35
54
 
36
55
  def index
37
- render_paginated DummyModel
56
+ render_paginated DummyModel
38
57
  end
39
58
  end
40
59
  ```
@@ -57,7 +76,7 @@ The response to the index will then be:
57
76
  "name": "i",
58
77
  "something": 68
59
78
  },
60
- ...
79
+ // ...
61
80
  {
62
81
  "id": 25,
63
82
  "name": "2m",
@@ -85,6 +104,20 @@ render_paginated DummyModel, each_serializer: CustomDummyModelSerializer
85
104
  ```
86
105
  where the serializer is just an [`ActiveModel::Serializer`](https://github.com/rails-api/active_model_serializers).
87
106
 
107
+ #### Custom options
108
+ Using custom options in serializer, example method `current_user`
109
+ ```ruby
110
+ render_paginated DummyModel, each_serializer: CustomDummyModelSerializer, current_user: current_user
111
+ ```
112
+ In serializer
113
+ ```ruby
114
+ class CustomSerializer < ActiveModel::Serializer
115
+ def method
116
+ @instance_options[:current_user]
117
+ end
118
+ end
119
+ ```
120
+
88
121
  #### Custom formatters
89
122
  A formatter is an object that defines the output of the render_paginated method. In case the application needs a different format for a request, it can be passed to the `render_paginated` method using the `formatter` option:
90
123
  ```ruby
@@ -117,25 +150,31 @@ If either Kaminari or will_paginate are required in the project, Wor::Paginate w
117
150
  You can use the `be_paginated` matcher to test your endpoints. It also accepts the `with` chain method to receive a formatter.
118
151
 
119
152
  You only need to add this in your rails_helper.rb
153
+
120
154
  ```ruby
121
155
  # spec/rails_helper.rb
122
156
  require 'wor/paginate/rspec'
123
157
  ```
158
+
124
159
  And in your spec do
125
160
  ```ruby
126
161
  # spec/controllers/your_controller.rb
127
162
  describe YourController do
163
+ let(:response_body) do
164
+ ActiveSupport::JSON.decode(response.body) if response.present? && response.body.present?
165
+ end
166
+
128
167
  describe '#index' do
129
- it 'checks that the response keys matches with the default formatter' do
130
- get :index
131
- expect(response_body(response)).to be_paginated
132
- end
168
+ subject(:http_request) { get :index }
169
+
170
+ it { expect(response_body).to be_paginated }
133
171
  end
134
172
 
135
173
  describe '#index_with_custom_formatter' do
174
+ subject(:http_request) { get :index_custom_formatter }
175
+
136
176
  it 'checks that the response keys matches with the custom formatter' do
137
- get :index_custom_formatter
138
- expect(response_body(response)).to be_paginated.with(CustomFormatter)
177
+ expect(response_body).to be_paginated.with(CustomFormatter)
139
178
  end
140
179
  end
141
180
  end
@@ -149,12 +188,25 @@ end
149
188
  4. Run rubocop lint (`bundle exec rubocop -R --format simple`)
150
189
  5. Run rspec tests (`bundle exec rspec`)
151
190
  6. Push your branch (`git push origin my-new-feature`)
152
- 7. Create a new Pull Request
191
+ 7. Create a new Pull Request to `master` branch
192
+
193
+ ## Releases
194
+ 📢 [See what's changed in a recent version](https://github.com/Wolox/wor-paginate/releases)
153
195
 
154
196
  ## About ##
155
197
 
156
- This project is maintained by [Hugo Farji](https://github.com/hdf1986), [Ignacio Coluccio](https://github.com/icoluccio), and [Alan Halatian](https://github.com/alanhala). It was written by [Wolox](http://www.wolox.com.ar).
157
- ![Wolox](https://raw.githubusercontent.com/Wolox/press-kit/master/logos/logo_banner.png)
198
+ The current maintainers of this gem are :
199
+ * [Lucas Voboril](https://github.com/lucasVoboril)
200
+ * [Martín Mallea](https://github.com/mnmallea)
201
+
202
+ This project was developed by:
203
+ * [Hugo Farji](https://github.com/hdf1986)
204
+ * [Ignacio Coluccio](https://github.com/icoluccio)
205
+ * [Alan Halatian](https://github.com/alanhala)
206
+
207
+ At [Wolox](http://www.wolox.com.ar)
208
+
209
+ [![Wolox](https://raw.githubusercontent.com/Wolox/press-kit/master/logos/logo_banner.png)](http://www.wolox.com.ar)
158
210
 
159
211
  ## License
160
212
 
@@ -32,8 +32,9 @@ module Wor
32
32
  end
33
33
 
34
34
  def serialized_content
35
- return paginated_content.map { |item| serializer.new(item) } if serializer.present?
36
-
35
+ if serializer.present?
36
+ return paginated_content.map { |item| serializer.new(item, options) }
37
+ end
37
38
  if defined? ActiveModelSerializers::SerializableResource
38
39
  ActiveModelSerializers::SerializableResource.new(paginated_content).as_json
39
40
  else
@@ -12,6 +12,8 @@ module Wor
12
12
  ].freeze
13
13
 
14
14
  def render_paginated(content, options = {})
15
+ return render_paginate_with_include(content, options) if includes?(options)
16
+
15
17
  render json: paginate(content, options)
16
18
  end
17
19
 
@@ -21,6 +23,10 @@ module Wor
21
23
  formatter_class(options).new(adapter, options).format
22
24
  end
23
25
 
26
+ def render_paginate_with_include(content, options)
27
+ render json: paginate(content, options), include: options[:include]
28
+ end
29
+
24
30
  def formatter_class(options)
25
31
  options[:formatter].presence || Formatter
26
32
  end
@@ -42,6 +48,10 @@ module Wor
42
48
  params[Config.per_page_param].to_i unless params[Config.per_page_param].nil?
43
49
  end
44
50
 
51
+ def includes?(options)
52
+ !options[:include].nil?
53
+ end
54
+
45
55
  def limit(options)
46
56
  [
47
57
  Config.max_limit,
@@ -1,5 +1,5 @@
1
1
  module Wor
2
2
  module Paginate
3
- VERSION = '0.1.4'.freeze
3
+ VERSION = '0.1.5a'.freeze
4
4
  end
5
5
  end
@@ -0,0 +1,3 @@
1
+ ## Summary
2
+
3
+ [Change!] Describe your feature, problems you had, notes, improvements and others.
data/wor-paginate.gemspec CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |s|
8
8
  s.version = Wor::Paginate::VERSION
9
9
  s.platform = Gem::Platform::RUBY
10
10
  s.date = Date.today
11
- s.authors = ["hdf1986", "icoluccio", "alanhala"]
12
- s.email = ["hugo.farji@wolox.com.ar", "ignacio.coluccio@wolox.com.ar", "alan.halatian@wolox.com.ar"]
11
+ s.authors = ["icoluccio", "mnmallea", "holywyvern", "lucasVoboril"]
12
+ s.email = ["ignacio.coluccio@wolox.com.ar", "martin.mallea@wolox.com.ar", "ramiro.rojo@wolox.com.ar", "lucas.voboril@wolox.com.ar"]
13
13
  s.homepage = "https://github.com/Wolox/wor-paginate"
14
14
  s.summary = "Simplified pagination for Rails API controllers"
15
15
  s.description = "Wor::Paginate is a gem for Rails that simplifies pagination, particularly for controller methods, while standardizing JSON output for APIs. It's meant to work both as a standalone pagination gem and as an extra layer over Kaminari and will_paginate"
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wor-paginate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5a
5
5
  platform: ruby
6
6
  authors:
7
- - hdf1986
8
7
  - icoluccio
9
- - alanhala
8
+ - mnmallea
9
+ - holywyvern
10
+ - lucasVoboril
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 2018-09-04 00:00:00.000000000 Z
14
+ date: 2019-09-13 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: railties
@@ -51,9 +52,10 @@ description: Wor::Paginate is a gem for Rails that simplifies pagination, partic
51
52
  work both as a standalone pagination gem and as an extra layer over Kaminari and
52
53
  will_paginate
53
54
  email:
54
- - hugo.farji@wolox.com.ar
55
55
  - ignacio.coluccio@wolox.com.ar
56
- - alan.halatian@wolox.com.ar
56
+ - martin.mallea@wolox.com.ar
57
+ - ramiro.rojo@wolox.com.ar
58
+ - lucas.voboril@wolox.com.ar
57
59
  executables: []
58
60
  extensions: []
59
61
  extra_rdoc_files: []
@@ -62,7 +64,6 @@ files:
62
64
  - ".rubocop.yml"
63
65
  - ".travis.yml"
64
66
  - CHANGELOG.md
65
- - Dangerfile
66
67
  - Gemfile
67
68
  - LICENSE.md
68
69
  - README.md
@@ -85,6 +86,7 @@ files:
85
86
  - lib/wor/paginate/paginate.rb
86
87
  - lib/wor/paginate/rspec.rb
87
88
  - lib/wor/paginate/version.rb
89
+ - pull_request_template.md
88
90
  - wor-paginate.gemspec
89
91
  homepage: https://github.com/Wolox/wor-paginate
90
92
  licenses:
@@ -101,12 +103,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
101
103
  version: '0'
102
104
  required_rubygems_version: !ruby/object:Gem::Requirement
103
105
  requirements:
104
- - - ">="
106
+ - - ">"
105
107
  - !ruby/object:Gem::Version
106
- version: '0'
108
+ version: 1.3.1
107
109
  requirements: []
108
- rubyforge_project:
109
- rubygems_version: 2.7.6
110
+ rubygems_version: 3.0.2
110
111
  signing_key:
111
112
  specification_version: 4
112
113
  summary: Simplified pagination for Rails API controllers
data/Dangerfile DELETED
@@ -1,69 +0,0 @@
1
- # Sometimes it's a README fix, or something like that - which isn't relevant for
2
- # including in a project's CHANGELOG for example
3
- declared_trivial = github.pr_title.include? "#trivial"
4
- gemfile_changed = git.deleted_files.include?('Gemfile')
5
- gemfile_lock_changed = git.deleted_files.include?('Gemfile.lock')
6
-
7
- # Make it more obvious that a PR is a work in progress and shouldn't be merged yet
8
- warn("PR is classed as Work in Progress") if github.pr_title.include? "[WIP]"
9
-
10
- # Warn when there is a big PR with more than 500 lines
11
- warn("Big PR. If it's possible try to reduce this into smaller PR's") if git.lines_of_code > 500
12
-
13
- # Warn when a PR is clased as work in progress
14
- warn "PR is classed as Work in Progress" if github.pr_title.include? "[WIP]"
15
-
16
- # Don't let testing shortcuts get into master by accident
17
- fail("fdescribe left in tests") if `grep -r fdescribe specs/ `.length > 1
18
- fail("fit left in tests") if `grep -r fit specs/ `.length > 1
19
-
20
- # Ensure there's a summary on the pull request description
21
- fail "Please provide a summary in the Pull Request description" if github.pr_body.length < 5
22
-
23
- # Ensures that the PR is mergeable
24
- can_merge = github.pr_json["mergeable"]
25
- fail("This PR cannot be merged yet. Please fix the conflicts with the base branch", sticky: false) unless can_merge
26
-
27
- # It fails when TODO's are present
28
- todoist.message = "Please fix all TODOS"
29
- todoist.fail_for_todos
30
-
31
- # Check for changes in the CHANGELOG.md if the pr isn't trivial
32
- unless declared_trivial
33
- [
34
- 'CHANGELOG.md'
35
- ].each do |file_who_needs_change|
36
- fail("#{file_who_needs_change} needs to be changed") unless git.modified_files.include?(file_who_needs_change)
37
- end
38
- end
39
- # Fails when an important file is deleted or renamed
40
- [
41
- 'wor-paginate-gemspec',
42
- 'README.md',
43
- 'CHANGELOG.md',
44
- '.gitignore',
45
- '.travis.yml',
46
- '.rubocop.yml'
47
- ].each do |protected_file|
48
- fail("#{protected_file} file shouldn't be deleted or renamed") if git.deleted_files.include?(protected_file) || git.renamed_files.include?(protected_file)
49
- end
50
-
51
- # Fails when a dangerous file is uploaded
52
- [
53
- '.ruby-version',
54
- 'Gemfile.lock',
55
- ].each do |protected_file|
56
- fail("#{protected_file} file shouldn't be added") if git.added_files.include?(protected_file)
57
- end
58
-
59
- # Removes placeholder line
60
- # Danger::Changelog.configure do |config|
61
- # config.placeholder_line = nil
62
- # end
63
-
64
- # Check that bundle install where ran
65
- # if gemfile_changed && !gemfile_lock_changed
66
- # message = 'Changes were made to Gemfile, but not to Gemfile.lock';
67
- # idea = 'Perhaps you need to run `bundle install`?';
68
- # warn(`${message} - <i>${idea}</i>`);
69
- # end