rendering_engine 0.1.1 → 0.2.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 +5 -13
- data/.rspec +2 -0
- data/.travis.yml +6 -0
- data/Guardfile +6 -0
- data/README.md +67 -6
- data/Rakefile +6 -1
- data/lib/rendering_engine.rb +5 -5
- data/lib/rendering_engine/content.rb +11 -8
- data/lib/rendering_engine/content_helpers.rb +6 -5
- data/lib/rendering_engine/file_repo.rb +27 -0
- data/lib/rendering_engine/provider.rb +5 -6
- data/lib/rendering_engine/version.rb +1 -1
- data/rendering_engine.gemspec +11 -9
- data/spec/rendering_engine/content_helpers_spec.rb +10 -7
- data/spec/rendering_engine/content_spec.rb +43 -37
- data/spec/rendering_engine/file_repo_spec.rb +38 -0
- data/spec/rendering_engine/provider_spec.rb +8 -9
- data/spec/spec_helper.rb +18 -14
- metadata +48 -14
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
YTI2OWRhOWNkMTIwNDc0NWJiYTg3YmZhNzUyNjU3M2E0ZDNmNmFlNg==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b23fb266e360b45e33135d7a2c8e2ec3cfd17ab3
|
4
|
+
data.tar.gz: 3a78f2fa0eef4ad271ae72a153e83047359d7934
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
MzVmYmIyNDgxMzUyNmU5ZTQzN2EyYzA4YjFkZDgzY2Y4YjlmNmVlNzk3Yjcw
|
11
|
-
NjlhNGNjODg3ZmIxNDAzYWUzNzRhM2NkODZkN2VhNDQ2NzE0Njk=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NzljNjYwNjZkZTg3OGJhNGM1NmMyYWE0YjgyZTA1ZmUzZTI3NWY5MWQ1ZjNk
|
14
|
-
ZDY4ODhjMTZkODU0ZjVmZmJlZDhmMDFiZDE2YTcwNWNhMGNkYjEwYWY1YTA2
|
15
|
-
MmQyOGY2YWQwOTY3MTllNmIxZDQzZDBlZDRkZjdhZWJlZTdmMzM=
|
6
|
+
metadata.gz: 410ead0114544811441bc82756de35904474c56519ab21bb3027f70107d017cc012f0d3efffaaf8ce1ee4298d3568f35835f4177717317a5686be6b92a2995ee
|
7
|
+
data.tar.gz: 38b71f11ead7a33f98a93cd396a997ae74354b12c7ae0c0385a48d4048977dfdc3f99dd35f474561005576edd5fd21c357f3a92e2d471efb64e68a77920c9db7
|
data/.rspec
CHANGED
data/.travis.yml
ADDED
data/Guardfile
ADDED
data/README.md
CHANGED
@@ -16,7 +16,8 @@ Or install it yourself as:
|
|
16
16
|
|
17
17
|
## Usage
|
18
18
|
|
19
|
-
$
|
19
|
+
$ file_repo = RenderingEngine::FileRepo.new(base_path)
|
20
|
+
$ content_provider = RenderingEngine::Provider.new(file_repo)
|
20
21
|
$ content = content_provider.get(relative_file_path)
|
21
22
|
$ content.source #gets source of file (rendered or not :D)
|
22
23
|
$ content.kind return (:orginal, :template, :unknown)
|
@@ -35,10 +36,69 @@ Or install it yourself as:
|
|
35
36
|
end
|
36
37
|
|
37
38
|
def content_provider
|
38
|
-
@content_provider ||= RenderingEngine::Provider.new(
|
39
|
+
@content_provider ||= RenderingEngine::Provider.new(file_repo)
|
40
|
+
end
|
41
|
+
|
42
|
+
def file_repo
|
43
|
+
@file_repo ||= RenderingEngine::FileRepo(Rails.root.join('app/content'))
|
39
44
|
end
|
40
45
|
---
|
41
46
|
|
47
|
+
## Own File repository class
|
48
|
+
needed gems 'moped' and 'moped-gridfs'
|
49
|
+
|
50
|
+
```
|
51
|
+
class MongoFileRepo
|
52
|
+
def initilaize(mongo)
|
53
|
+
@mongo = mongo
|
54
|
+
end
|
55
|
+
|
56
|
+
def get(file_path)
|
57
|
+
bucket.open(file_path, 'r+')
|
58
|
+
end
|
59
|
+
|
60
|
+
def read(file_path)
|
61
|
+
bucket.open(file_path, 'r').read
|
62
|
+
end
|
63
|
+
|
64
|
+
def exist?(file_path)
|
65
|
+
bucket.files.select { |f| f.filename == file_path }.count > 0
|
66
|
+
end
|
67
|
+
|
68
|
+
def save(file_path, body, opts = {})
|
69
|
+
file_opts = opts.merge(filename: file_path)
|
70
|
+
bucket.open(file_opts , 'w+').write(body)
|
71
|
+
end
|
72
|
+
|
73
|
+
def delete(file_path)
|
74
|
+
bucket.delete(file_path)
|
75
|
+
end
|
76
|
+
|
77
|
+
def file_dirname(file_path)
|
78
|
+
File.dirname(file_path)
|
79
|
+
end
|
80
|
+
|
81
|
+
private
|
82
|
+
|
83
|
+
attr_reader :mongo
|
84
|
+
|
85
|
+
def bucket
|
86
|
+
@bucket ||= mongo.bucket
|
87
|
+
end
|
88
|
+
end
|
89
|
+
```
|
90
|
+
|
91
|
+
### Usage own custom file repository class
|
92
|
+
|
93
|
+
```
|
94
|
+
|
95
|
+
mongo = Moped::Session.new(['127.0.0.1:27017'], database: 'test')
|
96
|
+
file_repo = MongoFileRepo(mongo)
|
97
|
+
provider = RenderingEngine::Provider.new(file_repo)
|
98
|
+
provider.get(path, custom_helper: ContentCustomHelpers).source
|
99
|
+
|
100
|
+
```
|
101
|
+
|
42
102
|
## Own Helper class
|
43
103
|
|
44
104
|
```
|
@@ -69,11 +129,12 @@ end
|
|
69
129
|
|
70
130
|
```
|
71
131
|
|
72
|
-
### Usage own custom class
|
132
|
+
### Usage own custom helper class
|
73
133
|
|
74
134
|
```
|
75
135
|
|
76
|
-
|
136
|
+
file_repo = RenderingEngine::FileRepo.new(Rails.root.join('app/content'))
|
137
|
+
provider = RenderingEngine::Provider.new(file_repo, custom_helper: ContentCustomHelpers)
|
77
138
|
provider.get(path).source
|
78
139
|
|
79
140
|
```
|
@@ -82,10 +143,10 @@ or
|
|
82
143
|
|
83
144
|
```
|
84
145
|
|
85
|
-
|
146
|
+
file_repo = RenderingEngine::FileRepo.new(Rails.root.join('app/content'))
|
147
|
+
provider = RenderingEngine::Provider.new(file_repo)
|
86
148
|
provider.get(path, custom_helper: ContentCustomHelpers).source
|
87
149
|
|
88
|
-
|
89
150
|
```
|
90
151
|
|
91
152
|
## Contributing
|
data/Rakefile
CHANGED
data/lib/rendering_engine.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
1
|
+
require 'rendering_engine/version'
|
2
|
+
require 'rendering_engine/file_repo'
|
3
|
+
require 'rendering_engine/content_helpers'
|
4
|
+
require 'rendering_engine/content'
|
5
|
+
require 'rendering_engine/provider'
|
5
6
|
|
6
7
|
module RenderingEngine
|
7
|
-
|
8
8
|
end
|
@@ -2,9 +2,10 @@ require 'erb'
|
|
2
2
|
|
3
3
|
module RenderingEngine
|
4
4
|
class Content
|
5
|
-
attr_reader :file_path, :data
|
5
|
+
attr_reader :file_repo, :file_path, :data
|
6
6
|
|
7
|
-
def initialize(file_path, opts={})
|
7
|
+
def initialize(file_repo, file_path, opts = {})
|
8
|
+
@file_repo = file_repo
|
8
9
|
@file_path = file_path
|
9
10
|
@base_folder_path = opts[:base_folder_path]
|
10
11
|
@data = opts[:data]
|
@@ -14,9 +15,9 @@ module RenderingEngine
|
|
14
15
|
def source
|
15
16
|
@source ||= (
|
16
17
|
case kind
|
17
|
-
when :orginal then
|
18
|
+
when :orginal then file_repo.read(file_path)
|
18
19
|
when :template
|
19
|
-
ERB.new(
|
20
|
+
ERB.new(file_repo.read(file_path_as_erb)).result(
|
20
21
|
helper(base_folder_path, data).instance_eval { binding }
|
21
22
|
)
|
22
23
|
else ''
|
@@ -49,7 +50,7 @@ module RenderingEngine
|
|
49
50
|
end
|
50
51
|
|
51
52
|
def base_folder_path
|
52
|
-
@base_folder_path ||=
|
53
|
+
@base_folder_path ||= file_repo.file_dirname(file_path)
|
53
54
|
end
|
54
55
|
|
55
56
|
private
|
@@ -57,15 +58,17 @@ module RenderingEngine
|
|
57
58
|
attr_reader :custom_helper
|
58
59
|
|
59
60
|
def helper(path, content_data)
|
60
|
-
(custom_helper || ContentHelpers).new(
|
61
|
+
(custom_helper || ContentHelpers).new(file_repo,
|
62
|
+
base_path: path,
|
63
|
+
data: content_data)
|
61
64
|
end
|
62
65
|
|
63
66
|
def orginal_file_present?
|
64
|
-
|
67
|
+
file_repo.exist?(file_path)
|
65
68
|
end
|
66
69
|
|
67
70
|
def file_as_erb_present?
|
68
|
-
|
71
|
+
file_repo.exist?(file_path_as_erb)
|
69
72
|
end
|
70
73
|
|
71
74
|
def file_path_as_erb
|
@@ -1,21 +1,22 @@
|
|
1
1
|
module RenderingEngine
|
2
2
|
class ContentHelpers
|
3
|
-
def initialize(opts={})
|
3
|
+
def initialize(file_repo, opts = {})
|
4
|
+
@file_repo = file_repo
|
4
5
|
@base_path = opts.fetch(:base_path)
|
5
6
|
@data = opts[:data]
|
6
7
|
end
|
7
8
|
|
8
|
-
def render(file_relative_path, optional_data=nil)
|
9
|
+
def render(file_relative_path, optional_data = nil)
|
9
10
|
file_path = File.join(base_path, file_relative_path)
|
10
|
-
|
11
|
+
rendering_data = optional_data || data
|
11
12
|
|
12
|
-
RenderingEngine::Content.new(file_path, data:
|
13
|
+
RenderingEngine::Content.new(file_repo, file_path, data: rendering_data).source
|
13
14
|
end
|
14
15
|
|
15
16
|
attr_reader :data
|
16
17
|
|
17
18
|
private
|
18
19
|
|
19
|
-
attr_reader :base_path
|
20
|
+
attr_reader :base_path, :file_repo
|
20
21
|
end
|
21
22
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module RenderingEngine
|
2
|
+
class FileRepo
|
3
|
+
attr_reader :base_path
|
4
|
+
|
5
|
+
def initialize(base_path)
|
6
|
+
@base_path = base_path
|
7
|
+
end
|
8
|
+
|
9
|
+
def read(file_path)
|
10
|
+
File.read(full_file_path(file_path))
|
11
|
+
end
|
12
|
+
|
13
|
+
def exist?(file_path)
|
14
|
+
File.exist?(full_file_path(file_path))
|
15
|
+
end
|
16
|
+
|
17
|
+
def file_dirname(file_path)
|
18
|
+
File.dirname(file_path)
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def full_file_path(file_path)
|
24
|
+
File.join(base_path, file_path)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -1,18 +1,17 @@
|
|
1
1
|
module RenderingEngine
|
2
2
|
class Provider
|
3
|
-
def initialize(
|
4
|
-
@
|
3
|
+
def initialize(file_repo, base_opts = {})
|
4
|
+
@file_repo = file_repo
|
5
5
|
@base_opts = base_opts
|
6
6
|
end
|
7
7
|
|
8
|
-
def get(
|
9
|
-
file_path = File.join(base_path, relative_path)
|
8
|
+
def get(file_path, opts = {})
|
10
9
|
content_opts = base_opts.merge(opts)
|
11
|
-
Content.new(file_path, content_opts)
|
10
|
+
Content.new(file_repo, file_path, content_opts)
|
12
11
|
end
|
13
12
|
|
14
13
|
private
|
15
14
|
|
16
|
-
attr_reader :
|
15
|
+
attr_reader :file_repo, :base_opts
|
17
16
|
end
|
18
17
|
end
|
data/rendering_engine.gemspec
CHANGED
@@ -4,21 +4,23 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'rendering_engine/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'rendering_engine'
|
8
8
|
spec.version = RenderingEngine::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
9
|
+
spec.authors = ['Paweł Niemczyk']
|
10
|
+
spec.email = ['pniemczyk@o2.pl']
|
11
11
|
spec.description = %q{ Rendering engine based on ERB }
|
12
12
|
spec.summary = %q{ Rendering engine based on ERB }
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
13
|
+
spec.homepage = 'https://github.com/pniemczyk/rendering_engine'
|
14
|
+
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = [
|
19
|
+
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_development_dependency
|
22
|
-
spec.add_development_dependency
|
23
|
-
spec.add_development_dependency
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
22
|
+
spec.add_development_dependency 'rake', '~> 0'
|
23
|
+
spec.add_development_dependency 'rspec', '~> 3.1'
|
24
|
+
spec.add_development_dependency 'guard-rspec', '~> 0'
|
25
|
+
spec.add_development_dependency 'coveralls', '~> 0'
|
24
26
|
end
|
@@ -1,19 +1,22 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe RenderingEngine::ContentHelpers do
|
4
|
+
let(:file_repo) { double('RenderingEngine::FileRepo') }
|
4
5
|
let(:base_path) { 'root/path' }
|
5
6
|
let(:file_relative_path) { 'login.haml' }
|
6
7
|
let(:file_path) { File.join(base_path, file_relative_path) }
|
7
8
|
let(:content) { double('content_object', source: source) }
|
8
9
|
let(:source) { 'file_source' }
|
9
|
-
let(:content_data) {{ name: 'pawel' }}
|
10
|
-
subject { described_class.new(base_path: base_path, data: content_data) }
|
10
|
+
let(:content_data) { { name: 'pawel' } }
|
11
|
+
subject { described_class.new(file_repo, base_path: base_path, data: content_data) }
|
11
12
|
|
12
13
|
it '#render' do
|
13
|
-
RenderingEngine::Content.
|
14
|
-
|
15
|
-
|
14
|
+
expect(RenderingEngine::Content).to receive(:new)
|
15
|
+
.with(file_repo,
|
16
|
+
file_path,
|
17
|
+
data: content_data)
|
18
|
+
.and_return(content)
|
16
19
|
|
17
|
-
subject.render(file_relative_path).
|
20
|
+
expect(subject.render(file_relative_path)).to eq(source)
|
18
21
|
end
|
19
22
|
end
|
@@ -1,13 +1,13 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe RenderingEngine::Content do
|
4
|
-
let(:
|
5
|
-
let(:
|
6
|
-
let(:relative_path)
|
7
|
-
let(:file_path)
|
8
|
-
let(:content)
|
9
|
-
let(:content_data)
|
10
|
-
let(:custom_helper)
|
4
|
+
let(:file_repo) { double('RenderingEngine::FileRepo') }
|
5
|
+
let(:test_base_path) { nil }
|
6
|
+
let(:relative_path) { 'login' }
|
7
|
+
let(:file_path) { "#{relative_path}/form.html" }
|
8
|
+
let(:content) { double('ContentObject') }
|
9
|
+
let(:content_data) { nil }
|
10
|
+
let(:custom_helper) { nil }
|
11
11
|
let(:opts) do
|
12
12
|
{
|
13
13
|
base_folder_path: test_base_path,
|
@@ -16,27 +16,27 @@ describe RenderingEngine::Content do
|
|
16
16
|
}
|
17
17
|
end
|
18
18
|
|
19
|
-
subject { described_class.new(file_path, opts) }
|
19
|
+
subject { described_class.new(file_repo, file_path, opts) }
|
20
20
|
|
21
21
|
context '#source' do
|
22
22
|
|
23
|
-
before(:each) { subject.
|
23
|
+
before(:each) { expect(subject).to receive(:kind).and_return(kind) }
|
24
24
|
|
25
25
|
context 'when file is not found' do
|
26
26
|
let(:kind) { :unknown }
|
27
27
|
|
28
28
|
it 'returns empty string' do
|
29
|
-
subject.source.
|
29
|
+
expect(subject.source).to eq ''
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
33
|
context 'when orginal file is found' do
|
34
34
|
let(:kind) { :orginal }
|
35
35
|
let(:source) { 'file_source' }
|
36
|
-
before {
|
36
|
+
before { expect(file_repo).to receive(:read).with(file_path).and_return(source) }
|
37
37
|
|
38
38
|
it 'returns source of file' do
|
39
|
-
subject.source.
|
39
|
+
expect(subject.source).to eq source
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
@@ -45,24 +45,30 @@ describe RenderingEngine::Content do
|
|
45
45
|
let(:source) { 'calc 1+1=<%= 1+1 %>' }
|
46
46
|
let(:rendered_source) { 'calc 1+1=2' }
|
47
47
|
let(:erb_file_path) { "#{file_path}.erb" }
|
48
|
-
before
|
48
|
+
before do
|
49
|
+
expect(file_repo).to receive(:file_dirname)
|
50
|
+
.with(file_path)
|
51
|
+
.and_return(relative_path)
|
52
|
+
expect(file_repo).to receive(:read)
|
53
|
+
.with(erb_file_path)
|
54
|
+
.and_return(source)
|
55
|
+
end
|
49
56
|
|
50
57
|
it 'returns rendered source' do
|
51
|
-
subject.source.
|
58
|
+
expect(subject.source).to eq rendered_source
|
52
59
|
end
|
53
60
|
|
54
61
|
context 'erb result' do
|
55
|
-
let(:erb_instance)
|
56
|
-
let(:base_folder_path) { 'root/contract/files/login' }
|
62
|
+
let(:erb_instance) { double('erb_instance') }
|
57
63
|
before do
|
58
|
-
ERB.
|
59
|
-
subject.
|
64
|
+
expect(ERB).to receive(:new).with(source).and_return(erb_instance)
|
65
|
+
expect(subject).to receive(:helper).with(relative_path, content_data)
|
60
66
|
.and_return(double)
|
61
|
-
erb_instance.
|
67
|
+
expect(erb_instance).to receive(:result).with(an_instance_of(Binding))
|
62
68
|
.and_return(rendered_source)
|
63
69
|
end
|
64
70
|
it 'receives helper' do
|
65
|
-
subject.source.
|
71
|
+
expect(subject.source).to eq rendered_source
|
66
72
|
end
|
67
73
|
end
|
68
74
|
end
|
@@ -70,53 +76,53 @@ describe RenderingEngine::Content do
|
|
70
76
|
|
71
77
|
context '#kind' do
|
72
78
|
context 'when orginal_file_present' do
|
73
|
-
before { subject.
|
79
|
+
before { expect(subject).to receive(:orginal_file_present?).and_return(true) }
|
74
80
|
it 'returns :orginal' do
|
75
|
-
subject.kind.
|
81
|
+
expect(subject.kind).to eq :orginal
|
76
82
|
end
|
77
83
|
end
|
78
84
|
|
79
85
|
context 'when orginal_file_present is missing but template file is present' do
|
80
86
|
|
81
87
|
before do
|
82
|
-
subject.
|
83
|
-
subject.
|
88
|
+
expect(subject).to receive(:orginal_file_present?).and_return(false)
|
89
|
+
expect(subject).to receive(:file_as_erb_present?).and_return(true)
|
84
90
|
end
|
85
91
|
|
86
92
|
it 'returns :template' do
|
87
|
-
subject.kind.
|
93
|
+
expect(subject.kind).to eq :template
|
88
94
|
end
|
89
95
|
end
|
90
96
|
|
91
97
|
context 'when orginal and template file is missing' do
|
92
98
|
|
93
99
|
before do
|
94
|
-
subject.
|
95
|
-
subject.
|
100
|
+
expect(subject).to receive(:orginal_file_present?).and_return(false)
|
101
|
+
expect(subject).to receive(:file_as_erb_present?).and_return(false)
|
96
102
|
end
|
97
103
|
|
98
104
|
it 'returns :unknown' do
|
99
|
-
subject.kind.
|
105
|
+
expect(subject.kind).to eq :unknown
|
100
106
|
end
|
101
107
|
end
|
102
108
|
end
|
103
109
|
|
104
110
|
%w{template orginal unknown}.each do |method_name|
|
105
111
|
it "##{method_name}? returns true when content kind is :#{method_name}" do
|
106
|
-
subject.
|
107
|
-
subject.public_send("#{method_name}?").
|
112
|
+
expect(subject).to receive(:kind).and_return(method_name.to_sym)
|
113
|
+
expect(subject.public_send("#{method_name}?")).to eq true
|
108
114
|
end
|
109
115
|
|
110
116
|
it "##{method_name}? returns false when content kind is not :#{method_name}" do
|
111
|
-
subject.
|
112
|
-
subject.public_send("#{method_name}?").
|
117
|
+
expect(subject).to receive(:kind).and_return(:bad)
|
118
|
+
expect(subject.public_send("#{method_name}?")).to eq false
|
113
119
|
end
|
114
120
|
end
|
115
121
|
|
116
122
|
it '#base_folder_path' do
|
117
|
-
|
118
|
-
|
123
|
+
expect(file_repo).to receive(:file_dirname)
|
124
|
+
.with(file_path)
|
125
|
+
.and_return(relative_path)
|
126
|
+
expect(subject.base_folder_path).to eq(relative_path)
|
119
127
|
end
|
120
128
|
end
|
121
|
-
|
122
|
-
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RenderingEngine::FileRepo do
|
4
|
+
let(:file_path) { 'some/file.erb' }
|
5
|
+
let(:base_path) { '/root/home/user' }
|
6
|
+
let(:full_path) { "#{base_path}/#{file_path}"}
|
7
|
+
subject { described_class.new(base_path) }
|
8
|
+
|
9
|
+
context '#exist?' do
|
10
|
+
it 'returns true when file exist' do
|
11
|
+
expect(File).to receive(:exist?).with(full_path).and_return(true)
|
12
|
+
expect(subject.exist?(file_path)).to eq(true)
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'returns false when file missing' do
|
16
|
+
expect(File).to receive(:exist?).with(full_path).and_return(false)
|
17
|
+
expect(subject.exist?(file_path)).to eq(false)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context '#read' do
|
22
|
+
let(:file_source) { 'test_source' }
|
23
|
+
|
24
|
+
it 'get file source when file exist' do
|
25
|
+
expect(File).to receive(:read).with(full_path).and_return(file_source)
|
26
|
+
expect(subject.read(file_path)).to eq(file_source)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'raise error when file missing' do
|
30
|
+
expect(File).to receive(:read).with(full_path).and_raise(Exception)
|
31
|
+
expect {subject.read(file_path)}.to raise_error
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
it '#file_dirname returns dirname from file_path' do
|
36
|
+
expect(subject.file_dirname('/root/index.html')).to eq('/root')
|
37
|
+
end
|
38
|
+
end
|
@@ -1,19 +1,18 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe RenderingEngine::Provider do
|
4
|
-
let(:
|
5
|
-
let(:
|
6
|
-
let(:file_path) { File.join(base_path, relative_path) }
|
4
|
+
let(:file_repo) { double('RenderingEngine::FileRepo') }
|
5
|
+
let(:file_path) { 'login/form.html' }
|
7
6
|
let(:content) { double('ContentObject') }
|
8
7
|
let(:data) { double('data') }
|
9
8
|
let(:custom_helper) { double('custom_helper') }
|
10
|
-
let(:opts) {{ data: data, custom_helper: custom_helper }}
|
11
|
-
subject { described_class.new(
|
9
|
+
let(:opts) { { data: data, custom_helper: custom_helper } }
|
10
|
+
subject { described_class.new(file_repo) }
|
12
11
|
|
13
12
|
it '#get' do
|
14
|
-
RenderingEngine::Content.
|
15
|
-
.with(file_path, opts)
|
13
|
+
expect(RenderingEngine::Content).to receive(:new)
|
14
|
+
.with(file_repo, file_path, opts)
|
16
15
|
.and_return(content)
|
17
|
-
subject.get(
|
16
|
+
expect(subject.get(file_path, opts)).to be content
|
18
17
|
end
|
19
18
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,22 +1,26 @@
|
|
1
|
-
# This file was generated by the `rspec --init` command. Conventionally, all
|
2
|
-
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
3
|
-
# Require this file using `require "spec_helper"` to ensure that it is only
|
4
|
-
# loaded once.
|
5
|
-
#
|
6
|
-
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
|
-
|
8
1
|
require File.expand_path(File.dirname(__FILE__) + '/../lib/rendering_engine')
|
9
2
|
require 'rspec'
|
10
3
|
require 'ostruct'
|
4
|
+
require 'coveralls'
|
5
|
+
Coveralls.wear!
|
11
6
|
|
12
7
|
RSpec.configure do |config|
|
13
|
-
config.treat_symbols_as_metadata_keys_with_true_values = true
|
14
|
-
config.run_all_when_everything_filtered = true
|
15
8
|
config.filter_run :focus
|
9
|
+
config.run_all_when_everything_filtered = true
|
10
|
+
|
11
|
+
config.default_formatter = 'doc' if config.files_to_run.one?
|
12
|
+
|
13
|
+
config.profile_examples = 10
|
14
|
+
config.order = :random
|
15
|
+
|
16
|
+
Kernel.srand config.seed
|
17
|
+
|
18
|
+
config.expect_with :rspec do |expectations|
|
19
|
+
expectations.syntax = :expect
|
20
|
+
end
|
16
21
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
config.order = 'random'
|
22
|
+
config.mock_with :rspec do |mocks|
|
23
|
+
mocks.syntax = :expect
|
24
|
+
mocks.verify_partial_doubles = true
|
25
|
+
end
|
22
26
|
end
|
metadata
CHANGED
@@ -1,78 +1,110 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rendering_engine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paweł Niemczyk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.3'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.1'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: guard-rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: coveralls
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
46
74
|
- !ruby/object:Gem::Version
|
47
75
|
version: '0'
|
48
76
|
type: :development
|
49
77
|
prerelease: false
|
50
78
|
version_requirements: !ruby/object:Gem::Requirement
|
51
79
|
requirements:
|
52
|
-
- -
|
80
|
+
- - "~>"
|
53
81
|
- !ruby/object:Gem::Version
|
54
82
|
version: '0'
|
55
|
-
description:
|
83
|
+
description: " Rendering engine based on ERB "
|
56
84
|
email:
|
57
85
|
- pniemczyk@o2.pl
|
58
86
|
executables: []
|
59
87
|
extensions: []
|
60
88
|
extra_rdoc_files: []
|
61
89
|
files:
|
62
|
-
- .gitignore
|
63
|
-
- .rspec
|
90
|
+
- ".gitignore"
|
91
|
+
- ".rspec"
|
92
|
+
- ".travis.yml"
|
64
93
|
- Gemfile
|
94
|
+
- Guardfile
|
65
95
|
- LICENSE.txt
|
66
96
|
- README.md
|
67
97
|
- Rakefile
|
68
98
|
- lib/rendering_engine.rb
|
69
99
|
- lib/rendering_engine/content.rb
|
70
100
|
- lib/rendering_engine/content_helpers.rb
|
101
|
+
- lib/rendering_engine/file_repo.rb
|
71
102
|
- lib/rendering_engine/provider.rb
|
72
103
|
- lib/rendering_engine/version.rb
|
73
104
|
- rendering_engine.gemspec
|
74
105
|
- spec/rendering_engine/content_helpers_spec.rb
|
75
106
|
- spec/rendering_engine/content_spec.rb
|
107
|
+
- spec/rendering_engine/file_repo_spec.rb
|
76
108
|
- spec/rendering_engine/provider_spec.rb
|
77
109
|
- spec/spec_helper.rb
|
78
110
|
homepage: https://github.com/pniemczyk/rendering_engine
|
@@ -85,22 +117,24 @@ require_paths:
|
|
85
117
|
- lib
|
86
118
|
required_ruby_version: !ruby/object:Gem::Requirement
|
87
119
|
requirements:
|
88
|
-
- -
|
120
|
+
- - ">="
|
89
121
|
- !ruby/object:Gem::Version
|
90
122
|
version: '0'
|
91
123
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
124
|
requirements:
|
93
|
-
- -
|
125
|
+
- - ">="
|
94
126
|
- !ruby/object:Gem::Version
|
95
127
|
version: '0'
|
96
128
|
requirements: []
|
97
129
|
rubyforge_project:
|
98
|
-
rubygems_version: 2.
|
130
|
+
rubygems_version: 2.2.2
|
99
131
|
signing_key:
|
100
132
|
specification_version: 4
|
101
133
|
summary: Rendering engine based on ERB
|
102
134
|
test_files:
|
103
135
|
- spec/rendering_engine/content_helpers_spec.rb
|
104
136
|
- spec/rendering_engine/content_spec.rb
|
137
|
+
- spec/rendering_engine/file_repo_spec.rb
|
105
138
|
- spec/rendering_engine/provider_spec.rb
|
106
139
|
- spec/spec_helper.rb
|
140
|
+
has_rdoc:
|