wcc-contentful-middleman 1.0.0.pre.rc1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ {
2
+ "sys": {
3
+ "type": "Array"
4
+ },
5
+ "items": [],
6
+ "nextSyncUrl": "https://cdn.contentful.com/spaces/343qxys30lid/sync?sync_token=FwqZm..."
7
+ }
@@ -0,0 +1,98 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'simplecov'
4
+
5
+ SimpleCov.start do
6
+ root File.expand_path('../..', __dir__)
7
+ add_filter '/spec/'
8
+ coverage_dir "#{File.expand_path('..', __dir__)}/coverage"
9
+ end
10
+
11
+ require 'bundler/setup'
12
+ require 'dotenv/load'
13
+ require 'webmock/rspec'
14
+ require 'httplog'
15
+
16
+ WebMock.disable_net_connect!(allow_localhost: true)
17
+
18
+ # override env vars for testing
19
+ ENV['CONTENTFUL_SPACE_ID'] = 'test1xab'
20
+ ENV['CONTENTFUL_ACCESS_TOKEN'] = 'test1234'
21
+ ENV['CONTENTFUL_MANAGEMENT_TOKEN'] = 'CFPAT-test1234'
22
+ ENV['CONTENTFUL_PREVIEW_TOKEN'] = 'test123456'
23
+
24
+ require 'wcc/contentful'
25
+ require 'wcc/contentful/middleman'
26
+
27
+ Dir['./spec/support/**/*.rb'].sort.each { |f| require f }
28
+
29
+ RSpec.shared_context 'Contentful config' do
30
+ let(:contentful_access_token) { ENV['CONTENTFUL_ACCESS_TOKEN'] || 'test1234' }
31
+ let(:contentful_management_token) { ENV['CONTENTFUL_MANAGEMENT_TOKEN'] || 'CFPAT-test1234' }
32
+ let(:contentful_preview_token) { ENV['CONTENTFUL_PREVIEW_TOKEN'] || 'test123456' }
33
+ let(:contentful_space_id) { ENV['CONTENTFUL_SPACE_ID'] || 'test1xab' }
34
+
35
+ def contentful_reset!
36
+ WCC::Contentful.instance_variable_set('@initialized', nil)
37
+ WCC::Contentful::Services.instance_variable_set(:@singleton__instance__, nil)
38
+
39
+ # clean out everything in the WCC::Contentful::Model generated namespace
40
+ consts = WCC::Contentful::Model.constants(false).map(&:to_s).uniq
41
+ consts.each do |c|
42
+ begin
43
+ WCC::Contentful::Model.send(:remove_const, c.split(':').last)
44
+ rescue StandardError => e
45
+ warn e
46
+ end
47
+ end
48
+ WCC::Contentful::Model.class_variable_get('@@registry').clear
49
+ Wisper.clear
50
+ end
51
+ end
52
+
53
+ RSpec.configure do |config|
54
+ # Enable flags like --only-failures and --next-failure
55
+ config.example_status_persistence_file_path = '.rspec_status'
56
+
57
+ # Disable RSpec exposing methods globally on `Module` and `main`
58
+ config.disable_monkey_patching!
59
+
60
+ config.expect_with :rspec do |c|
61
+ c.syntax = :expect
62
+ end
63
+
64
+ # Time.zone ||= 'Central Time (US & Canada)'
65
+
66
+ config.include FixturesHelper
67
+ config.include_context 'Contentful config'
68
+
69
+ config.before(:each) do
70
+ WCC::Contentful.instance_variable_set('@configuration', nil)
71
+ WCC::Contentful.instance_variable_set('@initialized', nil)
72
+ WCC::Contentful::Services.instance_variable_set(:@singleton__instance__, nil)
73
+
74
+ # clean out everything in the WCC::Contentful::Model generated namespace
75
+ consts = WCC::Contentful::Model.constants(false).map(&:to_s).uniq
76
+ consts.each do |c|
77
+ begin
78
+ WCC::Contentful::Model.send(:remove_const, c.split(':').last)
79
+ rescue StandardError => e
80
+ warn e
81
+ end
82
+ end
83
+ WCC::Contentful::Model.class_variable_get('@@registry').clear
84
+
85
+ # set up initialization mocks
86
+ stub_request(:get, /https:\/\/cdn.contentful.com\/spaces\/.+\/sync/)
87
+ .to_return(body: load_fixture('contentful/sync_empty.json'))
88
+
89
+ WCC::Contentful.configure do |c|
90
+ c.schema_file = File.join(fixture_root, 'contentful/contentful-schema.json')
91
+ c.update_schema_file = :never
92
+ end
93
+ end
94
+ end
95
+
96
+ HttpLog.configure do |config|
97
+ config.compact_log = true
98
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FixturesHelper
4
+ def load_fixture(file_name)
5
+ file = File.join(fixture_root, file_name)
6
+ return unless File.exist?(file)
7
+
8
+ File.read(file)
9
+ .gsub(/343qxys30lid/i, contentful_space_id)
10
+ .gsub('<CONTENTFUL_SPACE_ID>', contentful_space_id)
11
+ end
12
+
13
+ def fixture_root
14
+ "#{File.dirname(__FILE__)}/../fixtures"
15
+ end
16
+
17
+ def load_indexed_types(file_name = 'contentful/indexed_types_from_content_type_indexer.json')
18
+ serialized = JSON.parse(load_fixture(file_name))
19
+ WCC::Contentful::IndexedRepresentation.from_json(serialized)
20
+ end
21
+
22
+ def load_store_from_sync(file_name: 'contentful/sync_initial.json', store: nil)
23
+ sync_initial = JSON.parse(load_fixture(file_name).gsub(/343qxys30lid/, contentful_space_id))
24
+
25
+ store ||= WCC::Contentful::Store::MemoryStore.new
26
+ sync_initial.each do |_k, v|
27
+ store.index(v)
28
+ end
29
+ store
30
+ end
31
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'wcc/contentful/middleman/extension'
5
+
6
+ RSpec.describe WCC::Contentful::Middleman::Extension do
7
+ let(:app) {
8
+ double('app', after_configuration: nil)
9
+ }
10
+
11
+ describe '#initialize' do
12
+ it 'sets contentful config variables' do
13
+ described_class.new(app,
14
+ space: 'testspace',
15
+ access_token: 'testtoken1',
16
+ preview_token: 'testpreview1',
17
+ management_token: 'testmgmt1')
18
+
19
+ expect(WCC::Contentful.configuration.space).to eq('testspace')
20
+ expect(WCC::Contentful.configuration.access_token).to eq('testtoken1')
21
+ expect(WCC::Contentful.configuration.preview_token).to eq('testpreview1')
22
+ expect(WCC::Contentful.configuration.management_token).to eq('testmgmt1')
23
+ end
24
+
25
+ it 'infers from environment variables' do
26
+ described_class.new(app)
27
+
28
+ expect(WCC::Contentful.configuration.space).to eq('test1xab')
29
+ expect(WCC::Contentful.configuration.access_token).to eq('test1234')
30
+ expect(WCC::Contentful.configuration.preview_token).to eq('test123456')
31
+ expect(WCC::Contentful.configuration.management_token).to eq('CFPAT-test1234')
32
+ end
33
+
34
+ it 'sets configuration defaults' do
35
+ described_class.new(app)
36
+
37
+ # middleman uses memory store by default to sync all content over
38
+ expect(WCC::Contentful.configuration.store.cdn_method).to eq(:eager_sync)
39
+ expect(WCC::Contentful.configuration.store.content_delivery_params[0]).to eq(:memory)
40
+ end
41
+
42
+ it 'passes block' do
43
+ described_class.new(app) do |config|
44
+ config.environment = 'test123'
45
+ end
46
+
47
+ expect(WCC::Contentful.configuration.environment).to eq('test123')
48
+ end
49
+
50
+ it 'initializes WCC::Contentful' do
51
+ expect(WCC::Contentful).to receive(:init!)
52
+
53
+ described_class.new(app)
54
+ end
55
+
56
+ it 'syncs over new content' do
57
+ stub_request(:get, /https:\/\/cdn.contentful.com\/spaces\/.+\/sync/)
58
+ .to_return(body: load_fixture('contentful/sync.json'))
59
+
60
+ described_class.new(app)
61
+
62
+ store = WCC::Contentful::Services.instance.store
63
+ homepage = store.find('4ssPJYNGPYQMMwo2gKmISo')
64
+ expect(homepage).to be_present
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'wcc/contentful/middleman/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'wcc-contentful-middleman'
9
+ spec.version = WCC::Contentful::Middleman::VERSION
10
+ spec.platform = Gem::Platform::RUBY
11
+ spec.authors = ['Watermark Dev']
12
+ spec.email = ['dev@watermark.org']
13
+ spec.summary = File.readlines(File.expand_path('README.md', __dir__)).join
14
+ spec.description = 'Middleman plugin for creating pages from Contentful'
15
+ spec.homepage = 'https://github.com/watermarkchurch/wcc-contentful'
16
+ spec.license = 'MIT'
17
+
18
+ spec.required_ruby_version = '>= 2.3'
19
+
20
+ spec.files =
21
+ `git ls-files -z`.split("\x0").reject do |f|
22
+ f.match(%r{^(test|spec|features)/})
23
+ end
24
+
25
+ spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
26
+ spec.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
27
+ spec.require_paths = ['lib']
28
+
29
+ # The version of middleman-core your extension depends on
30
+ spec.add_dependency 'middleman-core', '>= 4.3.6'
31
+ spec.add_dependency 'wcc-contentful', ">= #{WCC::Contentful::Middleman::VERSION}"
32
+
33
+ # Additional dependencies
34
+ spec.add_development_dependency 'dotenv', '~> 2.2'
35
+ spec.add_development_dependency 'erb_lint', '~> 0.0.26'
36
+ spec.add_development_dependency 'httplog', '~> 1.0'
37
+ spec.add_development_dependency 'rake', '~> 13.0'
38
+ spec.add_development_dependency 'rspec', '~> 3.0'
39
+ spec.add_development_dependency 'rspec_junit_formatter', '~> 0.4.1'
40
+ spec.add_development_dependency 'simplecov', '~> 0.16.1'
41
+ spec.add_development_dependency 'webmock', '~> 3.0'
42
+
43
+ # Makes testing easy via `bundle exec guard`
44
+ spec.add_development_dependency 'guard', '~> 2.14'
45
+ spec.add_development_dependency 'guard-rspec', '~> 4.7'
46
+ spec.add_development_dependency 'guard-rubocop', '~> 1.3.0'
47
+ spec.add_development_dependency 'guard-shell', '~> 0.7.1'
48
+ end
metadata ADDED
@@ -0,0 +1,266 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wcc-contentful-middleman
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.pre.rc1
5
+ platform: ruby
6
+ authors:
7
+ - Watermark Dev
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-01-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: middleman-core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 4.3.6
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 4.3.6
27
+ - !ruby/object:Gem::Dependency
28
+ name: wcc-contentful
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.0.0.pre.rc1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 1.0.0.pre.rc1
41
+ - !ruby/object:Gem::Dependency
42
+ name: dotenv
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.2'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: erb_lint
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.0.26
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.0.26
69
+ - !ruby/object:Gem::Dependency
70
+ name: httplog
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '13.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '13.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec_junit_formatter
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 0.4.1
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 0.4.1
125
+ - !ruby/object:Gem::Dependency
126
+ name: simplecov
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 0.16.1
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 0.16.1
139
+ - !ruby/object:Gem::Dependency
140
+ name: webmock
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '3.0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '3.0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: guard
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '2.14'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '2.14'
167
+ - !ruby/object:Gem::Dependency
168
+ name: guard-rspec
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '4.7'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '4.7'
181
+ - !ruby/object:Gem::Dependency
182
+ name: guard-rubocop
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: 1.3.0
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: 1.3.0
195
+ - !ruby/object:Gem::Dependency
196
+ name: guard-shell
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: 0.7.1
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: 0.7.1
209
+ description: Middleman plugin for creating pages from Contentful
210
+ email:
211
+ - dev@watermark.org
212
+ executables: []
213
+ extensions: []
214
+ extra_rdoc_files: []
215
+ files:
216
+ - ".gitignore"
217
+ - Guardfile
218
+ - README.md
219
+ - Rakefile
220
+ - lib/wcc/contentful/middleman.rb
221
+ - lib/wcc/contentful/middleman/extension.rb
222
+ - lib/wcc/contentful/middleman/version.rb
223
+ - spec/fixtures/contentful/content_types_mgmt_api.json
224
+ - spec/fixtures/contentful/contentful-schema.json
225
+ - spec/fixtures/contentful/sync.json
226
+ - spec/fixtures/contentful/sync_empty.json
227
+ - spec/spec_helper.rb
228
+ - spec/support/fixtures_helper.rb
229
+ - spec/wcc/contentful/middleman/extension_spec.rb
230
+ - wcc-contentful-middleman.gemspec
231
+ homepage: https://github.com/watermarkchurch/wcc-contentful
232
+ licenses:
233
+ - MIT
234
+ metadata: {}
235
+ post_install_message:
236
+ rdoc_options: []
237
+ require_paths:
238
+ - lib
239
+ required_ruby_version: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '2.3'
244
+ required_rubygems_version: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - ">"
247
+ - !ruby/object:Gem::Version
248
+ version: 1.3.1
249
+ requirements: []
250
+ rubyforge_project:
251
+ rubygems_version: 2.7.6.2
252
+ signing_key:
253
+ specification_version: 4
254
+ summary: "[![Gem Version](https://badge.fury.io/rb/wcc-contentful-middleman.svg)](https://rubygems.org/gems/wcc-contentful-middleman)
255
+ [![Build Status](https://travis-ci.org/watermarkchurch/wcc-contentful.svg?branch=master)](https://travis-ci.org/watermarkchurch/wcc-contentful)
256
+ [![Coverage Status](https://coveralls.io/repos/github/watermarkchurch/wcc-contentful/badge.svg?branch=master)](https://coveralls.io/github/watermarkchurch/wcc-contentful?branch=master)
257
+ \ # WCC::Contentful::Middleman A plugin for middleman static sites to use the [wcc-contentful](https://rubygems.org/gems/wcc-contentful)
258
+ gem for connecting to Contentful."
259
+ test_files:
260
+ - spec/fixtures/contentful/content_types_mgmt_api.json
261
+ - spec/fixtures/contentful/contentful-schema.json
262
+ - spec/fixtures/contentful/sync.json
263
+ - spec/fixtures/contentful/sync_empty.json
264
+ - spec/spec_helper.rb
265
+ - spec/support/fixtures_helper.rb
266
+ - spec/wcc/contentful/middleman/extension_spec.rb