her 0.8.1 → 0.8.2

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: 606f0ea519a2ac25fd041636d9ef3294a26b406d
4
- data.tar.gz: 86d7b4be4bdba0ce5e93b6410c53323478de6c7b
3
+ metadata.gz: 05819a61053829385f6b324cea06b9e8d7711ed8
4
+ data.tar.gz: 4e0ab4c195f58ae958d56a14d12269ec4e4501e7
5
5
  SHA512:
6
- metadata.gz: 177aa0aa91c294a4300ce3aed89646499df76d5b82f3230a9ce4b0e46e037ad4c2086ddb60a31d9ebb502845c26e75b6fcce069f2fb4a7166f18a3b9a60c6e48
7
- data.tar.gz: 293fdbad4a95fc6d3126b4292b2de8624495751e2e12f4c272a0070ac41d2d832b5842e2b263cc118fd50d84f893e9cd4e9b14f51ee45edf1757ef4a74a21659
6
+ metadata.gz: be38afb248738d2cddc242d08cd3ea33bcecc6488e432f72e65da2e6abf9eb25004d78a7ebde4670cd5862e3367b6aeab068754295d9760de6e55b9e60f8dbad
7
+ data.tar.gz: 6a9ff6754b4f1e9b9ec45a8108e3f18b03239b8b3e00a51ca60ed49e75517c26381d221dcd5cc12e4cfbabad2bb84918c0aa3c1ca0772fb9e1fd5565d9dac115
data/README.md CHANGED
@@ -1,3 +1,9 @@
1
+ # Maintenance Update 29th Sept 2016
2
+ Hi folks, [@edtjones](https://github.com/edtjones) here. Rémi has handed me the keys to Her and [@foxpaul](https://github.com/foxpaul) and I will be trying to do the library justice with the help of the community. There's loads to do; we'll get in touch with everyone who's raised a PR as soon as possible and figure out a plan of action.
3
+
4
+ # Rails 5 support
5
+ If you need Rails 5 support, version 0.8.2 is for you!
6
+
1
7
  <p align="center">
2
8
  <a href="https://github.com/remiprev/her">
3
9
  <img src="http://i.imgur.com/43KEchq.png" alt="Her" />
data/UPGRADE.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Here is a list of notable changes by release. Her follows the [Semantic Versioning](http://semver.org/) system.
4
4
 
5
- ## 0.8.0
5
+ ## 0.8.1 (Note: 0.8.0 yanked)
6
6
 
7
7
  - Initial support for JSONAPI [link](https://github.com/remiprev/her/pull/347)
8
8
  - Fix for has_one association parsing [link](https://github.com/remiprev/her/pull/352)
@@ -23,8 +23,8 @@ Gem::Specification.new do |s|
23
23
  s.add_development_dependency "fivemat", "~> 1.2"
24
24
  s.add_development_dependency "json", "~> 1.8"
25
25
 
26
- s.add_runtime_dependency "activemodel", ">= 3.0.0", "<= 4.3.0"
27
- s.add_runtime_dependency "activesupport", ">= 3.0.0", "<= 4.3.0"
26
+ s.add_runtime_dependency "activemodel", ">= 3.0.0", "<= 6.0.0"
27
+ s.add_runtime_dependency "activesupport", ">= 3.0.0", "<= 6.0.0"
28
28
  s.add_runtime_dependency "faraday", ">= 0.8", "< 1.0"
29
29
  s.add_runtime_dependency "multi_json", "~> 1.7"
30
30
  end
@@ -33,8 +33,7 @@ module Her
33
33
  end
34
34
 
35
35
  # create a proxy to the fetched object's method
36
- metaclass = (class << self; self; end)
37
- metaclass.install_proxy_methods 'association.fetch', name
36
+ AssociationProxy.install_proxy_methods 'association.fetch', name
38
37
 
39
38
  # resend message to fetched object
40
39
  __send__(name, *args, &block)
@@ -1,3 +1,4 @@
1
+ # coding: utf-8
1
2
  module Her
2
3
  module Model
3
4
  # This module adds ORM-like capabilities to the model
@@ -72,10 +73,10 @@ module Her
72
73
  # @user = User.find(1)
73
74
  # @user.destroy
74
75
  # # Called via DELETE "/users/1"
75
- def destroy
76
+ def destroy(params = {})
76
77
  method = self.class.method_for(:destroy)
77
78
  run_callbacks :destroy do
78
- self.class.request(:_method => method, :_path => request_path) do |parsed_data, response|
79
+ self.class.request(params.merge(:_method => method, :_path => request_path)) do |parsed_data, response|
79
80
  assign_attributes(self.class.parse(parsed_data[:data])) if parsed_data[:data].any?
80
81
  @metadata = parsed_data[:metadata]
81
82
  @response_errors = parsed_data[:errors]
@@ -1,3 +1,3 @@
1
1
  module Her
2
- VERSION = "0.8.1"
2
+ VERSION = "0.8.2"
3
3
  end
@@ -413,6 +413,31 @@ describe Her::Model::ORM do
413
413
  @user.active.should be_falsey
414
414
  @user.should be_destroyed
415
415
  end
416
+
417
+ context "with params" do
418
+ before do
419
+ Her::API.setup :url => "https://api.example.com" do |builder|
420
+ builder.use Her::Middleware::FirstLevelParseJSON
421
+ builder.use Faraday::Request::UrlEncoded
422
+ builder.adapter :test do |stub|
423
+ stub.delete("/users/1?delete_type=soft") { |env| [200, {}, { :id => 1, :fullname => "Lindsay Fünke", :active => false }.to_json] }
424
+ end
425
+ end
426
+ end
427
+
428
+ it "handle resource deletion through the .destroy class method" do
429
+ @user = Foo::User.destroy_existing(1, delete_type: 'soft')
430
+ @user.active.should be_false
431
+ @user.should be_destroyed
432
+ end
433
+
434
+ it "handle resource deletion through #destroy on an existing resource" do
435
+ @user = Foo::User.find(1)
436
+ @user.destroy(delete_type: 'soft')
437
+ @user.active.should be_false
438
+ @user.should be_destroyed
439
+ end
440
+ end
416
441
  end
417
442
 
418
443
  context 'customizing HTTP methods' do
@@ -23,6 +23,19 @@ describe Her::Model do
23
23
  it { should have_key(:comments) }
24
24
  end
25
25
 
26
+ describe :serialization do
27
+ it 'should be serialized without an error' do
28
+ expect { Marshal.dump(subject.comments) }.not_to raise_error
29
+ end
30
+
31
+ it 'should correctly load serialized object' do
32
+ serialized_comments = Marshal.load(Marshal.dump(subject.comments))
33
+ subject.comments.size.should eq(serialized_comments.size)
34
+ subject.comments.first.id.should eq(serialized_comments.first.id)
35
+ subject.comments.first.body.should eq(serialized_comments.first.body)
36
+ end
37
+ end
38
+
26
39
  describe :[] do
27
40
  it { should_not have_key(:unknown_method_for_a_user) }
28
41
  specify { subject[:name].should == "Tobias Fünke" }
metadata CHANGED
@@ -1,157 +1,157 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: her
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rémi Prévost
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-07 00:00:00.000000000 Z
11
+ date: 2016-09-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '10.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
26
  version: '10.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '2.13'
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
40
  version: '2.13'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec-its
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.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
54
  version: '1.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: fivemat
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.2'
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
68
  version: '1.2'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: json
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
75
  version: '1.8'
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
82
  version: '1.8'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: activemodel
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: 3.0.0
90
- - - "<="
90
+ - - <=
91
91
  - !ruby/object:Gem::Version
92
- version: 4.3.0
92
+ version: 6.0.0
93
93
  type: :runtime
94
94
  prerelease: false
95
95
  version_requirements: !ruby/object:Gem::Requirement
96
96
  requirements:
97
- - - ">="
97
+ - - '>='
98
98
  - !ruby/object:Gem::Version
99
99
  version: 3.0.0
100
- - - "<="
100
+ - - <=
101
101
  - !ruby/object:Gem::Version
102
- version: 4.3.0
102
+ version: 6.0.0
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: activesupport
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
- - - ">="
107
+ - - '>='
108
108
  - !ruby/object:Gem::Version
109
109
  version: 3.0.0
110
- - - "<="
110
+ - - <=
111
111
  - !ruby/object:Gem::Version
112
- version: 4.3.0
112
+ version: 6.0.0
113
113
  type: :runtime
114
114
  prerelease: false
115
115
  version_requirements: !ruby/object:Gem::Requirement
116
116
  requirements:
117
- - - ">="
117
+ - - '>='
118
118
  - !ruby/object:Gem::Version
119
119
  version: 3.0.0
120
- - - "<="
120
+ - - <=
121
121
  - !ruby/object:Gem::Version
122
- version: 4.3.0
122
+ version: 6.0.0
123
123
  - !ruby/object:Gem::Dependency
124
124
  name: faraday
125
125
  requirement: !ruby/object:Gem::Requirement
126
126
  requirements:
127
- - - ">="
127
+ - - '>='
128
128
  - !ruby/object:Gem::Version
129
129
  version: '0.8'
130
- - - "<"
130
+ - - <
131
131
  - !ruby/object:Gem::Version
132
132
  version: '1.0'
133
133
  type: :runtime
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - ">="
137
+ - - '>='
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0.8'
140
- - - "<"
140
+ - - <
141
141
  - !ruby/object:Gem::Version
142
142
  version: '1.0'
143
143
  - !ruby/object:Gem::Dependency
144
144
  name: multi_json
145
145
  requirement: !ruby/object:Gem::Requirement
146
146
  requirements:
147
- - - "~>"
147
+ - - ~>
148
148
  - !ruby/object:Gem::Version
149
149
  version: '1.7'
150
150
  type: :runtime
151
151
  prerelease: false
152
152
  version_requirements: !ruby/object:Gem::Requirement
153
153
  requirements:
154
- - - "~>"
154
+ - - ~>
155
155
  - !ruby/object:Gem::Version
156
156
  version: '1.7'
157
157
  description: Her is an ORM that maps REST resources and collections to Ruby objects
@@ -161,10 +161,10 @@ executables: []
161
161
  extensions: []
162
162
  extra_rdoc_files: []
163
163
  files:
164
- - ".gitignore"
165
- - ".rspec"
166
- - ".travis.yml"
167
- - ".yardopts"
164
+ - .gitignore
165
+ - .rspec
166
+ - .travis.yml
167
+ - .yardopts
168
168
  - CONTRIBUTING.md
169
169
  - Gemfile
170
170
  - LICENSE
@@ -242,17 +242,17 @@ require_paths:
242
242
  - lib
243
243
  required_ruby_version: !ruby/object:Gem::Requirement
244
244
  requirements:
245
- - - ">="
245
+ - - '>='
246
246
  - !ruby/object:Gem::Version
247
247
  version: '0'
248
248
  required_rubygems_version: !ruby/object:Gem::Requirement
249
249
  requirements:
250
- - - ">="
250
+ - - '>='
251
251
  - !ruby/object:Gem::Version
252
252
  version: '0'
253
253
  requirements: []
254
254
  rubyforge_project:
255
- rubygems_version: 2.2.3
255
+ rubygems_version: 2.2.2
256
256
  signing_key:
257
257
  specification_version: 4
258
258
  summary: A simple Representational State Transfer-based Hypertext Transfer Protocol-powered