alephant 0.0.8.2-java → 0.0.9-java

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: 0ba15f2488f4d6fb9e5b4e731e1e73456c12e3e8
4
- data.tar.gz: 62e9795e08fee239b5a11101bb878a07e708bd4b
3
+ metadata.gz: e70ac398cb94b4e56959960048cfae7f5973463c
4
+ data.tar.gz: 9161ab004f0f784442f7aa18d26de4ab6e9082d1
5
5
  SHA512:
6
- metadata.gz: d9e9ba3aefb6dd5bec0c014528a1dcf926b27673d807c2fdf9acaf76911acfeab5da95bf09569465ca073d09f73ffd9078cfd39c90c8879b60e286134f79a55f
7
- data.tar.gz: 52d9907ef2300a75947230e42c47e67c2039665963ed3fe1d41a39b73b2523bf5eca915d21b9b4fe4c984c24c2b45af12bcc1441951fc94d550e447bcc16180f
6
+ metadata.gz: c3b3294a258632a30d5096f65f74127bca9b778ca769e82c04a7841a55e7f5b2214155395d70ff90560e33a9b2d8d3d5f7d92f2cfd7243c15cd23f6336fc8349
7
+ data.tar.gz: 2ed9b6e729d77ece8291d74c1c801c380ccbc731fde600d8b31859feff2bd914df96e92f1a9379d28235ffbd772fc594b1dc72c0ae43748b088cca2667d141fd
data/.gitignore CHANGED
@@ -2,8 +2,9 @@
2
2
  /config/*.yml
3
3
  Gemfile.lock
4
4
  .rspec
5
+ *.gem
5
6
 
6
7
  /pkg
7
8
  /tmp
8
- /views
9
+ /components
9
10
 
data/README.md CHANGED
@@ -44,7 +44,6 @@ opts = {
44
44
  :s3_object_id => 'object_id',
45
45
  :table_name => 'your_dynamo_db_table',
46
46
  :sqs_queue_id => 'https://your_amazon_sqs_queue_url',
47
- :view_id => 'my_view_id',
48
47
  :sequential_proc => Proc.new { |last_seen_id, data|
49
48
  last_seen_id < data["sequence_id"].to_i
50
49
  },
@@ -136,10 +135,18 @@ PREVIEW_TEMPLATE_URL="http://yourapp.com/template"
136
135
 
137
136
  **Example Remote Template**
138
137
 
139
- [http://m.int.bbc.co.uk/news/layout/template](http://m.int.bbc.co.uk/news/layout/template)
138
+ `id` is the component/folder name
139
+
140
+ `template` is the mustache template file name
141
+
142
+ `location_in_page` should be something like (for example) `page_head` (specified within a `preview.mustache` file that the consuming application needs to create).
143
+
144
+ - `http://localhost:4567/component/id/template`
145
+ - `http://localhost:4567/preview/id/template/location_in_page`
140
146
 
141
147
  `alephant update`
142
148
 
143
149
  **In page**
150
+
144
151
  `/preview/:id/:region/?:fixture?`
145
152
 
data/lib/alephant.rb CHANGED
@@ -1,5 +1,3 @@
1
- $: << File.dirname(__FILE__)
2
-
3
1
  require 'aws-sdk'
4
2
 
5
3
  require_relative 'env'
@@ -8,6 +6,7 @@ require 'alephant/models/logger'
8
6
  require 'alephant/models/queue'
9
7
  require 'alephant/models/cache'
10
8
  require 'alephant/models/renderer'
9
+ require 'alephant/models/multi_renderer'
11
10
  require 'alephant/models/sequencer'
12
11
  require 'alephant/models/parser'
13
12
 
@@ -19,15 +18,16 @@ module Alephant
19
18
  attr_reader :sequencer, :queue, :cache, :renderer
20
19
 
21
20
  VALID_OPTS = [
21
+ :model_file,
22
22
  :s3_bucket_id,
23
23
  :s3_object_path,
24
24
  :s3_object_id,
25
25
  :table_name,
26
26
  :sqs_queue_id,
27
- :view_id,
28
27
  :view_path,
29
28
  :sequential_proc,
30
- :set_last_seen_proc
29
+ :set_last_seen_proc,
30
+ :component_id
31
31
  ]
32
32
 
33
33
  def initialize(opts = {}, logger = nil)
@@ -44,7 +44,7 @@ module Alephant
44
44
 
45
45
  @queue = Queue.new(@sqs_queue_id)
46
46
  @cache = Cache.new(@s3_bucket_id, @s3_object_path)
47
- @renderer = Renderer.new(@view_id, @view_path)
47
+ @multi_renderer = MultiRenderer.new(@model_file, "#{@view_path}/#{@component_id}")
48
48
  @parser = Parser.new
49
49
  end
50
50
 
@@ -53,10 +53,9 @@ module Alephant
53
53
  end
54
54
 
55
55
  def write(data)
56
- @cache.put(
57
- @s3_object_id,
58
- @renderer.render(data)
59
- )
56
+ @multi_renderer.render(data).each do |id, item|
57
+ @cache.put(id, item)
58
+ end
60
59
  end
61
60
 
62
61
  def receive(msg)
@@ -0,0 +1,79 @@
1
+ module Alephant
2
+ class MultiRenderer
3
+ DEFAULT_LOCATION = 'components'
4
+
5
+ def initialize(model_file, view_base_path=nil)
6
+ self.base_path = view_base_path unless view_base_path.nil?
7
+ @model_file = model_file
8
+ @logger = ::Alephant.logger
9
+ end
10
+
11
+ def base_path
12
+ @base_path || DEFAULT_LOCATION
13
+ end
14
+
15
+ def base_path=(path)
16
+ @base_path = File.directory?(path) ? path : (raise Errors::InvalidViewPath)
17
+ end
18
+
19
+ def render(data)
20
+ instance = create_instance(data)
21
+
22
+ template_locations.reduce({}) do |obj, file|
23
+ template_id = template_id_for file
24
+ obj.tap do |o|
25
+ o[template_id.to_sym] = render_template(
26
+ template_id,
27
+ data,
28
+ instance
29
+ )
30
+ end
31
+ end
32
+ end
33
+
34
+ def render_template(template_file, data, instance = nil)
35
+ renderer(
36
+ template_file,
37
+ base_path,
38
+ instance.nil? ? create_instance(data) : instance
39
+ ).render.chomp!
40
+ end
41
+
42
+ def create_instance(data)
43
+ begin
44
+ create_model(klass, data)
45
+ rescue Exception => e
46
+ @logger.error("Renderer.model: exeception #{e.message}")
47
+ raise Errors::ViewModelNotFound
48
+ end
49
+ end
50
+
51
+ def renderer(template_file, base_path, model_object)
52
+ Renderer.new(template_file, base_path, model_object)
53
+ end
54
+
55
+ private
56
+ def template_locations
57
+ Dir.glob("#{base_path}/templates/*")
58
+ end
59
+
60
+ def klass
61
+ require model_location
62
+ Views.get_registered_class(@model_file)
63
+ end
64
+
65
+ def create_model(klass, data)
66
+ @logger.info("Renderer.model: creating new klass #{klass}")
67
+ klass.new(data)
68
+ end
69
+
70
+ def template_id_for(template_location)
71
+ template_location.split('/').last.sub(/\.mustache/, '')
72
+ end
73
+
74
+ def model_location
75
+ File.join(base_path, 'models', "#{@model_file}.rb")
76
+ end
77
+
78
+ end
79
+ end
@@ -3,63 +3,30 @@ require 'mustache'
3
3
 
4
4
  module Alephant
5
5
  class Renderer
6
- DEFAULT_LOCATION = 'views'
7
-
8
- attr_reader :id
9
-
10
- def initialize(id, view_base_path=nil)
11
- @logger = ::Alephant.logger
12
-
13
- @id = id
14
- self.base_path = view_base_path unless view_base_path.nil?
15
-
16
- @logger.info("Renderer.initialize: end with self.base_path set to #{self.base_path}")
6
+ attr_reader :template_file
7
+
8
+ def initialize(template_file, base_path, model)
9
+ @logger = ::Alephant.logger
10
+ @template_file = template_file
11
+ @base_path = base_path
12
+ @model = model
13
+ @logger.info("Renderer.initialize: end with @base_path set to #{@base_path}")
17
14
  end
18
15
 
19
- def render(data)
20
- @logger.info("Renderer.render: rendered template with id #{id}")
21
- Mustache.render(
22
- template(@id),
23
- model(@id,data)
24
- )
25
- end
26
-
27
- def base_path
28
- @base_path || DEFAULT_LOCATION
29
- end
16
+ def render
17
+ @logger.info("Renderer.render: rendered template #{template_file}")
30
18
 
31
- def base_path=(path)
32
- if File.directory?(path)
33
- @base_path = path
34
- else
35
- @logger.error("Renderer.base_path=(path): error of invalid view path #{path}")
36
- raise Errors::InvalidViewPath
37
- end
19
+ Mustache.render(template, @model)
38
20
  end
39
21
 
40
- def model(id, data)
41
- model_location = File.join(base_path, 'models', "#{id}.rb")
42
-
43
- begin
44
- require model_location
45
- klass = ::Alephant::Views.get_registered_class(id)
46
- @logger.info("Renderer.model: klass set to #{klass}")
47
- rescue Exception => e
48
- @logger.error("Renderer.model: view model with id #{id} not found")
49
- raise Errors::ViewModelNotFound
50
- end
51
-
52
- @logger.info("Renderer.model: creating new klass with data #{data}")
53
- klass.new(data)
54
- end
22
+ def template
23
+ template_location = File.join(@base_path, 'templates', "#{template_file}.mustache")
55
24
 
56
- def template(id)
57
- template_location = File.join(base_path,'templates',"#{id}.mustache")
58
25
  begin
59
26
  @logger.info("Renderer.template: #{template_location}")
60
27
  File.open(template_location).read
61
28
  rescue Exception => e
62
- @logger.error("Renderer.template: view tempalte with id #{id} not found")
29
+ @logger.error("Renderer.template: view template #{template_file} not found")
63
30
  raise Errors::ViewTemplateNotFound
64
31
  end
65
32
  end
@@ -1,6 +1,6 @@
1
1
  require 'sinatra/base'
2
2
  require 'alephant/models/parser'
3
- require 'alephant/models/renderer'
3
+ require 'alephant/models/multi_renderer'
4
4
  require 'alephant/views/preview'
5
5
  require 'faraday'
6
6
  require 'json'
@@ -10,11 +10,11 @@ module Alephant
10
10
  module Preview
11
11
  class Server < Sinatra::Base
12
12
 
13
- get '/preview/:id/:region/?:fixture?' do
13
+ get '/preview/:id/:template/:region/?:fixture?' do
14
14
  render_preview
15
15
  end
16
16
 
17
- get '/component/:id/?:fixture?' do
17
+ get '/component/:id/:template/?:fixture?' do
18
18
  render_component
19
19
  end
20
20
 
@@ -26,10 +26,15 @@ module Alephant
26
26
  end
27
27
 
28
28
  def render_component
29
- Renderer.new(id, base_path).render(fixture_data)
29
+ MultiRenderer.new(id, base_path).render_template(template, fixture_data)
30
30
  end
31
31
 
32
32
  private
33
+
34
+ def template
35
+ params['template']
36
+ end
37
+
33
38
  def region
34
39
  params['region']
35
40
  end
@@ -55,7 +60,7 @@ module Alephant
55
60
  end
56
61
 
57
62
  def base_path
58
- "#{Dir.pwd}/views"
63
+ "#{Dir.pwd}/components/#{id}"
59
64
  end
60
65
 
61
66
  def fixture_location
@@ -1,3 +1,3 @@
1
1
  module Alephant
2
- VERSION = "0.0.8.2"
2
+ VERSION = "0.0.9"
3
3
  end
@@ -1,54 +1,58 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Alephant::Alephant do
4
+ let(:model_file) { 'foo' }
4
5
  subject { Alephant::Alephant }
5
6
 
6
7
  describe "initialize(opts = {})" do
7
8
  before(:each) do
8
- sequencer = double()
9
- queue = double()
10
- cache = double()
11
- renderer = double()
9
+ sequencer = double()
10
+ queue = double()
11
+ cache = double()
12
+ multi_renderer = double()
12
13
 
13
14
  Alephant::Sequencer.any_instance.stub(:initialize).and_return(sequencer)
14
15
  Alephant::Queue.any_instance.stub(:initialize).and_return(queue)
15
16
  Alephant::Cache.any_instance.stub(:initialize).and_return(cache)
16
- Alephant::Renderer.any_instance.stub(:initialize).and_return(renderer)
17
+ Alephant::MultiRenderer.any_instance.stub(:initialize).and_return(multi_renderer)
17
18
  end
18
19
 
19
20
  it "sets specified options" do
20
21
  instance = subject.new({
22
+ :model_file => :model_file,
21
23
  :s3_bucket_id => :s3_bucket_id,
22
24
  :s3_object_path => :s3_object_path,
23
25
  :s3_object_id => :s3_object_id,
24
26
  :table_name => :table_name,
25
27
  :sqs_queue_id => :sqs_queue_id,
26
- :view_id => :view_id,
27
28
  :sequential_proc => :sequential_proc,
28
- :set_last_seen_proc => :set_last_seen_proc
29
+ :set_last_seen_proc => :set_last_seen_proc,
30
+ :component_id => :component_id
29
31
  })
30
32
 
33
+ expect(instance.model_file).to eq(:model_file);
31
34
  expect(instance.s3_bucket_id).to eq(:s3_bucket_id);
32
35
  expect(instance.s3_object_path).to eq(:s3_object_path);
33
36
  expect(instance.s3_object_id).to eq(:s3_object_id);
34
37
  expect(instance.table_name).to eq(:table_name);
35
38
  expect(instance.sqs_queue_id).to eq(:sqs_queue_id);
36
- expect(instance.view_id).to eq(:view_id);
37
39
  expect(instance.sequential_proc).to eq(:sequential_proc);
38
40
  expect(instance.set_last_seen_proc).to eq(:set_last_seen_proc);
41
+ expect(instance.component_id).to eq(:component_id);
39
42
  end
40
43
 
41
44
  it "sets unspecified options to nil" do
42
45
  instance = subject.new
43
46
 
47
+ expect(instance.model_file).to eq(nil);
44
48
  expect(instance.s3_bucket_id).to eq(nil);
45
49
  expect(instance.s3_object_path).to eq(nil);
46
50
  expect(instance.s3_object_id).to eq(nil);
47
51
  expect(instance.table_name).to eq(nil);
48
52
  expect(instance.sqs_queue_id).to eq(nil);
49
- expect(instance.view_id).to eq(nil);
50
53
  expect(instance.sequential_proc).to eq(nil);
51
54
  expect(instance.set_last_seen_proc).to eq(nil);
55
+ expect(instance.component_id).to eq(nil);
52
56
  end
53
57
 
54
58
  context "initializes @sequencer" do
@@ -84,39 +88,30 @@ describe Alephant::Alephant do
84
88
  end
85
89
  end
86
90
 
87
- context "initializes @renderer" do
88
- it "with Renderer.new(@view_id)" do
89
- Alephant::Renderer.should_receive(:new).with(:view_id, nil)
90
-
91
- instance = subject.new({
92
- :view_id => :view_id,
93
- :view_path => nil
94
- })
95
- end
96
-
97
- it "with Renderer.new(@view_id, @view_path)" do
98
- Alephant::Renderer.should_receive(:new).with(:view_id, :view_path)
91
+ context "initializes @multi_renderer" do
92
+ it "MultiRenderer class to be initialized" do
93
+ Alephant::MultiRenderer.should_receive(:new).with(model_file, 'components/foo')
99
94
 
100
95
  instance = subject.new({
101
- :view_id => :view_id,
102
- :view_path => :view_path
96
+ :model_file => model_file,
97
+ :view_path => 'components',
98
+ :component_id => 'foo'
103
99
  })
104
100
  end
105
-
106
101
  end
107
102
  end
108
103
 
109
104
  describe "run!" do
110
105
  before(:each) do
111
- sequencer = double()
112
- queue = double()
113
- cache = double()
114
- renderer = double()
106
+ sequencer = double()
107
+ queue = double()
108
+ cache = double()
109
+ multi_renderer = double()
115
110
 
116
111
  Alephant::Sequencer.any_instance.stub(:initialize).and_return(sequencer)
117
112
  Alephant::Queue.any_instance.stub(:initialize).and_return(queue)
118
113
  Alephant::Cache.any_instance.stub(:initialize).and_return(cache)
119
- Alephant::Renderer.any_instance.stub(:initialize).and_return(renderer)
114
+ Alephant::MultiRenderer.any_instance.stub(:initialize).and_return(multi_renderer)
120
115
  end
121
116
 
122
117
  it "returns a Thread" do
@@ -143,15 +138,15 @@ describe Alephant::Alephant do
143
138
 
144
139
  describe "receive(msg)" do
145
140
  before(:each) do
146
- sequencer = double()
147
- queue = double()
148
- cache = double()
149
- renderer = double()
141
+ sequencer = double()
142
+ queue = double()
143
+ cache = double()
144
+ multi_renderer = double()
150
145
 
151
146
  Alephant::Sequencer.any_instance.stub(:initialize).and_return(sequencer)
152
147
  Alephant::Queue.any_instance.stub(:initialize).and_return(queue)
153
148
  Alephant::Cache.any_instance.stub(:initialize).and_return(cache)
154
- Alephant::Renderer.any_instance.stub(:initialize).and_return(renderer)
149
+ Alephant::MultiRenderer.any_instance.stub(:initialize).and_return(multi_renderer)
155
150
  end
156
151
 
157
152
  it "takes json as an argument" do
@@ -184,18 +179,31 @@ describe Alephant::Alephant do
184
179
  before(:each) do
185
180
  sequencer = double()
186
181
  queue = double()
187
- cache = double()
188
- renderer = double()
189
182
 
190
183
  Alephant::Sequencer.any_instance.stub(:initialize).and_return(sequencer)
191
184
  Alephant::Queue.any_instance.stub(:initialize).and_return(queue)
192
- Alephant::Cache.any_instance.stub(:initialize).and_return(cache)
193
- Alephant::Renderer.any_instance.stub(:initialize).and_return(renderer)
194
185
  end
195
186
 
196
187
  it "puts rendered data into the S3 Cache" do
197
- Alephant::Cache.any_instance.should_receive(:put).with(:s3_object_id, :content)
198
- Alephant::Renderer.any_instance.stub(:render).and_return(:content)
188
+ templates = {
189
+ :foo => 'content',
190
+ :bar => 'content'
191
+ }
192
+
193
+ Alephant::Cache
194
+ .any_instance
195
+ .should_receive(:put)
196
+ .with(:foo, templates[:foo])
197
+
198
+ Alephant::Cache
199
+ .any_instance
200
+ .should_receive(:put)
201
+ .with(:bar, templates[:bar])
202
+
203
+ Alephant::MultiRenderer
204
+ .any_instance
205
+ .stub(:render)
206
+ .and_return(templates)
199
207
 
200
208
  instance = subject.new({
201
209
  :s3_object_id => :s3_object_id
@@ -1,5 +1,5 @@
1
1
  module MyApp
2
- class Example < ::Alephant::Views::Base
2
+ class Foo < ::Alephant::Views::Base
3
3
  def content
4
4
  "content"
5
5
  end
@@ -0,0 +1 @@
1
+ {{content}}
@@ -0,0 +1,99 @@
1
+ require 'spec_helper'
2
+
3
+ describe Alephant::MultiRenderer do
4
+ let(:model_file) { 'foo' }
5
+ subject { Alephant::MultiRenderer }
6
+
7
+ before(:each) do
8
+ @instance = subject.new(model_file)
9
+ @instance.base_path = File.join(
10
+ File.dirname(__FILE__),
11
+ 'fixtures',
12
+ 'components',
13
+ 'foo'
14
+ )
15
+ end
16
+
17
+ describe ".initialize(view_base_path)" do
18
+ context "view_base_path = nil" do
19
+ it "sets base_path" do
20
+ expect(subject.new(model_file).base_path).to eq(Alephant::MultiRenderer::DEFAULT_LOCATION)
21
+ end
22
+ end
23
+
24
+ context "view_base_path = '.'" do
25
+ it "sets base_path" do
26
+ expect(subject.new(model_file, '.').base_path).to eq('.')
27
+ end
28
+ end
29
+
30
+ context "view_base_path = invalid_path" do
31
+ it "should raise InvalidViewPath" do
32
+ expect {
33
+ instance = subject.new(model_file, './invalid_path')
34
+ }.to raise_error(
35
+ Alephant::Errors::InvalidViewPath
36
+ )
37
+ end
38
+ end
39
+ end
40
+
41
+ describe "#render_template(template_file, data, instance = nil)" do
42
+ context "instance is not nil" do
43
+ let(:data) { { :foo => :bar } }
44
+ let(:model_instance) { @instance.create_instance(data) }
45
+ it "renders the specified template" do
46
+ expect(
47
+ @instance.render_template('foo', data, model_instance)
48
+ ).to eq('content')
49
+ end
50
+ end
51
+
52
+ context "instance is nil" do
53
+ let(:data) { { :foo => :bar } }
54
+ it "renders the specified template" do
55
+ expect(
56
+ @instance.render_template('foo', data, nil)
57
+ ).to eq('content')
58
+ end
59
+ end
60
+
61
+
62
+ end
63
+
64
+ describe "#render(data)" do
65
+ it "calls ::Alephant::renderer.render() for each template found" do
66
+ templates = {
67
+ :foo => 'content',
68
+ :bar => 'content'
69
+ }
70
+
71
+ content = @instance.render({ :foo => :bar })
72
+ content.each do |template_type, rendered_content|
73
+ expect(rendered_content).to eq(templates[template_type])
74
+ end
75
+ end
76
+ end
77
+
78
+ describe "#create_instance(data)" do
79
+ let(:data) {{ :key => :value }}
80
+
81
+ it "returns the model" do
82
+ model = @instance.create_instance(data)
83
+ model.should be_an Alephant::Views::Base
84
+ expect(model.data).to eq(data)
85
+ end
86
+
87
+ context "invalid model" do
88
+ it 'should raise ViewModelNotFound' do
89
+ instance = subject.new('invalid_model_file', @base_path)
90
+
91
+ expect {
92
+ instance.create_instance(data)
93
+ }.to raise_error(
94
+ Alephant::Errors::ViewModelNotFound
95
+ )
96
+ end
97
+ end
98
+ end
99
+ end
@@ -1,48 +1,41 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Alephant::Renderer do
4
- let(:id) { :id }
4
+ let(:template_file) { 'foo' }
5
+ let(:base_path) { :base_path }
6
+ let(:model) { :model }
5
7
  subject { Alephant::Renderer }
6
8
 
7
- describe "initialize(id, view_base_path=nil)" do
8
- context "id = :id" do
9
- it "sets the attribute id" do
10
- expect(subject.new(id).id).to eq(id)
11
- end
12
- context "view_base_path = '.'" do
13
- it "sets base_path" do
14
- expect(subject.new(id,'.').base_path).to eq('.')
15
- end
9
+ before(:each) do
10
+ @base_path = File.join(
11
+ File.dirname(__FILE__),
12
+ 'fixtures',
13
+ 'components',
14
+ 'foo'
15
+ )
16
+ end
17
+
18
+ describe "initialize(template_file, base_path, model)" do
19
+ context "template_file = :template_file" do
20
+ it "sets the attribute template_file" do
21
+ expect(subject.new(template_file, base_path, model).template_file).to eq(template_file)
16
22
  end
17
23
  end
18
24
  end
19
25
 
20
- describe "template(id)" do
21
- let(:id) { 'example' }
26
+ describe "template()" do
22
27
  it "returns the template" do
23
- instance = subject.new(id)
24
- instance.base_path = File.join(
25
- File.dirname(__FILE__),
26
- 'fixtures',
27
- 'views'
28
- )
29
-
30
- template = instance.template(id)
28
+ instance = subject.new(template_file, @base_path, model)
29
+ template = instance.template
31
30
  expect(template).to eq("{{content}}\n")
32
31
  end
33
32
 
34
33
  context 'invalid template' do
35
- let(:id) { 'invalid_example' }
36
34
  it 'should raise ViewTemplateNotFound' do
37
- instance = subject.new(id)
38
- instance.base_path = File.join(
39
- File.dirname(__FILE__),
40
- 'fixtures',
41
- 'views'
42
- )
35
+ instance = subject.new('invalid_example', @base_path, model)
43
36
 
44
37
  expect {
45
- instance.template(id)
38
+ instance.template
46
39
  }.to raise_error(
47
40
  Alephant::Errors::ViewTemplateNotFound
48
41
  )
@@ -50,90 +43,20 @@ describe Alephant::Renderer do
50
43
  end
51
44
  end
52
45
 
53
- describe "model(id, data)" do
54
- let(:id) { 'example' }
55
- let(:data) { { :key => :value } }
56
- it "returns the model" do
57
- instance = subject.new(id)
58
- instance.base_path = File.join(
59
- File.dirname(__FILE__),
60
- 'fixtures',
61
- 'views'
62
- )
63
-
64
- model = instance.model(id, data)
65
- model.should be_an Alephant::Views::Base
66
- expect(model.data).to eq(data)
67
- end
68
-
69
- context "invalid model" do
70
- let(:id) { 'invalid_example' }
71
- it 'should raise ViewModelNotFound' do
72
- instance = subject.new(id)
73
- instance.base_path = File.join(
74
- File.dirname(__FILE__),
75
- 'fixtures',
76
- 'views'
77
- )
78
- expect {
79
- instance.model(id, data)
80
- }.to raise_error(
81
- Alephant::Errors::ViewModelNotFound
82
- )
83
- end
84
- end
85
- end
86
-
87
- describe "base_path" do
88
- it "should return DEFAULT_LOCATION" do
89
- expect(subject.new(id).base_path).to eq(
90
- Alephant::Renderer::DEFAULT_LOCATION
91
- )
92
- end
93
-
94
- context "base_path = '.'" do
95
- let(:base_path) { '.' }
96
- it "should return '.'" do
97
- instance = subject.new(id)
98
- instance.base_path = base_path
99
- expect(instance.base_path).to eq(base_path)
100
- end
101
- end
102
- end
103
-
104
- describe "base_path=(path)" do
105
- context "base_path = valid_path" do
106
- let(:valid_path) {'.'}
107
- it "should set the base_path" do
108
- instance = subject.new(id)
109
- instance.base_path = valid_path
110
- expect(instance.base_path).to eq(valid_path)
111
- end
112
- end
113
-
114
- context "base_path = invalid_path" do
115
- let(:invalid_path) {'./invalid_path'}
116
- it "should raise InvalidViewPath" do
117
- instance = subject.new(id)
118
- expect {
119
- instance.base_path = invalid_path
120
- }.to raise_error(
121
- Alephant::Errors::InvalidViewPath
122
- )
123
- end
124
- end
125
- end
46
+ describe "render()" do
47
+ it 'renders a template returned from template(template_file)' do
48
+ Mustache
49
+ .any_instance
50
+ .stub(:render)
51
+ .with(:template, :model)
52
+ .and_return(:content)
126
53
 
127
- describe "render(data)" do
128
- it 'renders a template returned from template(id)' do
129
- Mustache.any_instance.stub(:render)
130
- .with(:template, :model).and_return(:content)
131
- Alephant::Renderer.any_instance.stub(:template)
132
- .with(id).and_return(:template)
133
- Alephant::Renderer.any_instance.stub(:model)
134
- .with(id, :data).and_return(:model)
54
+ Alephant::Renderer
55
+ .any_instance
56
+ .stub(:template)
57
+ .and_return(:template)
135
58
 
136
- expect(subject.new(id).render(:data)).to eq(:content)
59
+ expect(subject.new(template_file, @base_path, model).render).to eq(:content)
137
60
  end
138
61
  end
139
62
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alephant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8.2
4
+ version: 0.0.9
5
5
  platform: java
6
6
  authors:
7
7
  - Robert Kenny
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-29 00:00:00.000000000 Z
11
+ date: 2014-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -216,6 +216,7 @@ files:
216
216
  - lib/alephant/errors/view_template_not_found.rb
217
217
  - lib/alephant/models/cache.rb
218
218
  - lib/alephant/models/logger.rb
219
+ - lib/alephant/models/multi_renderer.rb
219
220
  - lib/alephant/models/parser.rb
220
221
  - lib/alephant/models/queue.rb
221
222
  - lib/alephant/models/renderer.rb
@@ -232,9 +233,11 @@ files:
232
233
  - lib/tasks/preview.rake
233
234
  - spec/alephant_spec.rb
234
235
  - spec/cache_spec.rb
235
- - spec/fixtures/views/models/example.rb
236
- - spec/fixtures/views/templates/example.mustache
236
+ - spec/fixtures/components/foo/models/foo.rb
237
+ - spec/fixtures/components/foo/templates/bar.mustache
238
+ - spec/fixtures/components/foo/templates/foo.mustache
237
239
  - spec/logger_spec.rb
240
+ - spec/multi_renderer_spec.rb
238
241
  - spec/parser_spec.rb
239
242
  - spec/queue_spec.rb
240
243
  - spec/renderer_spec.rb
@@ -267,9 +270,11 @@ summary: Static Publishing in the Cloud
267
270
  test_files:
268
271
  - spec/alephant_spec.rb
269
272
  - spec/cache_spec.rb
270
- - spec/fixtures/views/models/example.rb
271
- - spec/fixtures/views/templates/example.mustache
273
+ - spec/fixtures/components/foo/models/foo.rb
274
+ - spec/fixtures/components/foo/templates/bar.mustache
275
+ - spec/fixtures/components/foo/templates/foo.mustache
272
276
  - spec/logger_spec.rb
277
+ - spec/multi_renderer_spec.rb
273
278
  - spec/parser_spec.rb
274
279
  - spec/queue_spec.rb
275
280
  - spec/renderer_spec.rb