welltreat-store-framework 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. data/README.md +25 -0
  2. data/lib/generators/flexi_model/install/install_generator.rb +20 -0
  3. data/lib/generators/flexi_model/install/templates/create_flexi_model_collections.rb +17 -0
  4. data/lib/generators/flexi_model/install/templates/create_flexi_model_collections_fields.rb +11 -0
  5. data/lib/generators/flexi_model/install/templates/create_flexi_model_fields.rb +18 -0
  6. data/lib/generators/flexi_model/install/templates/create_flexi_model_records.rb +12 -0
  7. data/lib/generators/flexi_model/install/templates/create_flexi_model_values.rb +18 -0
  8. data/lib/welltreat_store_framework/configuration.rb +17 -0
  9. data/lib/welltreat_store_framework/controller.rb +131 -0
  10. data/lib/welltreat_store_framework/core.rb +66 -0
  11. data/lib/welltreat_store_framework/haml_renderer/lorem_helper.rb +29 -0
  12. data/lib/welltreat_store_framework/haml_renderer/partial.rb +31 -0
  13. data/lib/welltreat_store_framework/haml_renderer/paths.rb +51 -0
  14. data/lib/welltreat_store_framework/haml_renderer/tags_helper.rb +74 -0
  15. data/lib/welltreat_store_framework/haml_renderer.rb +163 -0
  16. data/lib/welltreat_store_framework/rack_server.rb +56 -0
  17. data/lib/welltreat_store_framework/store_app.rb +282 -0
  18. data/lib/welltreat_store_framework.rb +9 -0
  19. data/sample/hello-store/assets/javascripts/app.js +1 -0
  20. data/sample/hello-store/controllers/home.rb +15 -0
  21. data/sample/hello-store/controllers/products.rb +18 -0
  22. data/sample/hello-store/models/product.rb +9 -0
  23. data/sample/hello-store/mount.rb +0 -0
  24. data/sample/hello-store/views/home/index.haml +14 -0
  25. data/sample/hello-store/views/layouts/default.html.haml +10 -0
  26. data/sample/hello-store/views/products/_product.html.haml +1 -0
  27. data/sample/hello-store/views/products/index.haml +4 -0
  28. data/sample/hello-store/views/products/show.html.haml +10 -0
  29. data/spec/fixtures/schema.rb +78 -0
  30. data/spec/lib/welltreat_store_framework/configuration_spec.rb +5 -0
  31. data/spec/lib/welltreat_store_framework/core_spec.rb +190 -0
  32. data/spec/lib/welltreat_store_framework/haml_renderer/context_spec.rb +73 -0
  33. data/spec/lib/welltreat_store_framework/store_app_spec.rb +85 -0
  34. data/spec/lib/welltreat_store_framework_spec.rb +5 -0
  35. data/spec/sample/controllers/products_spec.rb +140 -0
  36. data/spec/spec_helper/active_record.rb +8 -0
  37. data/spec/spec_helper/models.rb +0 -0
  38. data/spec/spec_helper/rspec.rb +3 -0
  39. data/spec/spec_helper.rb +19 -0
  40. metadata +129 -0
@@ -0,0 +1,190 @@
1
+ require 'spec_helper'
2
+
3
+ _DEFAULT_STORE_PATH = File.join(File.dirname(__FILE__), '../../../sample')
4
+
5
+ describe WelltreatStoreFramework::Core do
6
+
7
+ describe '.setup' do
8
+ it 'should pass configuration object' do
9
+ subject.class.setup do |config|
10
+ config.should be_instance_of WelltreatStoreFramework::Configuration
11
+ end
12
+ end
13
+
14
+ it 'should set store_path' do
15
+ subject.class.setup do |config|
16
+ config.store_path = 'abcdef'
17
+ end
18
+
19
+ subject.class.configuration.store_path.should == 'abcdef'
20
+ end
21
+ end
22
+
23
+ describe '.find_stores' do
24
+ before do
25
+ WelltreatStoreFramework::Core.setup do |config|
26
+ config.store_path = _DEFAULT_STORE_PATH
27
+ end
28
+ end
29
+
30
+ subject { WelltreatStoreFramework::Core.find_stores }
31
+
32
+ it { should be_an Hash }
33
+ its('values.first') { should be_a WelltreatStoreFramework::StoreApp }
34
+ end
35
+
36
+ describe '.find_store_by_name' do
37
+ context 'when store exists' do
38
+ before do
39
+ WelltreatStoreFramework::Core.setup do |config|
40
+ config.store_path = _DEFAULT_STORE_PATH
41
+ end
42
+ end
43
+
44
+ subject { WelltreatStoreFramework::Core.find_store_by_name('hello-store') }
45
+
46
+ it { should be_a WelltreatStoreFramework::StoreApp }
47
+ end
48
+
49
+ context 'when store does not exist' do
50
+ before do
51
+ WelltreatStoreFramework::Core.reset!
52
+ WelltreatStoreFramework::Core.setup do |config|
53
+ config.store_path = 'invalid-path'
54
+ end
55
+ end
56
+
57
+ subject { WelltreatStoreFramework::Core.find_store_by_name('hello-store') }
58
+
59
+ it { should be_nil }
60
+ end
61
+ end
62
+
63
+ describe WelltreatStoreFramework::StoreApp do
64
+ before do
65
+ WelltreatStoreFramework::Core.reset!
66
+ WelltreatStoreFramework::Core.setup do |config|
67
+ config.store_path = _DEFAULT_STORE_PATH
68
+ end
69
+ end
70
+
71
+ let(:store) {
72
+ s = mock()
73
+ s.stub(:id).and_return(3)
74
+ s
75
+ }
76
+ let(:app) { WelltreatStoreFramework::Core.find_store_by_name('hello-store', store) }
77
+ subject { app }
78
+
79
+ it 'should have partition_object accessor' do
80
+ subject.respond_to?(:partition_object).should be
81
+ subject.respond_to?(:partition_object=).should be
82
+ end
83
+
84
+ it 'should set partition object id to all models' do
85
+ subject.models.constants.each do |_c|
86
+ subject.models.const_get(_c).flexi_partition_id.should be == 3
87
+ end
88
+ end
89
+
90
+ # Attributes
91
+ [:name, :controllers_path, :models_path, :config_path, :assets_path, :path].each do |_attr|
92
+ its(_attr) { should be }
93
+ end
94
+
95
+ its(:name) { should == 'hello-store' }
96
+ its(:config_path) { should == File.join(_DEFAULT_STORE_PATH, 'hello-store', 'config') }
97
+ its(:controllers_path) { should == File.join(_DEFAULT_STORE_PATH, 'hello-store', 'controllers') }
98
+ its(:models_path) { should == File.join(_DEFAULT_STORE_PATH, 'hello-store', 'models') }
99
+ its(:views_path) { should == File.join(_DEFAULT_STORE_PATH, 'hello-store', 'views') }
100
+
101
+ # Methods
102
+ [:start, :stop, :restart].each do |_method|
103
+ it "should have `#{_method}`" do
104
+ subject.respond_to?(_method).should be
105
+ end
106
+ end
107
+
108
+ describe '#start' do
109
+ before do
110
+ WelltreatStoreFramework::Core.reset!
111
+ WelltreatStoreFramework::Core.setup do |config|
112
+ config.store_path = _DEFAULT_STORE_PATH
113
+ end
114
+ end
115
+
116
+ let(:app) { WelltreatStoreFramework::Core.find_store_by_name('hello-store') }
117
+ subject { app }
118
+
119
+ its(:start) { should be }
120
+
121
+ describe 'initiated module' do
122
+ subject { app.send(:_base_module) }
123
+
124
+ it { should be_a Module }
125
+ its(:name) { should match /^WelltreatStoreFramework::StoreApp::HelloStoreAppStack$/ }
126
+
127
+ [:Controllers, :Models].each do |_const|
128
+ it "should have defined constant #{_const}" do
129
+ subject.const_defined?(_const).should be
130
+ end
131
+ end
132
+
133
+ describe ':Controllers' do
134
+ subject { app.send(:_base_module)::Controllers }
135
+
136
+ it 'should have defined Products' do
137
+ subject.const_defined?(:Products).should be
138
+ end
139
+
140
+ it 'should define products as class' do
141
+ subject::Products.should be_a Class
142
+ end
143
+ end
144
+
145
+ describe ':Models' do
146
+ subject { app.send(:_base_module)::Models }
147
+
148
+ it 'should have defined models' do
149
+ subject.const_defined?(:Product).should be
150
+ end
151
+ end
152
+ end
153
+ end
154
+
155
+ describe '#stop' do
156
+ before do
157
+ WelltreatStoreFramework::Core.reset!
158
+ WelltreatStoreFramework::Core.setup do |config|
159
+ config.store_path = _DEFAULT_STORE_PATH
160
+ end
161
+ end
162
+
163
+ let(:app) { WelltreatStoreFramework::Core.find_store_by_name('hello-store') }
164
+ before { app.start }
165
+
166
+ context 'before stop' do
167
+ it 'should have module' do
168
+ app.instance_variable_get(:@_base_module).should be
169
+ app.send(:_base_module).should be_a Module
170
+ app.send(:_base_module)::Controllers.should be_a Module
171
+ app.send(:_base_module)::Models.should be_a Module
172
+ end
173
+ end
174
+
175
+ context 'after stop' do
176
+ before { app.stop }
177
+
178
+ it 'should dispose module' do
179
+ app.instance_variable_get(:@_base_module).should be_nil
180
+ end
181
+
182
+ it 'should return true on successful stop' do
183
+ app.start
184
+ app.stop.should be
185
+ end
186
+ end
187
+ end
188
+ end
189
+
190
+ end
@@ -0,0 +1,73 @@
1
+ require 'spec_helper'
2
+
3
+ _DEFAULT_STORE_PATH = File.join(File.dirname(__FILE__), '../../../sample')
4
+
5
+ describe WelltreatStoreFramework::HamlRenderer::Context do
6
+
7
+ before do
8
+ WelltreatStoreFramework::Core.reset!
9
+ WelltreatStoreFramework::Core.setup do |config|
10
+ config.store_path = _DEFAULT_STORE_PATH
11
+ config.auto_reload = true
12
+ end
13
+ end
14
+
15
+ let(:app) { WelltreatStoreFramework::Core.find_store_by_name('hello-store') }
16
+ let(:request) { WelltreatStoreFramework::Controller::Request.new }
17
+ let(:response) { WelltreatStoreFramework::Controller::Response.new }
18
+ let(:context) { WelltreatStoreFramework::HamlRenderer::Context.new(app, request, response) }
19
+
20
+ describe '#image_tag' do
21
+ it 'should render img tag' do
22
+ context.image_tag("abc.png").should == "<img src='/assets/images/abc.png' />"
23
+ end
24
+
25
+ it 'should add attributes' do
26
+ context.image_tag("abc.png", alt: "hi").should == "<img alt='hi' src='/assets/images/abc.png' />"
27
+ end
28
+
29
+ it 'should not prepend /assets if already path started with slash' do
30
+ context.image_tag('/abc.png').should == "<img src='/abc.png' />"
31
+ end
32
+ end
33
+
34
+ describe '#link_to' do
35
+ it 'should render link tag' do
36
+ context.link_to("Label", "http://abc.com").should == "<a href='http://abc.com'>Label</a>"
37
+ end
38
+
39
+ it 'should render link tag with attributes' do
40
+ context.link_to("Label", "http://abc.com", id: 'hola').should == "<a id='hola' href='http://abc.com'>Label</a>"
41
+ end
42
+ end
43
+
44
+ describe '#stylesheet_link_tag' do
45
+ it 'should render link tag' do
46
+ context.stylesheet_link_tag("abc", "def").should ==
47
+ %{<link rel='stylesheet' type='text/css' href='/assets/stylesheets/abc.css' /><link rel='stylesheet' type='text/css' href='/assets/stylesheets/def.css' />}
48
+ end
49
+ end
50
+
51
+ describe '#javascript_include_tag' do
52
+ it 'should render script tag' do
53
+ context.javascript_include_tag('abc', 'def').should ==
54
+ %{<script type='text/javascript' src='/assets/javascripts/abc.js'></script><script type='text/javascript' src='/assets/javascripts/def.js'></script>}
55
+ end
56
+ end
57
+
58
+ describe '#truncate' do
59
+ it 'should truncate text' do
60
+ context.truncate("hi" * 100, :length => 5).should == 'hihih'
61
+ end
62
+ end
63
+
64
+ describe '#lorem' do
65
+ it 'should return a line'
66
+ end
67
+
68
+ describe '#strip_tags' do
69
+ it 'should strip tags' do
70
+ context.strip_tags("<a>Hola</a>").should == 'Hola'
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,85 @@
1
+ require 'spec_helper'
2
+
3
+ _DEFAULT_STORE_PATH = File.join(File.dirname(__FILE__), '../../../sample')
4
+
5
+ describe WelltreatStoreFramework::StoreApp do
6
+ before do
7
+ WelltreatStoreFramework::Core.reset!
8
+ WelltreatStoreFramework::Core.setup do |config|
9
+ config.store_path = _DEFAULT_STORE_PATH
10
+ config.auto_reload = true
11
+ end
12
+ end
13
+
14
+ let(:app) { WelltreatStoreFramework::Core.find_store_by_name('hello-store') }
15
+ before { app.start }
16
+
17
+ describe '#dispatch' do
18
+ let(:request) { WelltreatStoreFramework::Controller::Request.new }
19
+ let(:response) { WelltreatStoreFramework::Controller::Response.new }
20
+
21
+ it 'should not throw any exception' do
22
+ lambda {
23
+ app.dispatch('/', request, response)
24
+ }.should_not raise_error
25
+ end
26
+
27
+ describe 'response object' do
28
+ before { app.dispatch('/', request, response) }
29
+ subject { response }
30
+
31
+ its(:template) { should == :index }
32
+ its(:layout) { should == :default }
33
+ its(:values) { subject[:title].should == 'Hello World' }
34
+ its(:values) { subject[:name].should == 'Hasan' }
35
+ its(:status) { should == 200 }
36
+ end
37
+
38
+ describe 'rendered content' do
39
+ before { app.dispatch('/', request, response) }
40
+ before { app.render!(request, response) }
41
+ subject { response }
42
+
43
+ its(:content) { should match 'Hasan' }
44
+ its(:content) { should match 'Hello World' }
45
+ end
46
+
47
+ describe 'product controller' do
48
+ before { app.dispatch('/products', request, response) }
49
+ before { app.render!(request, response) }
50
+ subject { response }
51
+
52
+ its(:template) { should == :index }
53
+ its(:layout) { should == :default }
54
+ its(:content) { should match "Product 1" }
55
+ its(:content) { should match "Product 2" }
56
+ its(:content) { should match "<!DOCTYPE html>" }
57
+ end
58
+
59
+ context 'auto reload enabled' do
60
+ it 'should have same base module name' do
61
+ _old_app_mod = app.send(:_base_module).name
62
+ app.dispatch('/', request, response)
63
+
64
+ app.send(:_base_module).name.should eql _old_app_mod
65
+ end
66
+
67
+ it 'should have different base object_id' do
68
+ _old_app_mod_id = app.send(:_base_module).object_id
69
+ app.dispatch('/', request, response)
70
+
71
+ app.send(:_base_module).object_id.should_not eql _old_app_mod_id
72
+ end
73
+
74
+ end
75
+
76
+ context 'not found url' do
77
+ before { app.dispatch('/Something does not exists', request, response) }
78
+ before { app.render!(request, response) }
79
+ subject { response }
80
+
81
+ its(:content) { should match /not\s*found/i }
82
+ end
83
+ end
84
+
85
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe WelltreatStoreFramework do
4
+
5
+ end
@@ -0,0 +1,140 @@
1
+ require 'spec_helper'
2
+
3
+ _DEFAULT_STORE_PATH = File.join(File.dirname(__FILE__), '../../../sample')
4
+
5
+ describe 'SampleApp::HelloStore' do
6
+ before do
7
+ WelltreatStoreFramework::Core.reset!
8
+ WelltreatStoreFramework::Core.setup do |config|
9
+ config.store_path = _DEFAULT_STORE_PATH
10
+ end
11
+ end
12
+
13
+ let(:request) { WelltreatStoreFramework::Controller::Request.new }
14
+ let(:response) { WelltreatStoreFramework::Controller::Response.new }
15
+
16
+ before(:each) do
17
+ request = WelltreatStoreFramework::Controller::Request.new
18
+ response = WelltreatStoreFramework::Controller::Response.new
19
+ end
20
+
21
+ let(:app) { WelltreatStoreFramework::Core.find_store_by_name('hello-store') }
22
+
23
+ before { app.start }
24
+
25
+ describe 'controllers' do
26
+ describe '/' do
27
+ it 'should render without error' do
28
+ lambda {
29
+ app.dispatch('/', request, response)
30
+ }.should_not raise_error
31
+ end
32
+
33
+ describe 'after rendered' do
34
+ before {
35
+ app.models::Product.destroy_all
36
+ }
37
+ let!(:products) {
38
+ 5.times.map { |i|
39
+ app.models::Product.create(
40
+ name: "Product #{i}",
41
+ description: "Prod description #{i}",
42
+ price: (500 * (i + 1)),
43
+ available: true
44
+ )
45
+ }
46
+ }
47
+
48
+ before { app.dispatch('/', request, response) }
49
+ subject { response }
50
+
51
+ its([:products]) { should be }
52
+ its([:title]) { should be }
53
+ its([:products]) { subject.map(&:_id).should == products.map(&:_id) }
54
+
55
+ describe 'rendered content' do
56
+ before { app.render!(request, response) }
57
+ subject { response.content }
58
+
59
+ it 'should have rendered products' do
60
+ products.each do |product|
61
+ subject.should match product.name
62
+ subject.should match product.description
63
+ subject.should match product.price.to_s
64
+ subject.should match "It's in stock"
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+
71
+ describe '/products/show' do
72
+ before {
73
+ app.models::Product.destroy_all
74
+ }
75
+
76
+ let!(:products) {
77
+ 5.times.map { |i|
78
+ app.models::Product.create(
79
+ name: "Product #{i}",
80
+ description: "Prod description #{i}",
81
+ price: (500 * (i + 1)),
82
+ available: true
83
+ )
84
+ }
85
+ }
86
+
87
+ before { products.first.update_attribute :available, false }
88
+
89
+ context 'when valid product id' do
90
+ it 'should render without any problem' do
91
+ lambda {
92
+ app.dispatch("/products/show/#{products.first._id}", request, response)
93
+ }.should_not raise_error
94
+ end
95
+
96
+ describe 'before rendered' do
97
+ before { app.dispatch("/products/show/#{products.first._id}", request, response) }
98
+ subject { response }
99
+
100
+ its([:product]) { should be }
101
+
102
+ it 'should render without any error' do
103
+ lambda {
104
+ app.render!(request, response)
105
+ }.should_not raise_error
106
+ end
107
+
108
+ describe 'after rendered' do
109
+ before { app.render!(request, response) }
110
+ subject { response.content }
111
+
112
+ it { should match products.first.name }
113
+ it { should match products.first.description }
114
+ it { should match products.first.price.to_s }
115
+ it { should match "It's outta stock" }
116
+ end
117
+ end
118
+ end
119
+ end
120
+
121
+ context 'relationships' do
122
+ describe '/products/reviews/:product_id' do
123
+ it 'should render without any error'
124
+ it 'should assign product variable'
125
+ it 'should assign reviews variable'
126
+ end
127
+
128
+ describe '/products/create_reviews/:product_id' do
129
+ it 'should render without any error'
130
+ it 'should create new review'
131
+ it 'should redirect to product page'
132
+ end
133
+ end
134
+
135
+ end
136
+
137
+ describe 'models'
138
+
139
+ describe 'views'
140
+ end
@@ -0,0 +1,8 @@
1
+ ActiveRecord::Base.establish_connection(
2
+ :adapter => "sqlite3",
3
+ :database => ':memory:',
4
+ :pool => 5,
5
+ :timeout => 5000
6
+ )
7
+
8
+ require File.join(File.dirname(__FILE__), '..', 'fixtures', 'schema.rb')
File without changes
@@ -0,0 +1,3 @@
1
+ RSpec.configure do |config|
2
+ config.mock_with :rspec
3
+ end
@@ -0,0 +1,19 @@
1
+ ENV["ENVIRONMENT"] ||= 'test'
2
+
3
+ require "rubygems"
4
+ require "bundler"
5
+ require 'active_record'
6
+
7
+ Bundler.load
8
+
9
+ require 'rspec/autorun'
10
+ Dir.glob(File.join('spec', 'factories', '*')).each { |f| require f }
11
+
12
+ require 'spec_helper/active_record'
13
+ require 'spec_helper/rspec'
14
+ require 'spec_helper/models'
15
+
16
+ require 'haml'
17
+ require 'flexi_model'
18
+ require 'welltreat_store_framework'
19
+
metadata ADDED
@@ -0,0 +1,129 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: welltreat-store-framework
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - nhm tanveer hossain khan
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-07-10 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: jeweler
16
+ requirement: &2157029520 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2157029520
25
+ - !ruby/object:Gem::Dependency
26
+ name: activesupport
27
+ requirement: &2157028760 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 3.2.0
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *2157028760
36
+ - !ruby/object:Gem::Dependency
37
+ name: haml
38
+ requirement: &2157028200 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *2157028200
47
+ - !ruby/object:Gem::Dependency
48
+ name: flexi_model
49
+ requirement: &2157027720 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *2157027720
58
+ description: WellTreat Store Framework
59
+ email:
60
+ - hasan83bd@gmail.com
61
+ executables: []
62
+ extensions: []
63
+ extra_rdoc_files:
64
+ - README.md
65
+ files:
66
+ - lib/generators/flexi_model/install/install_generator.rb
67
+ - lib/generators/flexi_model/install/templates/create_flexi_model_collections.rb
68
+ - lib/generators/flexi_model/install/templates/create_flexi_model_collections_fields.rb
69
+ - lib/generators/flexi_model/install/templates/create_flexi_model_fields.rb
70
+ - lib/generators/flexi_model/install/templates/create_flexi_model_records.rb
71
+ - lib/generators/flexi_model/install/templates/create_flexi_model_values.rb
72
+ - lib/welltreat_store_framework.rb
73
+ - lib/welltreat_store_framework/configuration.rb
74
+ - lib/welltreat_store_framework/controller.rb
75
+ - lib/welltreat_store_framework/core.rb
76
+ - lib/welltreat_store_framework/haml_renderer.rb
77
+ - lib/welltreat_store_framework/haml_renderer/lorem_helper.rb
78
+ - lib/welltreat_store_framework/haml_renderer/partial.rb
79
+ - lib/welltreat_store_framework/haml_renderer/paths.rb
80
+ - lib/welltreat_store_framework/haml_renderer/tags_helper.rb
81
+ - lib/welltreat_store_framework/rack_server.rb
82
+ - lib/welltreat_store_framework/store_app.rb
83
+ - sample/hello-store/assets/javascripts/app.js
84
+ - sample/hello-store/controllers/home.rb
85
+ - sample/hello-store/controllers/products.rb
86
+ - sample/hello-store/models/product.rb
87
+ - sample/hello-store/mount.rb
88
+ - sample/hello-store/views/home/index.haml
89
+ - sample/hello-store/views/layouts/default.html.haml
90
+ - sample/hello-store/views/products/_product.html.haml
91
+ - sample/hello-store/views/products/index.haml
92
+ - sample/hello-store/views/products/show.html.haml
93
+ - spec/fixtures/schema.rb
94
+ - spec/lib/welltreat_store_framework/configuration_spec.rb
95
+ - spec/lib/welltreat_store_framework/core_spec.rb
96
+ - spec/lib/welltreat_store_framework/haml_renderer/context_spec.rb
97
+ - spec/lib/welltreat_store_framework/store_app_spec.rb
98
+ - spec/lib/welltreat_store_framework_spec.rb
99
+ - spec/sample/controllers/products_spec.rb
100
+ - spec/spec_helper.rb
101
+ - spec/spec_helper/active_record.rb
102
+ - spec/spec_helper/models.rb
103
+ - spec/spec_helper/rspec.rb
104
+ - README.md
105
+ homepage: https://github.com/we4tech/welltreat-store-framework/
106
+ licenses: []
107
+ post_install_message:
108
+ rdoc_options: []
109
+ require_paths:
110
+ - lib
111
+ required_ruby_version: !ruby/object:Gem::Requirement
112
+ none: false
113
+ requirements:
114
+ - - ! '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ none: false
119
+ requirements:
120
+ - - ! '>='
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ requirements: []
124
+ rubyforge_project:
125
+ rubygems_version: 1.8.10
126
+ signing_key:
127
+ specification_version: 3
128
+ summary: Build store just like your another web development project.
129
+ test_files: []