lhs 3.1.3 → 3.2.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: 0fea30df48822225921db5b070d8b3581c64451e
4
- data.tar.gz: b29781282f62a5a68e97b0f4643af68b221c6bf1
3
+ metadata.gz: 3104a36287bf44989ceded81a998fd803298b14c
4
+ data.tar.gz: 48c62d18f012d593731a5ec8f0ed3c69992a8512
5
5
  SHA512:
6
- metadata.gz: b1a1529a764d30f17a15346b102ac3a68c3a52709fc12d55fd6454f6dfae9131f30baa61a7bb67931217748f34804b5715cbda3438ba2702d655137f7b153812
7
- data.tar.gz: 321a76d203b0d7122af4ad1d38bf4c6feb0bf848c8991dd14c33205267d39deef3cf4ce931b5e6f7941471ddef6c44e5aa9c0958bea362f9012bdff6257cedd6
6
+ metadata.gz: bc6ac276747f1c18059f7ae120aa7672af03dec3976886175883ac8dbd4faea963b5029ac427eb5a80e9887f64d9c994fcca9210e4e829d5e13af5124d2e01be
7
+ data.tar.gz: 4cf2de0d3f4965de5c236a48e3a5fc89b033df6cebb88d1de1f23aa3c7cd9f38480afc2091df6d9fe4e90562b83ff16d561da89ddd338599c0bcb73676e3cf61
data/README.md CHANGED
@@ -347,3 +347,13 @@ For example, you can use kaminari to render paginations based on LHS Records:
347
347
  # view
348
348
  = paginate @items
349
349
  ```
350
+
351
+ ## form_for Helper
352
+ Rails `form_for` view-helper can be used in combination with instances of LHS::Record to autogenerate forms:
353
+ ```
354
+ <%= form_for(@instance, url: '/create') do |f| %>
355
+ <%= f.text_field :name %>
356
+ <%= f.text_area :text %>
357
+ <%= f.submit "Create" %>
358
+ <% end %>
359
+ ```
@@ -29,4 +29,5 @@ Gem::Specification.new do |s|
29
29
  s.add_development_dependency 'geminabox'
30
30
  s.add_development_dependency 'pry'
31
31
  s.add_development_dependency 'ciderizer'
32
+ s.add_development_dependency 'capybara'
32
33
  end
@@ -6,10 +6,16 @@ class LHS::Record
6
6
  module Model
7
7
  extend ActiveSupport::Concern
8
8
 
9
- module ClassMethods
10
- def model_name
11
- ActiveModel::Name.new(self)
12
- end
9
+ def to_model
10
+ self
11
+ end
12
+
13
+ def persisted?
14
+ !href.nil?
15
+ end
16
+
17
+ included do
18
+ extend ActiveModel::Naming
13
19
  end
14
20
  end
15
21
  end
@@ -1,3 +1,3 @@
1
1
  module LHS
2
- VERSION = "3.1.3"
2
+ VERSION = "3.2.0"
3
3
  end
@@ -0,0 +1,5 @@
1
+ <%= form_for(@instance, url: '/create') do |f| %>
2
+ <%= f.text_field :name %>
3
+ <%= f.text_area :text %>
4
+ <%= f.submit "Create" %>
5
+ <% end %>
@@ -0,0 +1,44 @@
1
+ require 'rails_helper'
2
+
3
+ describe LHS::Record do
4
+ context '#persisted?' do
5
+ let(:datastore) { 'http://local.ch/v2' }
6
+
7
+ before(:each) do
8
+ LHC.config.placeholder('datastore', datastore)
9
+ class Feedback < LHS::Record
10
+ endpoint ':datastore/content-ads/:campaign_id/feedbacks'
11
+ end
12
+ end
13
+
14
+ context 'for new record' do
15
+ subject { Feedback.new }
16
+
17
+ it 'is false' do
18
+ expect(subject.persisted?).to be(false)
19
+ end
20
+ end
21
+
22
+ context 'for saved record' do
23
+ let(:campaign_id) { 'aaa' }
24
+ let(:parameters) do
25
+ {
26
+ recommended: true,
27
+ campaign_id: campaign_id
28
+ }
29
+ end
30
+ subject { Feedback.new(parameters) }
31
+
32
+ before do
33
+ stub_request(:post, "#{datastore}/content-ads/#{campaign_id}/feedbacks")
34
+ .with(body: parameters.to_json)
35
+ .to_return(status: 200, body: parameters.merge(href: "#{datastore}/content-ads/#{campaign_id}/feedbacks/123456789").to_json)
36
+ end
37
+
38
+ it 'is true' do
39
+ subject.save
40
+ expect(subject.persisted?).to be(true)
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,19 @@
1
+ require "rails_helper"
2
+ require 'capybara/rspec'
3
+
4
+ describe 'form_for helper' do
5
+ class Feedback < LHS::Record
6
+ endpoint ':datastore/v2/feedbacks'
7
+ end
8
+
9
+ before(:each) do
10
+ assign(:instance, Feedback.new)
11
+ end
12
+
13
+ it 'supported by LHS' do
14
+ render template: 'form_for.html'
15
+ expect(rendered).to have_selector('form')
16
+ expect(rendered).to have_selector('input[name="feedback[name]"]')
17
+ expect(rendered).to have_selector('textarea[name="feedback[text]"]')
18
+ end
19
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lhs
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.3
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - https://github.com/local-ch/lhs/graphs/contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-25 00:00:00.000000000 Z
11
+ date: 2016-02-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lhc
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: capybara
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
125
139
  description: Rails gem providing an easy, active-record-like interface to use http
126
140
  backend services
127
141
  email:
@@ -202,6 +216,7 @@ files:
202
216
  - spec/dummy/app/mailers/.keep
203
217
  - spec/dummy/app/models/.keep
204
218
  - spec/dummy/app/models/concerns/.keep
219
+ - spec/dummy/app/views/form_for.html.erb
205
220
  - spec/dummy/app/views/layouts/application.html.erb
206
221
  - spec/dummy/bin/bundle
207
222
  - spec/dummy/bin/rails
@@ -261,6 +276,7 @@ files:
261
276
  - spec/record/model_name_spec.rb
262
277
  - spec/record/new_spec.rb
263
278
  - spec/record/pagination_spec.rb
279
+ - spec/record/persisted_spec.rb
264
280
  - spec/record/request_spec.rb
265
281
  - spec/record/select_spec.rb
266
282
  - spec/record/to_json_spec.rb
@@ -273,6 +289,7 @@ files:
273
289
  - spec/support/fixtures/json/feedbacks.json
274
290
  - spec/support/fixtures/json/localina_content_ad.json
275
291
  - spec/support/load_json.rb
292
+ - spec/views/form_for_spec.rb
276
293
  homepage: https://github.com/local-ch/lhs
277
294
  licenses: []
278
295
  metadata: {}
@@ -323,6 +340,7 @@ test_files:
323
340
  - spec/dummy/app/mailers/.keep
324
341
  - spec/dummy/app/models/.keep
325
342
  - spec/dummy/app/models/concerns/.keep
343
+ - spec/dummy/app/views/form_for.html.erb
326
344
  - spec/dummy/app/views/layouts/application.html.erb
327
345
  - spec/dummy/bin/bundle
328
346
  - spec/dummy/bin/rails
@@ -382,6 +400,7 @@ test_files:
382
400
  - spec/record/model_name_spec.rb
383
401
  - spec/record/new_spec.rb
384
402
  - spec/record/pagination_spec.rb
403
+ - spec/record/persisted_spec.rb
385
404
  - spec/record/request_spec.rb
386
405
  - spec/record/select_spec.rb
387
406
  - spec/record/to_json_spec.rb
@@ -394,3 +413,4 @@ test_files:
394
413
  - spec/support/fixtures/json/feedbacks.json
395
414
  - spec/support/fixtures/json/localina_content_ad.json
396
415
  - spec/support/load_json.rb
416
+ - spec/views/form_for_spec.rb