alephant 0.0.9.9.1-java → 0.1.1-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/alephant.gemspec +8 -2
  4. data/lib/alephant.rb +40 -56
  5. data/lib/alephant/models/jsonpath_lookup.rb +16 -0
  6. data/lib/alephant/models/parser.rb +20 -2
  7. data/lib/alephant/models/queue.rb +6 -5
  8. data/lib/alephant/models/render_mapper.rb +56 -0
  9. data/lib/alephant/models/writer.rb +44 -0
  10. data/lib/alephant/version.rb +1 -1
  11. data/lib/env.rb +0 -2
  12. data/spec/alephant_spec.rb +51 -197
  13. data/spec/fixtures/components/foo/models/bar.rb +7 -0
  14. data/spec/fixtures/components/foo/models/foo.rb +1 -1
  15. data/spec/parser_spec.rb +17 -9
  16. data/spec/render_mapper_spec.rb +63 -0
  17. data/spec/spec_helper.rb +1 -0
  18. data/spec/writer_spec.rb +52 -0
  19. metadata +97 -34
  20. data/bin/alephant +0 -37
  21. data/lib/alephant/errors.rb +0 -6
  22. data/lib/alephant/errors/invalid_view_path.rb +0 -6
  23. data/lib/alephant/errors/view_model_not_found.rb +0 -6
  24. data/lib/alephant/errors/view_template_not_found.rb +0 -6
  25. data/lib/alephant/models/cache.rb +0 -28
  26. data/lib/alephant/models/logger.rb +0 -22
  27. data/lib/alephant/models/multi_renderer.rb +0 -84
  28. data/lib/alephant/models/renderer.rb +0 -34
  29. data/lib/alephant/models/sequence_table.rb +0 -99
  30. data/lib/alephant/models/sequencer.rb +0 -61
  31. data/lib/alephant/preview/server.rb +0 -75
  32. data/lib/alephant/preview/template.rb +0 -63
  33. data/lib/alephant/tasks.rb +0 -8
  34. data/lib/alephant/util/string.rb +0 -9
  35. data/lib/alephant/views.rb +0 -15
  36. data/lib/alephant/views/base.rb +0 -16
  37. data/lib/alephant/views/preview.rb +0 -44
  38. data/lib/tasks/preview.rake +0 -16
  39. data/spec/cache_spec.rb +0 -63
  40. data/spec/logger_spec.rb +0 -40
  41. data/spec/multi_renderer_spec.rb +0 -92
  42. data/spec/renderer_spec.rb +0 -62
  43. data/spec/sequencer_spec.rb +0 -107
@@ -0,0 +1,7 @@
1
+ module MyApp
2
+ class Bar < ::Alephant::Views::Base
3
+ def content
4
+ @data[:content]
5
+ end
6
+ end
7
+ end
@@ -1,7 +1,7 @@
1
1
  module MyApp
2
2
  class Foo < ::Alephant::Views::Base
3
3
  def content
4
- "content"
4
+ @data[:content]
5
5
  end
6
6
  end
7
7
  end
data/spec/parser_spec.rb CHANGED
@@ -1,19 +1,27 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Alephant::Parser do
4
-
5
- let (:instance) { Alephant::Parser }
6
- subject { Alephant::Parser }
7
-
8
4
  describe "parse(msg)" do
5
+ let(:msg) { Struct.new(:body).new("{ \"foo\":\"bar\" }") }
6
+ let(:msg_with_options) do
7
+ Struct.new(:body).new(<<-EOS)
8
+ {
9
+ "some" : {
10
+ "location" : "bar"
11
+ }
12
+ }
13
+ EOS
14
+ end
9
15
  it "returns parsed JSON with symbolized keys" do
10
- data = "{ \"foo\":\"bar\" }"
16
+ subject.parse(msg)[:foo].should eq 'bar'
17
+ end
11
18
 
12
- instance = subject.new.parse data
13
- key = instance.keys[0]
19
+ context "initialized with vary_jsonpath" do
20
+ subject { Alephant::Parser.new('$.some.location') }
14
21
 
15
- key.should be_a Symbol
16
- instance[key].should eq 'bar'
22
+ it "adds the correct :options to the returned hash" do
23
+ expect(subject.parse(msg_with_options)[:options][:variant]).to eq "bar"
24
+ end
17
25
  end
18
26
  end
19
27
  end
@@ -0,0 +1,63 @@
1
+ require 'spec_helper'
2
+
3
+ describe Alephant::RenderMapper do
4
+ let(:component_id) { :foo }
5
+ let(:data) {{ :foo => :bar }}
6
+ let(:path) { File.join(File.dirname(__FILE__), 'fixtures/components') }
7
+
8
+ subject { Alephant::RenderMapper }
9
+
10
+ before(:each) do
11
+ File.stub(:directory?).and_return(true)
12
+ end
13
+
14
+ describe "initialize(view_base_path)" do
15
+ context "view_base_path = invalid_path" do
16
+ it "should raise InvalidViewPath" do
17
+ File.stub(:directory?).and_return(false)
18
+ expect {
19
+ subject.new(component_id, './invalid_path')
20
+ }.to raise_error(
21
+ 'Invalid path'
22
+ )
23
+ end
24
+ end
25
+
26
+ context "view_base_path = '.'" do
27
+ it "sets base_path" do
28
+ expect(subject.new(component_id, '.').base_path).to eq("./#{component_id}")
29
+ end
30
+ end
31
+
32
+ context "view_base_path = nil" do
33
+ it "sets base_path" do
34
+ expect(subject.new(component_id).base_path).to eq(Alephant::RenderMapper::DEFAULT_LOCATION)
35
+ end
36
+ end
37
+ end
38
+
39
+ describe "create_renderer(template_file, data)" do
40
+ it "Returns a valid renderer" do
41
+ expect(
42
+ subject.new(component_id, path)
43
+ .create_renderer('foo', { :content => 'hello'})
44
+ ).to be_a(Alephant::Renderer::Mustache)
45
+ end
46
+
47
+ it "Returns expected rendered content from a render" do
48
+ expect(
49
+ subject.new(component_id, path)
50
+ .create_renderer('foo', { :content => 'hello'}).render
51
+ ).to eq("hello\n")
52
+
53
+ end
54
+ end
55
+
56
+ describe "generate(data)" do
57
+ it "calls create_renderer for each template found" do
58
+ expect(
59
+ subject.new(component_id, path).generate(data).size
60
+ ).to eq(2)
61
+ end
62
+ end
63
+ end
data/spec/spec_helper.rb CHANGED
@@ -3,4 +3,5 @@ $: << File.join(File.dirname(__FILE__),"..", "lib")
3
3
  require 'pry'
4
4
  require 'alephant'
5
5
  require 'logger'
6
+ require 'alephant/renderer'
6
7
 
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+
3
+ describe Alephant::Writer do
4
+ before(:each) do
5
+ Alephant::RenderMapper.any_instance.stub(:initialize)
6
+ Alephant::Cache.any_instance.stub(:initialize)
7
+ end
8
+ subject do
9
+ Alephant::Writer.new({
10
+ :renderer_id => 'renderer_id',
11
+ :lookup_table_name => 'lookup_table_name'
12
+ })
13
+ end
14
+ describe "#write(data, version)" do
15
+ before(:each) do
16
+ Alephant::RenderMapper.any_instance
17
+ .stub(:generate)
18
+ .and_return({
19
+ 'component_id' => Struct.new(:render).new('content')
20
+ })
21
+
22
+ end
23
+
24
+ it "should write the correct lookup location" do
25
+ options = { :key => :value }
26
+ data = { :options => options }
27
+
28
+ Alephant::Cache.any_instance
29
+ .stub(:put)
30
+ Alephant::Lookup
31
+ .should_receive(:create)
32
+ .with('lookup_table_name', 'component_id')
33
+ .and_call_original
34
+ Alephant::Lookup::Lookup.any_instance
35
+ .stub(:initialize)
36
+ Alephant::Lookup::Lookup.any_instance
37
+ .should_receive(:write)
38
+ .with(options, 'renderer_id_component_id_0')
39
+
40
+ subject.write(data, 0)
41
+ end
42
+
43
+ it "should put the correct location, content to cache" do
44
+ Alephant::Lookup::Lookup.any_instance.stub(:initialize)
45
+ Alephant::Lookup::Lookup.any_instance.stub(:write)
46
+ Alephant::Cache.any_instance
47
+ .should_receive(:put).with('renderer_id_component_id_0', 'content')
48
+
49
+ subject.write({}, 0)
50
+ end
51
+ end
52
+ 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.9.9.1
4
+ version: 0.1.1
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-02-17 00:00:00.000000000 Z
11
+ date: 2014-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -206,10 +206,93 @@ dependencies:
206
206
  version: '0'
207
207
  prerelease: false
208
208
  type: :runtime
209
+ - !ruby/object:Gem::Dependency
210
+ name: alephant-sequencer
211
+ version_requirements: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - '>='
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ requirement: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - '>='
219
+ - !ruby/object:Gem::Version
220
+ version: '0'
221
+ prerelease: false
222
+ type: :runtime
223
+ - !ruby/object:Gem::Dependency
224
+ name: alephant-logger
225
+ version_requirements: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - '>='
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ requirement: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - '>='
233
+ - !ruby/object:Gem::Version
234
+ version: '0'
235
+ prerelease: false
236
+ type: :runtime
237
+ - !ruby/object:Gem::Dependency
238
+ name: alephant-cache
239
+ version_requirements: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - '>='
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ requirement: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - '>='
247
+ - !ruby/object:Gem::Version
248
+ version: '0'
249
+ prerelease: false
250
+ type: :runtime
251
+ - !ruby/object:Gem::Dependency
252
+ name: alephant-renderer
253
+ version_requirements: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - '>='
256
+ - !ruby/object:Gem::Version
257
+ version: '0'
258
+ requirement: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - '>='
261
+ - !ruby/object:Gem::Version
262
+ version: '0'
263
+ prerelease: false
264
+ type: :runtime
265
+ - !ruby/object:Gem::Dependency
266
+ name: alephant-lookup
267
+ version_requirements: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - '>='
270
+ - !ruby/object:Gem::Version
271
+ version: '0'
272
+ requirement: !ruby/object:Gem::Requirement
273
+ requirements:
274
+ - - '>='
275
+ - !ruby/object:Gem::Version
276
+ version: '0'
277
+ prerelease: false
278
+ type: :runtime
279
+ - !ruby/object:Gem::Dependency
280
+ name: alephant-preview
281
+ version_requirements: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - '>='
284
+ - !ruby/object:Gem::Version
285
+ version: '0'
286
+ requirement: !ruby/object:Gem::Requirement
287
+ requirements:
288
+ - - '>='
289
+ - !ruby/object:Gem::Version
290
+ version: '0'
291
+ prerelease: false
292
+ type: :runtime
209
293
  description: Static publishing to S3 based on SQS messages
210
294
  email: kenoir@gmail.com
211
- executables:
212
- - alephant
295
+ executables: []
213
296
  extensions: []
214
297
  extra_rdoc_files: []
215
298
  files:
@@ -222,42 +305,24 @@ files:
222
305
  - README.md
223
306
  - Rakefile
224
307
  - alephant.gemspec
225
- - bin/alephant
226
308
  - lib/alephant.rb
227
- - lib/alephant/errors.rb
228
- - lib/alephant/errors/invalid_view_path.rb
229
- - lib/alephant/errors/view_model_not_found.rb
230
- - lib/alephant/errors/view_template_not_found.rb
231
- - lib/alephant/models/cache.rb
232
- - lib/alephant/models/logger.rb
233
- - lib/alephant/models/multi_renderer.rb
309
+ - lib/alephant/models/jsonpath_lookup.rb
234
310
  - lib/alephant/models/parser.rb
235
311
  - lib/alephant/models/queue.rb
236
- - lib/alephant/models/renderer.rb
237
- - lib/alephant/models/sequence_table.rb
238
- - lib/alephant/models/sequencer.rb
239
- - lib/alephant/preview/server.rb
240
- - lib/alephant/preview/template.rb
241
- - lib/alephant/tasks.rb
242
- - lib/alephant/util/string.rb
312
+ - lib/alephant/models/render_mapper.rb
313
+ - lib/alephant/models/writer.rb
243
314
  - lib/alephant/version.rb
244
- - lib/alephant/views.rb
245
- - lib/alephant/views/base.rb
246
- - lib/alephant/views/preview.rb
247
315
  - lib/env.rb
248
- - lib/tasks/preview.rake
249
316
  - spec/alephant_spec.rb
250
- - spec/cache_spec.rb
317
+ - spec/fixtures/components/foo/models/bar.rb
251
318
  - spec/fixtures/components/foo/models/foo.rb
252
319
  - spec/fixtures/components/foo/templates/bar.mustache
253
320
  - spec/fixtures/components/foo/templates/foo.mustache
254
- - spec/logger_spec.rb
255
- - spec/multi_renderer_spec.rb
256
321
  - spec/parser_spec.rb
257
322
  - spec/queue_spec.rb
258
- - spec/renderer_spec.rb
259
- - spec/sequencer_spec.rb
323
+ - spec/render_mapper_spec.rb
260
324
  - spec/spec_helper.rb
325
+ - spec/writer_spec.rb
261
326
  homepage: https://github.com/BBC-News/alephant
262
327
  licenses:
263
328
  - GPLv3
@@ -281,17 +346,15 @@ rubyforge_project:
281
346
  rubygems_version: 2.1.9
282
347
  signing_key:
283
348
  specification_version: 4
284
- summary: Static Publishing in the Cloud
349
+ summary: Static publishing in the cloud
285
350
  test_files:
286
351
  - spec/alephant_spec.rb
287
- - spec/cache_spec.rb
352
+ - spec/fixtures/components/foo/models/bar.rb
288
353
  - spec/fixtures/components/foo/models/foo.rb
289
354
  - spec/fixtures/components/foo/templates/bar.mustache
290
355
  - spec/fixtures/components/foo/templates/foo.mustache
291
- - spec/logger_spec.rb
292
- - spec/multi_renderer_spec.rb
293
356
  - spec/parser_spec.rb
294
357
  - spec/queue_spec.rb
295
- - spec/renderer_spec.rb
296
- - spec/sequencer_spec.rb
358
+ - spec/render_mapper_spec.rb
297
359
  - spec/spec_helper.rb
360
+ - spec/writer_spec.rb
data/bin/alephant DELETED
@@ -1,37 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'pathname'
4
- require 'trollop'
5
-
6
- root = Pathname.new(__FILE__).dirname.parent
7
- lib_path = (root + 'lib').realdirpath
8
-
9
- $LOAD_PATH.unshift(lib_path)
10
-
11
- require 'alephant'
12
- require 'alephant/tasks'
13
-
14
- SUB_COMMANDS = %w(preview)
15
- global_opts = Trollop::options do
16
- banner <<-EOS
17
- Static publishing to S3 based on SQS messages
18
- Usage:
19
- alephant preview # Runs preview server
20
- alephant update # Attempts to update preview template
21
- Dependent on the following environmen variables being set:
22
- - STATIC_HOST_REGEX="static.(int|test|live).myhost.com"
23
- - PREVIEW_TEMPLATE_URL"http://myapp.com/mustache_template"
24
- EOS
25
- stop_on SUB_COMMANDS
26
- end
27
-
28
- cmd = ARGV.shift # get the subcommand
29
- case cmd
30
- when "preview"
31
- Rake::Task['alephant:preview:go'].invoke
32
- when "update"
33
- Rake::Task['alephant:preview:update'].invoke
34
- else
35
- Trollop::die "unknown subcommand #{cmd.inspect}"
36
- end
37
-
@@ -1,6 +0,0 @@
1
- module Alephant::Errors
2
- autoload :InvalidViewPath, 'alephant/errors/invalid_view_path'
3
- autoload :ViewModelNotFound, 'alephant/errors/view_model_not_found'
4
- autoload :ViewTemplateNotFound, 'alephant/errors/view_template_not_found'
5
- end
6
-
@@ -1,6 +0,0 @@
1
- module Alephant::Errors
2
- class InvalidViewPath < Exception
3
-
4
- end
5
- end
6
-
@@ -1,6 +0,0 @@
1
- module Alephant::Errors
2
- class ViewModelNotFound < Exception
3
-
4
- end
5
- end
6
-
@@ -1,6 +0,0 @@
1
- module Alephant::Errors
2
- class ViewTemplateNotFound < Exception
3
-
4
- end
5
- end
6
-
@@ -1,28 +0,0 @@
1
- require 'aws-sdk'
2
-
3
- module Alephant
4
- class Cache
5
- attr_reader :id, :bucket, :path
6
-
7
- def initialize(id, path)
8
- @logger = ::Alephant.logger
9
- @id = id
10
- @path = path
11
-
12
- s3 = AWS::S3.new
13
- @bucket = s3.buckets[id]
14
- @logger.info("Cache.initialize: end with id #{id} and path #{path}")
15
- end
16
-
17
- def put(id, data)
18
- @bucket.objects["#{@path}/#{id}"].write(data)
19
- @logger.info("Cache.put: #{@path}/#{id}")
20
- end
21
-
22
- def get(id)
23
- @logger.info("Cache.get: #{@path}/#{id}")
24
- @bucket.objects["#{@path}/#{id}"].read
25
- end
26
- end
27
- end
28
-