api_client_bulk_loader 0.1.3 → 0.1.4

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: 9b52e169fa4d30699f1d05bccb728bb24da39004
4
- data.tar.gz: 5a7605677dd52caa27ef85a544187807bce9b2d1
3
+ metadata.gz: e249c8aea7f0eccdca7a4b2b441168a3ffa3904a
4
+ data.tar.gz: 44c3bed52a08f7e701e25953eaf0226fa1c08df9
5
5
  SHA512:
6
- metadata.gz: 5b91c1a5b5648d0724356c39c1ca130576c723af4c44acb607680849c743022f3255c6c9db3be6c5429c3bf6c79e63da323aaaa47917a545b9955f066fa80828
7
- data.tar.gz: 9665e5686d9b9bf1aebdfa1b7d98f36da80ad7c60c13ca60c174d11616eb7dfbdb9d91b07c9dfc49134349d97263fa68bbd92c4e898713cd60a58950619cca16
6
+ metadata.gz: e0343efed332cda6989fa59a5e0fead211d1c15ceaafe558c0a648754f23580d924288ad77e0ca93faab7a9c82eacd583c4060be932d07e606bc56cb4c49a687
7
+ data.tar.gz: 0514541ac5680eaa55cec183da5850384a4592d24feb36711955cd9e2cf7f07cb4c55218a271d8f710f603119b7869ec717e522e0cb30e12dc5d64616b920b5c
@@ -27,8 +27,6 @@ module ApiClientBulkLoader
27
27
  def self.bulk_load(association, api_client_model, attribute: :id, autoload: false, from: :id, is_has_one: false, limit: nil)
28
28
  @bulk_queued_associations ||= {}
29
29
  @bulk_queued_associations[association] = ApiClientBulkLoader::Client::AssociationAdapter.new(api_client_model, attribute, from, autoload, is_has_one, limit)
30
-
31
- define_bulk_method(association)
32
30
  end
33
31
 
34
32
  #Shorthand to the above, but automatically sets 'is_has_one' to true.
@@ -47,9 +45,9 @@ module ApiClientBulkLoader
47
45
 
48
46
  if !values.nil?
49
47
  adapter.push(values)
50
- self.instance_variable_set("@#{association}", ->{
48
+ attributes[association] = ->{
51
49
  adapter.fetch(values)
52
- })
50
+ }
53
51
  end
54
52
  end
55
53
 
@@ -14,18 +14,6 @@ module ApiClientBulkLoader
14
14
  @bulk_queued_associations
15
15
  end
16
16
 
17
- def self.define_bulk_method(association)
18
- #define new getter for assoc that uses the proc
19
- define_method association.to_s do
20
- ivar = self.instance_variable_get("@#{association}")
21
- if (ivar.is_a? Proc)
22
- self.instance_variable_set("@#{association}", ivar.call)
23
- else
24
- ivar
25
- end
26
- end
27
- end
28
-
29
17
  def initialize(*args)
30
18
  super(*args)
31
19
  #Skip em unless we got em
@@ -41,6 +29,42 @@ module ApiClientBulkLoader
41
29
  return self
42
30
  end
43
31
  end
32
+
33
+ def as_json(options=nil)
34
+ prepare_attributes_hash
35
+ super(options)
36
+ end
37
+
38
+ protected
39
+
40
+ def method_missing(method, *args, &block)
41
+ if method.to_s =~ /^(.*)=$/
42
+ set_attribute($1, args.first)
43
+ elsif has_attribute?(method)
44
+ read_attribute(method)
45
+ else
46
+ super
47
+ end
48
+ end
49
+
50
+ def read_attribute(name)
51
+ value = attributes.fetch(name, nil)
52
+ if(value.is_a? Proc)
53
+ attributes[name] = attributes[name].call
54
+ value = attributes[name]
55
+ end
56
+
57
+ return value
58
+ end
59
+
60
+ def prepare_attributes_hash
61
+ return unless self.class.bulk_queued_associations.present?
62
+ self.class.bulk_queued_associations.keys.each do |assoc|
63
+ if(attributes[assoc].is_a? Proc)
64
+ attributes[assoc] = attributes[assoc].call
65
+ end
66
+ end
67
+ end
44
68
  end
45
69
  end
46
70
  end
@@ -30,8 +30,6 @@ module ApiClientBulkLoader
30
30
  def self.bulk_load_poly(association, type_model_hash, attribute: :id, autoload: false, type_from: :document_type, from: :document_id, is_has_one: false, limit: nil)
31
31
  @bulk_queued_associations ||= {}
32
32
  @bulk_queued_associations[association] = ApiClientBulkLoader::Client::PolymorphicAssociationAdapter.new(type_model_hash, attribute,type_from, from, autoload, is_has_one, limit)
33
-
34
- define_bulk_method(association)
35
33
  end
36
34
 
37
35
  def self.bulk_load_poly_has_one(*args, **kwargs)
@@ -50,9 +48,9 @@ module ApiClientBulkLoader
50
48
 
51
49
  if !values.nil?
52
50
  adapter.push(values, resource_type)
53
- self.instance_variable_set("@#{association}", ->{
51
+ attributes[association] = ->{
54
52
  adapter.fetch(values, resource_type)
55
- })
53
+ }
56
54
  end
57
55
  end
58
56
 
@@ -1,3 +1,3 @@
1
1
  module ApiClientBulkLoader
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
data/test/test_helper.rb CHANGED
@@ -16,11 +16,3 @@ if ActiveSupport::TestCase.method_defined?(:fixture_path=)
16
16
  ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
17
17
  end
18
18
 
19
- def variants_for_test
20
- [:medium, :small]
21
- end
22
-
23
- #How many time we should expect to see the item rendered in index.
24
- def expected_render_count
25
- VariantObject.count * 3
26
- end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api_client_bulk_loader
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - alex
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-18 00:00:00.000000000 Z
11
+ date: 2015-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -74,14 +74,8 @@ files:
74
74
  - test/dummy/app/assets/javascripts/application.js
75
75
  - test/dummy/app/assets/stylesheets/application.css
76
76
  - test/dummy/app/controllers/application_controller.rb
77
- - test/dummy/app/controllers/variant_objects_controller.rb
78
77
  - test/dummy/app/helpers/application_helper.rb
79
- - test/dummy/app/models/variant_object.rb
80
78
  - test/dummy/app/views/layouts/application.html.erb
81
- - test/dummy/app/views/variant_objects/_variant_object.html.erb
82
- - test/dummy/app/views/variant_objects/_variant_object_medium.html.erb
83
- - test/dummy/app/views/variant_objects/_variant_object_small.html.erb
84
- - test/dummy/app/views/variant_objects/index.html.erb
85
79
  - test/dummy/bin/bundle
86
80
  - test/dummy/bin/rails
87
81
  - test/dummy/bin/rake
@@ -112,8 +106,6 @@ files:
112
106
  - test/dummy/public/422.html
113
107
  - test/dummy/public/500.html
114
108
  - test/dummy/public/favicon.ico
115
- - test/dummy/test/fixtures/variant_objects.yml
116
- - test/integration/variant_object_controller_test.rb
117
109
  - test/test_helper.rb
118
110
  homepage: http://github.com/alexanderross/api_client_bulk_loader
119
111
  licenses: []
@@ -142,14 +134,8 @@ test_files:
142
134
  - test/dummy/app/assets/javascripts/application.js
143
135
  - test/dummy/app/assets/stylesheets/application.css
144
136
  - test/dummy/app/controllers/application_controller.rb
145
- - test/dummy/app/controllers/variant_objects_controller.rb
146
137
  - test/dummy/app/helpers/application_helper.rb
147
- - test/dummy/app/models/variant_object.rb
148
138
  - test/dummy/app/views/layouts/application.html.erb
149
- - test/dummy/app/views/variant_objects/_variant_object.html.erb
150
- - test/dummy/app/views/variant_objects/_variant_object_medium.html.erb
151
- - test/dummy/app/views/variant_objects/_variant_object_small.html.erb
152
- - test/dummy/app/views/variant_objects/index.html.erb
153
139
  - test/dummy/bin/bundle
154
140
  - test/dummy/bin/rails
155
141
  - test/dummy/bin/rake
@@ -182,7 +168,5 @@ test_files:
182
168
  - test/dummy/public/favicon.ico
183
169
  - test/dummy/Rakefile
184
170
  - test/dummy/README.rdoc
185
- - test/dummy/test/fixtures/variant_objects.yml
186
- - test/integration/variant_object_controller_test.rb
187
171
  - test/test_helper.rb
188
172
  has_rdoc:
@@ -1,10 +0,0 @@
1
- class VariantObjectsController < ApplicationController
2
-
3
- def index
4
- @variant_objects = VariantObject.all
5
-
6
- if(params[:variant])
7
- @variant = params[:variant]
8
- end
9
- end
10
- end
@@ -1,2 +0,0 @@
1
- class VariantObject < ActiveRecord::Base
2
- end
@@ -1 +0,0 @@
1
- <h1 class="default_template"><%= variant_object.name %></h1>
@@ -1 +0,0 @@
1
- <h2 class="medium_template"><%= variant_object.name %></h2>
@@ -1 +0,0 @@
1
- <h3 class="small_template"><%= variant_object.name %></h3>
@@ -1,24 +0,0 @@
1
- <div id="test_disp_container">
2
- <% if @variant %>
3
-
4
- <%= render @variant_objects, :variant => @variant %>
5
- <hr/>
6
- <% @variant_objects.each do |variant_object| %>
7
- <%= render :partial=> variant_object, :variant => @variant %>
8
- <br/>
9
- <%= render variant_object, :variant => @variant %>
10
- <% end %>
11
-
12
- <% else %>
13
- <%= render @variant_objects %>
14
- <hr/>
15
- <% @variant_objects.each do |variant_object| %>
16
- <%= render :partial=> variant_object %>
17
- <br/>
18
- <%= render variant_object %>
19
- <% end %>
20
- <% end %>
21
- <% if params[:test_nil_path] %>
22
- <%= render %>
23
- <% end %>
24
- </div>
@@ -1,14 +0,0 @@
1
- # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2
-
3
- # This model initially had no columns defined. If you add columns to the
4
- # model remove the '{}' from the fixture names and add the columns immediately
5
- # below each fixture, per the syntax in the comments below
6
- #
7
- one:
8
- name: "Test1"
9
- desc: "test1 description"
10
- # column: value
11
- #
12
- two:
13
- name: "Test2"
14
- desc: "test2 description"
@@ -1,25 +0,0 @@
1
- require 'test_helper'
2
-
3
- class VariantObjectControllerTest < ActionDispatch::IntegrationTest
4
- fixtures :all
5
-
6
- #instead of loading individual partials, attempt to render the entire collection with and without variants
7
- test "renders without variant" do
8
- get variant_objects_path
9
- assert_response :success
10
- assert_select ".default_template", :count=> expected_render_count
11
- end
12
-
13
- test "renders with variant" do
14
- variants_for_test.each do |name|
15
- get variant_objects_path(:variant => name)
16
- assert_response :success
17
- assert_select ".#{name}_template", :count=> expected_render_count
18
- end
19
- end
20
-
21
- test 'doesnt break with nil path' do
22
-
23
-
24
- end
25
- end