breezy_template 0.10.1 → 0.11.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 +4 -4
- data/lib/breezy_template/cache_extension.rb +1 -1
- data/lib/breezy_template/deferment_extension.rb +1 -1
- data/lib/breezy_template/errors.rb +7 -0
- data/lib/breezy_template/partial_extension.rb +5 -7
- data/lib/breezy_template/search_extension.rb +5 -3
- data/test/cache_extension_test.rb +334 -0
- data/test/deferement_test.rb +322 -0
- data/test/extensions_test.rb +3 -1351
- data/test/partial_extension_test.rb +273 -0
- data/test/search_extension_test.rb +334 -0
- data/test/test_helper.rb +162 -1
- metadata +10 -2
data/test/test_helper.rb
CHANGED
@@ -7,10 +7,20 @@ require 'active_record'
|
|
7
7
|
require 'active_support/testing/autorun' if Rails.version >= '4'
|
8
8
|
require 'active_support/test_case'
|
9
9
|
|
10
|
+
require "mocha"
|
11
|
+
require 'delegate'
|
12
|
+
require "action_view"
|
13
|
+
require "action_view/testing/resolvers"
|
14
|
+
require "breezy_template"
|
15
|
+
require 'byebug'
|
16
|
+
require 'mocha/test_unit'
|
17
|
+
|
10
18
|
ActiveSupport::TestCase.test_order = :random if ActiveSupport::TestCase.respond_to?(:test_order=)
|
11
19
|
ActiveRecord::Base.establish_connection adapter: "sqlite3", database: ":memory:"
|
12
20
|
Rails.cache = ActiveSupport::Cache::MemoryStore.new
|
13
21
|
|
22
|
+
require 'breezy_template/core_ext'
|
23
|
+
|
14
24
|
class ObjectCollection < SimpleDelegator
|
15
25
|
def member_at(index)
|
16
26
|
at(index)
|
@@ -23,5 +33,156 @@ class ObjectCollection < SimpleDelegator
|
|
23
33
|
end
|
24
34
|
end
|
25
35
|
|
36
|
+
RAISE_IF_USED_PARTIAL = <<-JBUILDER
|
37
|
+
if used
|
38
|
+
raise 'No hit expected here'
|
39
|
+
end
|
40
|
+
JBUILDER
|
41
|
+
|
42
|
+
BLOG_POST_PARTIAL = <<-JBUILDER
|
43
|
+
json.extract! blog_post, :id, :body
|
44
|
+
json.author do
|
45
|
+
first_name, last_name = blog_post.author_name.split(nil, 2)
|
46
|
+
json.first_name first_name
|
47
|
+
json.last_name last_name
|
48
|
+
end
|
49
|
+
JBUILDER
|
50
|
+
|
51
|
+
COLLECTION_PARTIAL = <<-JBUILDER
|
52
|
+
json.extract! collection, :id, :name
|
53
|
+
JBUILDER
|
54
|
+
|
55
|
+
PROFILE_PARTIAL = <<-JBUILDER
|
56
|
+
json.email email
|
57
|
+
JBUILDER
|
58
|
+
|
59
|
+
RECORD_PARTIAL = <<-JBUILDER
|
60
|
+
json.email record[:email]
|
61
|
+
JBUILDER
|
62
|
+
|
63
|
+
FOOTER_PARTIAL = <<-JBUILDER
|
64
|
+
json.terms "You agree"
|
65
|
+
JBUILDER
|
66
|
+
|
67
|
+
NESTED_PARTIAL = <<-JBUILDER
|
68
|
+
json.foo do
|
69
|
+
json.bar 'goo'
|
70
|
+
end
|
71
|
+
|
72
|
+
json.nested nil, partial: "footer"
|
73
|
+
JBUILDER
|
74
|
+
|
75
|
+
FLATTENED_PARTIAL = <<-JBUILDER
|
76
|
+
json.array! [1,2]
|
77
|
+
JBUILDER
|
78
|
+
|
79
|
+
PARTIALS = {
|
80
|
+
"_partial.js.breezy" => "foo ||= 'hello'; json.content foo",
|
81
|
+
"_blog_post.js.breezy" => BLOG_POST_PARTIAL,
|
82
|
+
"_profile.js.breezy" => PROFILE_PARTIAL,
|
83
|
+
"_record.js.breezy" => RECORD_PARTIAL,
|
84
|
+
"_footer.js.breezy" => FOOTER_PARTIAL,
|
85
|
+
"_nested.js.breezy" => NESTED_PARTIAL,
|
86
|
+
"_collection.js.breezy" => COLLECTION_PARTIAL,
|
87
|
+
"_flattened.js.breezy" => FLATTENED_PARTIAL,
|
88
|
+
"_raise_if_used.js.breezy" => RAISE_IF_USED_PARTIAL
|
89
|
+
}
|
90
|
+
|
91
|
+
ActionView::Template.register_template_handler :breezy, BreezyTemplate::Handler
|
92
|
+
|
93
|
+
BlogPost = Struct.new(:id, :body, :author_name)
|
94
|
+
Collection = Struct.new(:id, :name)
|
95
|
+
blog_authors = [ "David Heinemeier Hansson", "Pavel Pravosud" ].cycle
|
96
|
+
BLOG_POST_COLLECTION = Array.new(10){ |i| BlogPost.new(i+1, "post body #{i+1}", blog_authors.next) }
|
97
|
+
COLLECTION_COLLECTION = Array.new(5){ |i| Collection.new(i+1, "collection #{i+1}") }
|
98
|
+
|
99
|
+
class BreezyTemplateTestCase < ActionView::TestCase
|
100
|
+
setup do
|
101
|
+
self.request_forgery = false
|
102
|
+
BreezyTemplate.configuration.track_sprockets_assets = []
|
103
|
+
BreezyTemplate.configuration.track_pack_assets = []
|
104
|
+
|
105
|
+
# this is a stub. Normally this would be set by the
|
106
|
+
# controller locals
|
107
|
+
self.breezy = {}
|
108
|
+
|
109
|
+
@context = self
|
110
|
+
Rails.cache.clear
|
111
|
+
end
|
112
|
+
|
113
|
+
teardown do
|
114
|
+
# Mocha didn't auto teardown??
|
115
|
+
Mocha::Mockery.teardown
|
116
|
+
end
|
117
|
+
|
118
|
+
cattr_accessor :request_forgery, :breezy
|
119
|
+
self.request_forgery = false
|
120
|
+
|
121
|
+
def breezy_filter
|
122
|
+
@breezy_filter
|
123
|
+
end
|
124
|
+
|
125
|
+
def asset_pack_path(asset)
|
126
|
+
return asset
|
127
|
+
end
|
128
|
+
|
129
|
+
def strip_format(str)
|
130
|
+
str.strip_heredoc.gsub(/\n\s*/, "")
|
131
|
+
end
|
132
|
+
|
133
|
+
def request
|
134
|
+
@request
|
135
|
+
end
|
136
|
+
|
137
|
+
# Stub out a couple of methods that'll get called from cache_fragment_name
|
138
|
+
def view_cache_dependencies
|
139
|
+
[]
|
140
|
+
end
|
141
|
+
|
142
|
+
def jbuild(source, opts={})
|
143
|
+
@breezy_filter = opts[:breezy_filter]
|
144
|
+
@request = opts[:request] || action_controller_test_request
|
145
|
+
@rendered = []
|
146
|
+
partials = PARTIALS.clone
|
147
|
+
partials["test.js.breezy"] = source
|
148
|
+
resolver = ActionView::FixtureResolver.new(partials)
|
149
|
+
lookup_context.view_paths = [resolver]
|
150
|
+
lookup_context.formats = [:js]
|
151
|
+
template = ActionView::Template.new(source, "test", BreezyTemplate::Handler, virtual_path: "test")
|
152
|
+
template.render(self, {}).strip
|
153
|
+
end
|
154
|
+
|
155
|
+
def action_controller_test_request
|
156
|
+
if ::Rails.version.start_with?('5.2')
|
157
|
+
::ActionController::TestRequest.create({})
|
158
|
+
elsif ::Rails.version.start_with?('5.1')
|
159
|
+
::ActionController::TestRequest.create({})
|
160
|
+
elsif ::Rails.version.start_with?('5')
|
161
|
+
::ActionController::TestRequest.create
|
162
|
+
else
|
163
|
+
::ActionController::TestRequest.new
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
def cache_keys
|
168
|
+
major_v = Rails::VERSION::MAJOR
|
169
|
+
minor_v = Rails::VERSION::MINOR
|
170
|
+
rails_v = "rails#{major_v}#{minor_v}"
|
171
|
+
path = File.expand_path("../fixtures/cache_keys.yaml", __FILE__)
|
172
|
+
keys = YAML.load_file(path)
|
173
|
+
keys[method_name][rails_v]
|
174
|
+
end
|
175
|
+
|
176
|
+
def undef_context_methods(*names)
|
177
|
+
self.class_eval do
|
178
|
+
names.each do |name|
|
179
|
+
undef_method name.to_sym if method_defined?(name.to_sym)
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
def form_authenticity_token
|
185
|
+
"secret"
|
186
|
+
end
|
187
|
+
end
|
26
188
|
|
27
|
-
require 'breezy_template/core_ext'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: breezy_template
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Johny Ho
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-01-
|
11
|
+
date: 2019-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionpack
|
@@ -102,8 +102,12 @@ files:
|
|
102
102
|
- lib/breezy_template/partial_extension.rb
|
103
103
|
- lib/breezy_template/search_extension.rb
|
104
104
|
- lib/breezy_template/var.rb
|
105
|
+
- test/cache_extension_test.rb
|
106
|
+
- test/deferement_test.rb
|
105
107
|
- test/dependency_tracker_test.rb
|
106
108
|
- test/extensions_test.rb
|
109
|
+
- test/partial_extension_test.rb
|
110
|
+
- test/search_extension_test.rb
|
107
111
|
- test/template_test.rb
|
108
112
|
- test/test_helper.rb
|
109
113
|
homepage: https://github.com/jho406/breezy/
|
@@ -131,7 +135,11 @@ signing_key:
|
|
131
135
|
specification_version: 4
|
132
136
|
summary: Breezy Templates for React props
|
133
137
|
test_files:
|
138
|
+
- test/search_extension_test.rb
|
139
|
+
- test/partial_extension_test.rb
|
134
140
|
- test/dependency_tracker_test.rb
|
135
141
|
- test/extensions_test.rb
|
142
|
+
- test/deferement_test.rb
|
143
|
+
- test/cache_extension_test.rb
|
136
144
|
- test/template_test.rb
|
137
145
|
- test/test_helper.rb
|