alephant-preview 0.3.9 → 0.4.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/Gemfile +1 -1
- data/Guardfile +4 -4
- data/Rakefile +4 -4
- data/alephant-preview.gemspec +1 -1
- data/bin/alephant-preview +10 -11
- data/lib/alephant/preview/fixture_loader.rb +1 -2
- data/lib/alephant/preview/server.rb +62 -41
- data/lib/alephant/preview/tasks/preview.rake +2 -3
- data/lib/alephant/preview/tasks.rb +3 -4
- data/lib/alephant/preview/template/base.rb +7 -9
- data/lib/alephant/preview/template/updater.rb +9 -9
- data/lib/alephant/preview/template.rb +3 -3
- data/lib/alephant/preview/version.rb +1 -1
- data/lib/alephant/preview.rb +1 -2
- data/spec/fixture_loader_spec.rb +13 -15
- data/spec/fixtures/components/bar/mapper.rb +1 -1
- data/spec/fixtures/components/bar/models/bar.rb +1 -1
- data/spec/fixtures/components/baz/mapper.rb +1 -1
- data/spec/fixtures/components/baz/models/baz.rb +1 -1
- data/spec/fixtures/components/foo/models/foo.rb +1 -1
- data/spec/integration/preview_spec.rb +84 -21
- data/spec/spec_helper.rb +8 -8
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb29527d9bf9c048e248aa1aacb116c25db7f0ea
|
4
|
+
data.tar.gz: 2fd1eea531051f54534cb1074c338e3854c368c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 41fceee23cfb06b4a574c71cb7576549cbb9dbcf6c73a293c3855bd5589c9890773702303396f6c55cc5a5fdd8cdd14e6341893465493373b60f2b26ba0cf91d
|
7
|
+
data.tar.gz: 8976cf2f8131f63a057bf99c3d9d82c1da9644c32861b296752aec66f0d9ece770619bbb611a6eb39ec3d0547cafe07cfcffc7bad2b2fa26e228068ea5a87233
|
data/Gemfile
CHANGED
data/Guardfile
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
guard
|
1
|
+
guard "rake", :task => "spec" do
|
2
2
|
watch(%r{^spec/.+_spec\.rb$})
|
3
3
|
watch(%r{^lib/.+\.rb$})
|
4
|
-
watch(
|
5
|
-
watch(
|
4
|
+
watch("spec/spec_helper.rb")
|
5
|
+
watch("spec/fixtures/.+$")
|
6
6
|
end
|
7
7
|
|
8
|
-
guard
|
8
|
+
guard "rake", :task => "integration" do
|
9
9
|
watch(%r{^spec/integration/.+_spec\.rb$})
|
10
10
|
end
|
data/Rakefile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
|
1
|
+
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), "lib")
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "rspec/core/rake_task"
|
4
|
+
require "rake/rspec"
|
5
|
+
require "bundler/gem_tasks"
|
6
6
|
|
7
7
|
task :default => :all
|
data/alephant-preview.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.add_development_dependency "rspec"
|
21
21
|
spec.add_development_dependency "rspec-nc"
|
22
22
|
spec.add_development_dependency "rack-test"
|
23
|
-
spec.add_development_dependency "guard"
|
23
|
+
spec.add_development_dependency "guard", "<= 1.0.3"
|
24
24
|
spec.add_development_dependency "guard-rake"
|
25
25
|
spec.add_development_dependency "pry"
|
26
26
|
spec.add_development_dependency "bundler"
|
data/bin/alephant-preview
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
#!/usr/bin/env RUBYOPT=-Ku ruby
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "pathname"
|
4
|
+
require "trollop"
|
5
5
|
|
6
6
|
root = Pathname.new(__FILE__).dirname.parent
|
7
|
-
lib_path = (root +
|
7
|
+
lib_path = (root + "lib").realdirpath
|
8
8
|
current_dir = File.join(Dir.pwd, "lib")
|
9
9
|
|
10
10
|
$LOAD_PATH.unshift(lib_path)
|
11
11
|
$LOAD_PATH.unshift(current_dir)
|
12
12
|
|
13
|
-
require
|
14
|
-
require
|
13
|
+
require "alephant/preview"
|
14
|
+
require "alephant/preview/tasks"
|
15
15
|
|
16
|
-
SUB_COMMANDS = %w(preview)
|
17
|
-
global_opts = Trollop
|
16
|
+
SUB_COMMANDS = %w(preview).freeze
|
17
|
+
global_opts = Trollop.options do
|
18
18
|
banner <<-EOS
|
19
19
|
Static publishing to S3 based on SQS messages
|
20
20
|
Usage:
|
@@ -30,10 +30,9 @@ end
|
|
30
30
|
cmd = ARGV.shift # get the subcommand
|
31
31
|
case cmd
|
32
32
|
when nil
|
33
|
-
Rake::Task[
|
33
|
+
Rake::Task["alephant:preview:go"].invoke
|
34
34
|
when "update"
|
35
|
-
Rake::Task[
|
35
|
+
Rake::Task["alephant:preview:update"].invoke
|
36
36
|
else
|
37
|
-
Trollop
|
37
|
+
Trollop.die "unknown subcommand #{cmd.inspect}"
|
38
38
|
end
|
39
|
-
|
@@ -8,7 +8,7 @@ module Alephant
|
|
8
8
|
@fixtures = Dir.glob("#{base_path}/fixtures/*")
|
9
9
|
end
|
10
10
|
|
11
|
-
def get(
|
11
|
+
def get(_uri)
|
12
12
|
OpenStruct.new(
|
13
13
|
:status => 200,
|
14
14
|
:body => fixture
|
@@ -22,7 +22,6 @@ module Alephant
|
|
22
22
|
raise "There isn't a fixture matching the request call, please add one" if path.nil?
|
23
23
|
File.open(path).read
|
24
24
|
end
|
25
|
-
|
26
25
|
end
|
27
26
|
end
|
28
27
|
end
|
@@ -1,54 +1,69 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
11
|
-
|
12
|
-
require
|
1
|
+
require "alephant/renderer/views/html"
|
2
|
+
require "alephant/renderer/views/json"
|
3
|
+
require "alephant/renderer/view_mapper"
|
4
|
+
require "alephant/publisher/request/data_mapper_factory"
|
5
|
+
require "alephant/publisher/request/data_mapper"
|
6
|
+
require "alephant/publisher/request/error"
|
7
|
+
|
8
|
+
require "alephant/support/parser"
|
9
|
+
require "alephant/preview/fixture_loader"
|
10
|
+
require "alephant/preview/template/base"
|
11
|
+
|
12
|
+
require "sinatra/base"
|
13
13
|
require "sinatra/reloader"
|
14
|
-
require
|
15
|
-
require
|
16
|
-
require
|
14
|
+
require "faraday"
|
15
|
+
require "json"
|
16
|
+
require "uri"
|
17
17
|
|
18
18
|
module Alephant
|
19
19
|
module Preview
|
20
20
|
class Server < Sinatra::Base
|
21
|
-
set :bind,
|
21
|
+
set :bind, "0.0.0.0"
|
22
22
|
|
23
23
|
register Sinatra::Reloader
|
24
|
-
also_reload
|
25
|
-
also_reload
|
26
|
-
also_reload
|
24
|
+
also_reload "components/*/models/*.rb"
|
25
|
+
also_reload "components/*/mapper.rb"
|
26
|
+
also_reload "components/shared/mappers/*.rb"
|
27
27
|
|
28
|
-
BASE_LOCATION = "#{(ENV['BASE_LOCATION'] || Dir.pwd)}/components"
|
28
|
+
BASE_LOCATION = "#{(ENV['BASE_LOCATION'] || Dir.pwd)}/components".freeze
|
29
29
|
|
30
30
|
before do
|
31
31
|
response["Access-Control-Allow-Origin"] = "*"
|
32
32
|
end
|
33
33
|
|
34
|
-
get
|
34
|
+
get "/preview/:id/:template/:region/?:fixture?" do
|
35
35
|
render_preview
|
36
36
|
end
|
37
37
|
|
38
|
-
get
|
39
|
-
params[
|
40
|
-
params[
|
38
|
+
get "/component/:template/?:fixture?" do
|
39
|
+
params["id"] = find_id_from_template params["template"]
|
40
|
+
params["fixture"] = "responsive" unless params["fixture"]
|
41
41
|
render_component
|
42
42
|
end
|
43
43
|
|
44
|
-
get
|
44
|
+
get "/component/:id/:template/?:fixture?" do
|
45
45
|
render_component
|
46
46
|
end
|
47
47
|
|
48
|
+
get "/components/batch" do
|
49
|
+
batch_components = []
|
50
|
+
|
51
|
+
get_batched_components.each do |component|
|
52
|
+
component = component[1]
|
53
|
+
options = component.fetch("options", {})
|
54
|
+
params["template"] = component.fetch("component")
|
55
|
+
params["id"] = find_id_from_template params["template"]
|
56
|
+
params["fixture"] = options.fetch("fixture", "responsive") || "responsive"
|
57
|
+
batch_components << render_batch_component
|
58
|
+
end
|
59
|
+
|
60
|
+
{ :components => batch_components }.to_json
|
61
|
+
end
|
62
|
+
|
48
63
|
post "/components/batch" do
|
49
64
|
batch_components = []
|
50
65
|
|
51
|
-
|
66
|
+
post_batched_components.each do |component|
|
52
67
|
options = symbolize component.fetch(:options, {})
|
53
68
|
params["template"] = component.fetch(:component)
|
54
69
|
params["id"] = find_id_from_template params["template"]
|
@@ -59,21 +74,19 @@ module Alephant
|
|
59
74
|
{ :components => batch_components }.to_json
|
60
75
|
end
|
61
76
|
|
62
|
-
get
|
63
|
-
|
77
|
+
get "/status" do
|
78
|
+
"ok"
|
64
79
|
end
|
65
80
|
|
66
81
|
not_found do
|
67
|
-
|
82
|
+
"Not found"
|
68
83
|
end
|
69
84
|
|
70
85
|
def find_id_from_template(template)
|
71
|
-
files = Dir.glob(BASE_LOCATION +
|
86
|
+
files = Dir.glob(BASE_LOCATION + "/**/models/*")
|
72
87
|
file = files.select! { |file| file.include? "/#{template}.rb" }.pop
|
73
88
|
|
74
|
-
if file.nil?
|
75
|
-
halt(404)
|
76
|
-
end
|
89
|
+
halt(404) if file.nil?
|
77
90
|
|
78
91
|
result = /#{BASE_LOCATION}\/(\w+)/.match(file)
|
79
92
|
result[1]
|
@@ -105,10 +118,18 @@ module Alephant
|
|
105
118
|
JSON.parse(request.body.read, :symbolize_names => true) || {}
|
106
119
|
end
|
107
120
|
|
108
|
-
def
|
121
|
+
def query_string
|
122
|
+
Rack::Utils.parse_nested_query(request.query_string)
|
123
|
+
end
|
124
|
+
|
125
|
+
def post_batched_components
|
109
126
|
request_body.fetch(:components, [])
|
110
127
|
end
|
111
128
|
|
129
|
+
def get_batched_components
|
130
|
+
query_string.fetch("components", [])
|
131
|
+
end
|
132
|
+
|
112
133
|
def model
|
113
134
|
require model_location
|
114
135
|
Alephant::Renderer::Views.get_registered_class(template).new(fixture_data)
|
@@ -119,27 +140,27 @@ module Alephant
|
|
119
140
|
end
|
120
141
|
|
121
142
|
def model_location
|
122
|
-
File.join(base_path,
|
143
|
+
File.join(base_path, "models", "#{template}.rb")
|
123
144
|
end
|
124
145
|
|
125
146
|
def template
|
126
|
-
params[
|
147
|
+
params["template"]
|
127
148
|
end
|
128
149
|
|
129
150
|
def region
|
130
|
-
params[
|
151
|
+
params["region"]
|
131
152
|
end
|
132
153
|
|
133
154
|
def id
|
134
|
-
params[
|
155
|
+
params["id"]
|
135
156
|
end
|
136
157
|
|
137
158
|
def fixture
|
138
|
-
params[
|
159
|
+
params["fixture"] || id
|
139
160
|
end
|
140
161
|
|
141
162
|
def fixture_data
|
142
|
-
if File.
|
163
|
+
if File.exist? "#{base_path}/mapper.rb"
|
143
164
|
loader = Alephant::Preview::FixtureLoader.new(base_path)
|
144
165
|
data_mapper_factory = Alephant::Publisher::Request::DataMapperFactory.new(loader, BASE_LOCATION)
|
145
166
|
begin
|
@@ -152,7 +173,7 @@ module Alephant
|
|
152
173
|
end
|
153
174
|
else
|
154
175
|
msg = Struct.new(:body)
|
155
|
-
|
176
|
+
.new(raw_fixture_data)
|
156
177
|
parser.parse msg
|
157
178
|
end
|
158
179
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "alephant/preview/server"
|
2
|
+
require "alephant/preview/template"
|
3
3
|
|
4
4
|
namespace :alephant do
|
5
5
|
namespace :preview do
|
@@ -13,4 +13,3 @@ namespace :alephant do
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
16
|
-
|
@@ -1,8 +1,7 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "rake"
|
2
|
+
require "pathname"
|
3
3
|
|
4
4
|
root = Pathname.new(__FILE__).dirname
|
5
|
-
task_path = (root +
|
5
|
+
task_path = (root + "tasks").realdirpath
|
6
6
|
|
7
7
|
Dir["#{task_path}/**/*.rake"].each { |ext| load ext } if defined?(Rake)
|
8
|
-
|
@@ -1,19 +1,18 @@
|
|
1
|
-
require
|
1
|
+
require "mustache"
|
2
2
|
|
3
3
|
module Alephant
|
4
4
|
module Preview
|
5
5
|
module Template
|
6
|
-
|
7
6
|
class Base < Mustache
|
8
7
|
attr_accessor :regions
|
9
8
|
|
10
9
|
def initialize(regions, template_location)
|
11
|
-
@regions=regions
|
10
|
+
@regions = regions
|
12
11
|
self.template_file = template_location
|
13
12
|
end
|
14
13
|
|
15
14
|
def static_host
|
16
|
-
ENV[
|
15
|
+
ENV["STATIC_HOST"] || "localhost:8000"
|
17
16
|
end
|
18
17
|
|
19
18
|
def method_missing(name, *args, &block)
|
@@ -26,7 +25,7 @@ module Alephant
|
|
26
25
|
end
|
27
26
|
|
28
27
|
def region(components)
|
29
|
-
if components.
|
28
|
+
if components.is_a?(Array)
|
30
29
|
components.join
|
31
30
|
else
|
32
31
|
components
|
@@ -34,13 +33,12 @@ module Alephant
|
|
34
33
|
end
|
35
34
|
|
36
35
|
def valid_regions
|
37
|
-
|
36
|
+
template.tokens.find_all do |token|
|
38
37
|
token.is_a?(Array) && token[0] == :mustache
|
39
|
-
|
38
|
+
end.map do |token|
|
40
39
|
token[2][2][0].to_s
|
41
|
-
|
40
|
+
end
|
42
41
|
end
|
43
|
-
|
44
42
|
end
|
45
43
|
end
|
46
44
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "faraday"
|
2
|
+
require "uri"
|
3
3
|
|
4
4
|
module Alephant
|
5
5
|
module Preview
|
@@ -13,9 +13,9 @@ module Alephant
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def update(template_location)
|
16
|
-
File.open(template_location,
|
16
|
+
File.open(template_location, "w") do |file|
|
17
17
|
file.write(template)
|
18
|
-
|
18
|
+
end
|
19
19
|
end
|
20
20
|
|
21
21
|
def host
|
@@ -27,22 +27,22 @@ module Alephant
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def uri
|
30
|
-
return @uri
|
30
|
+
return @uri unless @uri.nil?
|
31
31
|
|
32
|
-
uri_from_env = ENV[
|
32
|
+
uri_from_env = ENV["PREVIEW_TEMPLATE_URL"]
|
33
33
|
raise Exception.new("PREVIEW_TEMPLATE_URL is unset!") if uri_from_env.nil?
|
34
34
|
|
35
35
|
@uri = URI(uri_from_env)
|
36
36
|
end
|
37
37
|
|
38
38
|
def apply_static_host_regex_to(string)
|
39
|
-
string.gsub(static_host_regex,
|
39
|
+
string.gsub(static_host_regex, "{{{static_host}}}")
|
40
40
|
end
|
41
41
|
|
42
42
|
def static_host_regex
|
43
|
-
return @static_host_regex
|
43
|
+
return @static_host_regex unless @static_host_regex.nil?
|
44
44
|
|
45
|
-
static_host_regex_from_env = ENV[
|
45
|
+
static_host_regex_from_env = ENV["STATIC_HOST_REGEX"]
|
46
46
|
raise Exception.new("STATIC_HOST_REGEX is unset!") if static_host_regex_from_env.nil?
|
47
47
|
|
48
48
|
@static_host_regex = Regexp.new(static_host_regex_from_env)
|
@@ -1,11 +1,11 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "alephant/preview/template/base"
|
2
|
+
require "alephant/preview/template/updater"
|
3
3
|
|
4
4
|
module Alephant
|
5
5
|
module Preview
|
6
6
|
module Template
|
7
7
|
def self.path
|
8
|
-
ENV[
|
8
|
+
ENV["PREVIEW_TEMPLATE_PATH"] || "#{Dir.pwd}/components/lib"
|
9
9
|
end
|
10
10
|
|
11
11
|
def self.update(template_location)
|
data/lib/alephant/preview.rb
CHANGED
data/spec/fixture_loader_spec.rb
CHANGED
@@ -1,13 +1,12 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe Alephant::Preview::FixtureLoader do
|
4
|
-
let (:fixtures_base) { File.join(File.dirname(__FILE__),
|
5
|
-
let (:base_path) { File.join(fixtures_base,
|
4
|
+
let (:fixtures_base) { File.join(File.dirname(__FILE__), "fixtures") }
|
5
|
+
let (:base_path) { File.join(fixtures_base, "components", "bar") }
|
6
6
|
subject { described_class.new(base_path) }
|
7
7
|
|
8
8
|
describe ".new" do
|
9
|
-
|
10
|
-
context 'using valid parameters' do
|
9
|
+
context "using valid parameters" do
|
11
10
|
let (:expected) { described_class }
|
12
11
|
|
13
12
|
specify { expect(subject).to be_a expected }
|
@@ -15,22 +14,21 @@ describe Alephant::Preview::FixtureLoader do
|
|
15
14
|
end
|
16
15
|
|
17
16
|
describe "#get" do
|
18
|
-
let (:uri) {
|
17
|
+
let (:uri) { "/test/uri" }
|
19
18
|
|
20
|
-
context
|
21
|
-
let (:fixture_data) { File.open(File.join(fixtures_base,
|
22
|
-
specify { expect(subject.get(uri).body).to eq fixture_data}
|
19
|
+
context "with a single fixture" do
|
20
|
+
let (:fixture_data) { File.open(File.join(fixtures_base, "components", "bar", "fixtures", "bar.json")).read }
|
21
|
+
specify { expect(subject.get(uri).body).to eq fixture_data }
|
23
22
|
end
|
24
23
|
|
25
|
-
context
|
26
|
-
let (:base_path) { File.join(fixtures_base,
|
24
|
+
context "with multiple fixtures" do
|
25
|
+
let (:base_path) { File.join(fixtures_base, "components", "baz") }
|
27
26
|
let (:fixture_data) do
|
28
|
-
fixtures = Dir.glob(File.join(fixtures_base,
|
27
|
+
fixtures = Dir.glob(File.join(fixtures_base, "components", "baz", "fixtures", "*"))
|
29
28
|
fixtures.map { |fixture| File.open(fixture).read }
|
30
29
|
end
|
31
30
|
|
32
|
-
context
|
33
|
-
|
31
|
+
context "using a valid amount of fixtures" do
|
34
32
|
it "should return each fixture on subsequent calls" do
|
35
33
|
(0..2).each do |index|
|
36
34
|
expect(subject.get(uri).body).to eq fixture_data[index]
|
@@ -40,7 +38,7 @@ describe Alephant::Preview::FixtureLoader do
|
|
40
38
|
|
41
39
|
context "using incorrect amount of fixtures" do
|
42
40
|
it "should raise an exception" do
|
43
|
-
(0..2).each { |
|
41
|
+
(0..2).each { |_index| subject.get(uri).body }
|
44
42
|
expect do
|
45
43
|
subject.get(uri).body
|
46
44
|
end.to raise_error(
|
@@ -1,55 +1,51 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe Alephant::Preview::Server do
|
4
4
|
include Rack::Test::Methods
|
5
5
|
let (:app) { subject }
|
6
6
|
|
7
|
-
describe
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
context 'with valid data' do
|
7
|
+
describe "preview endpoint (GET /preview/{id}/{template}/{region}/{fixture})" do
|
8
|
+
describe "content" do
|
9
|
+
context "with valid data" do
|
12
10
|
before(:each) do
|
13
11
|
get "/preview/#{id}/#{template}/#{region}/#{fixture}"
|
14
12
|
end
|
15
|
-
let (:id) {
|
13
|
+
let (:id) { "foo" }
|
16
14
|
let (:template) { id }
|
17
15
|
let (:fixture) { id }
|
18
|
-
let (:region) {
|
16
|
+
let (:region) { "page_region" }
|
19
17
|
|
20
18
|
specify { expect(last_response.body).to eq("topcontent\nbottom\n") }
|
21
19
|
end
|
22
20
|
end
|
23
21
|
end
|
24
22
|
|
25
|
-
describe
|
26
|
-
|
27
|
-
describe 'content' do
|
23
|
+
describe "component endpoint (GET /component/{id}/{template}/{fixture})" do
|
24
|
+
describe "content" do
|
28
25
|
before(:each) do
|
29
26
|
get "/component/#{id}/#{template}/#{fixture}"
|
30
27
|
end
|
31
28
|
let (:response) { last_response.body.chomp }
|
32
29
|
|
33
|
-
context
|
34
|
-
let (:id) {
|
30
|
+
context "without a data mapper" do
|
31
|
+
let (:id) { "foo" }
|
35
32
|
let (:template) { id }
|
36
33
|
let (:fixture) { id }
|
37
34
|
|
38
35
|
specify { expect(response).to eq("content") }
|
39
36
|
end
|
40
37
|
|
41
|
-
context
|
42
|
-
|
43
|
-
|
44
|
-
let (:id) { 'bar' }
|
38
|
+
context "with a data mapper" do
|
39
|
+
context "using a single fixture" do
|
40
|
+
let (:id) { "bar" }
|
45
41
|
let (:template) { id }
|
46
42
|
let (:fixture) { id }
|
47
43
|
|
48
44
|
specify { expect(response).to eq("data mapped content") }
|
49
45
|
end
|
50
46
|
|
51
|
-
context
|
52
|
-
let (:id) {
|
47
|
+
context "using multiple fixtures" do
|
48
|
+
let (:id) { "baz" }
|
53
49
|
let (:template) { id }
|
54
50
|
let (:fixture) { id }
|
55
51
|
|
@@ -59,8 +55,76 @@ describe Alephant::Preview::Server do
|
|
59
55
|
end
|
60
56
|
end
|
61
57
|
|
62
|
-
describe
|
58
|
+
describe 'component batch endpoint (GET /components/batch?components[#{id}]=#{id})' do
|
59
|
+
describe "content" do
|
60
|
+
before(:each) do
|
61
|
+
get "/components/batch?components[#{id}][component]=#{id}&components[#{id}][options][fixture]=#{id}"
|
62
|
+
end
|
63
|
+
|
64
|
+
let (:response) { JSON.parse(last_response.body.chomp, :symbolize_names => true) }
|
65
|
+
|
66
|
+
context "without a data mapper" do
|
67
|
+
let (:id) { "foo" }
|
68
|
+
let (:template) { id }
|
69
|
+
let (:fixture) { id }
|
70
|
+
|
71
|
+
expected = {
|
72
|
+
:components => [
|
73
|
+
{
|
74
|
+
:component => "foo",
|
75
|
+
:options => {},
|
76
|
+
:status => 200,
|
77
|
+
:body => "content\n"
|
78
|
+
}
|
79
|
+
]
|
80
|
+
}
|
81
|
+
|
82
|
+
specify { expect(response).to eq(expected) }
|
83
|
+
end
|
84
|
+
|
85
|
+
context "with a data mapper" do
|
86
|
+
context "using a single fixture" do
|
87
|
+
let (:id) { "bar" }
|
88
|
+
let (:template) { id }
|
89
|
+
let (:fixture) { id }
|
90
|
+
|
91
|
+
expected = {
|
92
|
+
:components => [
|
93
|
+
{
|
94
|
+
:component => "bar",
|
95
|
+
:options => {},
|
96
|
+
:status => 200,
|
97
|
+
:body => "data mapped content\n"
|
98
|
+
}
|
99
|
+
]
|
100
|
+
}
|
101
|
+
|
102
|
+
specify { expect(response).to eq(expected) }
|
103
|
+
end
|
104
|
+
|
105
|
+
context "using multiple fixtures" do
|
106
|
+
let (:id) { "baz" }
|
107
|
+
let (:template) { id }
|
108
|
+
let (:fixture) { id }
|
109
|
+
|
110
|
+
expected = {
|
111
|
+
:components => [
|
112
|
+
{
|
113
|
+
:component => "baz",
|
114
|
+
:options => {},
|
115
|
+
:status => 200,
|
116
|
+
:body => "multiple endpoint data mapped content\n"
|
117
|
+
}
|
118
|
+
]
|
119
|
+
}
|
120
|
+
|
121
|
+
specify { expect(response).to eq(expected) }
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
63
126
|
|
127
|
+
describe "component batch endpoint (POST /components/batch" do
|
64
128
|
describe "content" do
|
65
129
|
before(:each) do
|
66
130
|
post "/components/batch", {
|
@@ -95,7 +159,6 @@ describe Alephant::Preview::Server do
|
|
95
159
|
end
|
96
160
|
|
97
161
|
context "with a data mapper" do
|
98
|
-
|
99
162
|
context "using a single fixture" do
|
100
163
|
let (:id) { "bar" }
|
101
164
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
|
1
|
+
$LOAD_PATH << File.join(File.dirname(__FILE__), "..", "lib")
|
2
2
|
|
3
|
-
FIXTURE_PATH = File.join(File.dirname(__FILE__),
|
3
|
+
FIXTURE_PATH = File.join(File.dirname(__FILE__), "fixtures")
|
4
4
|
|
5
|
-
ENV[
|
6
|
-
ENV[
|
7
|
-
ENV[
|
5
|
+
ENV["BASE_LOCATION"] = FIXTURE_PATH
|
6
|
+
ENV["PREVIEW_TEMPLATE_PATH"] = File.join(FIXTURE_PATH, "lib")
|
7
|
+
ENV["RACK_ENV"] = "test"
|
8
8
|
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
9
|
+
require "pry"
|
10
|
+
require "rack/test"
|
11
|
+
require "alephant/preview"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alephant-preview
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- BBC News
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -55,17 +55,17 @@ dependencies:
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
|
-
- -
|
58
|
+
- - <=
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version:
|
60
|
+
version: 1.0.3
|
61
61
|
name: guard
|
62
62
|
prerelease: false
|
63
63
|
type: :development
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - <=
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 1.0.3
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
requirement: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|