choco 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/HISTORY CHANGED
@@ -1,3 +1,6 @@
1
+ == 0.1.2 [08-27-10]
2
+ * Add fixtures generate (mock ajax requests)
3
+
1
4
  == 0.1.1 [07-27-10]
2
5
 
3
6
  * Clean generated HTML (indentation)
@@ -50,8 +50,8 @@ Once you've chosen the location where your application will reside, don't forget
50
50
  You can find the line to edit in your application_controller (app/controllers).
51
51
 
52
52
  Example for Rails :
53
-
54
- this.use(Sammy.SmartRenderer, '/javascripts/my_project/app/views/');
53
+
54
+ this.project_path = '/javascripts/my_project';
55
55
 
56
56
  == Jim
57
57
 
@@ -206,6 +206,10 @@ The Choco application will then be launched when all the responses have been rec
206
206
  To create, remove & update posts, you have to create your REST controller on the server side.
207
207
  Have a look at the sample demo for an example (http://github.com/ahe/choco_demo).
208
208
 
209
+ You can also use fixtures instead. Fixtures are located in the /fixtures folder, they use the jquery.mockjax plugin to mock Ajax requests and return the JSON you defined in your fixtures.
210
+
211
+ Use the choco generate fixture command to easily create your fixtures (e.g : $ choco generate fixture post, will mock requests sent to the /posts URL).
212
+
209
213
  = Generators
210
214
 
211
215
  The following code generators are available :
@@ -214,6 +218,7 @@ The following code generators are available :
214
218
  * $ choco generate model <model_name>
215
219
  * $ choco generate scaffold <name> [field1 field2 ...]
216
220
  * $ choco generate scaffold <name> <url>
221
+ * $ choco generate fixture <name>
217
222
  * $ choco generate layout <layout_name>
218
223
  * $ choco generate plugin <plugin_name>
219
224
 
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{choco}
8
- s.version = "0.1.1"
8
+ s.version = "0.1.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Anthony Heukmes"]
12
- s.date = %q{2010-07-27}
12
+ s.date = %q{2010-07-28}
13
13
  s.default_executable = %q{choco}
14
14
  s.description = %q{Choco brings the MVC to the client side! It allows you to easily develop maintainable Rich Internet Applications using Javascript.}
15
15
  s.email = %q{anthony.heukmes@skynet.be}
@@ -32,6 +32,7 @@ Gem::Specification.new do |s|
32
32
  "lib/choco/dependency_manager.rb",
33
33
  "lib/choco/generators/app_generator.rb",
34
34
  "lib/choco/generators/controller_generator.rb",
35
+ "lib/choco/generators/fixture_generator.rb",
35
36
  "lib/choco/generators/layout_generator.rb",
36
37
  "lib/choco/generators/model_generator.rb",
37
38
  "lib/choco/generators/plugin_generator.rb",
@@ -44,6 +45,8 @@ Gem::Specification.new do |s|
44
45
  "lib/choco/generators/templates/controllers/application_controller.js",
45
46
  "lib/choco/generators/templates/controllers/base_controller.js",
46
47
  "lib/choco/generators/templates/controllers/rest_controller.js",
48
+ "lib/choco/generators/templates/fixtures/base.js",
49
+ "lib/choco/generators/templates/fixtures/model/array.js",
47
50
  "lib/choco/generators/templates/help/commands",
48
51
  "lib/choco/generators/templates/help/generators",
49
52
  "lib/choco/generators/templates/helpers/application_helper.js",
@@ -3,13 +3,14 @@ require 'thor/group'
3
3
  require 'active_support/inflector'
4
4
 
5
5
  module Choco
6
- VERSION = '0.1.1'
6
+ VERSION = '0.1.2'
7
7
 
8
8
  autoload :DependencyManager, 'choco/dependency_manager'
9
9
  autoload :CLI, 'choco/cli'
10
10
  autoload :AppGenerator, 'choco/generators/app_generator'
11
11
  autoload :ControllerGenerator, 'choco/generators/controller_generator'
12
12
  autoload :LayoutGenerator, 'choco/generators/layout_generator'
13
+ autoload :FixtureGenerator, 'choco/generators/fixture_generator'
13
14
  autoload :ModelGenerator, 'choco/generators/model_generator'
14
15
  autoload :PluginGenerator, 'choco/generators/plugin_generator'
15
16
  autoload :ScaffoldGenerator, 'choco/generators/scaffold_generator'
@@ -16,6 +16,8 @@ module Choco
16
16
  type = 'Helper'
17
17
  elsif filename.include?('models/')
18
18
  type = 'Model'
19
+ elsif filename.include?('fixtures/')
20
+ type = 'Fixture'
19
21
  else
20
22
  type = 'Libs'
21
23
  end
@@ -40,6 +40,10 @@ module Choco
40
40
  empty_directory "#{name}/stylesheets"
41
41
  template('templates/application.css', "#{name}/stylesheets/application.css")
42
42
  end
43
+
44
+ def create_fixtures_folder
45
+ empty_directory "#{name}/fixtures"
46
+ end
43
47
 
44
48
  def create_spec_folder
45
49
  empty_directory "#{name}/spec"
@@ -0,0 +1,23 @@
1
+ module Choco
2
+ class FixtureGenerator < Thor::Group
3
+ include Thor::Actions
4
+
5
+ def self.source_root
6
+ File.dirname(__FILE__)
7
+ end
8
+
9
+ desc 'Generates Ajax fixtures (mocks)'
10
+ argument :name, :required => true
11
+
12
+ def create_mock_file
13
+ @name = name.underscore.pluralize
14
+ template('templates/fixtures/base.js', "fixtures/#{@name}.js")
15
+ end
16
+
17
+ def create_json_folder
18
+ empty_directory "fixtures/#{@name}"
19
+ template('templates/fixtures/model/array.js', "fixtures/#{@name}/#{@name}.json")
20
+ end
21
+
22
+ end
23
+ end
@@ -10,10 +10,12 @@ sammy.smart_renderer
10
10
  js-model 0.8.3
11
11
  underscore
12
12
  mustache
13
+ jquery.mockjax
13
14
  choco.utils
14
15
  choco.plugins.models.load
15
16
 
16
17
  // Libs # Don't remove this line!
18
+ lib/application
17
19
 
18
20
  // Helpers # Don't remove this line!
19
21
  app/helpers/application_helper
@@ -21,4 +23,6 @@ app/helpers/application_helper
21
23
  // Models # Don't remove this line!
22
24
 
23
25
  // Controllers # Don't remove this line!
24
- app/controllers/application_controller
26
+ app/controllers/application_controller
27
+
28
+ // Fixtures # Don't remove this line!
@@ -14,6 +14,7 @@ namespace :choco do
14
14
  system 'jim install http://github.com/ahe/choco.libs/raw/master/choco.utils.js'
15
15
  system 'jim install http://github.com/ahe/choco.libs/raw/master/plugins/models/choco.plugins.models.load.js'
16
16
  system 'jim install http://github.com/ahe/choco.libs/raw/master/plugins/sammy/choco.plugins.sammy.smart_renderer.js'
17
+ system 'jim install http://github.com/appendto/jquery-mockjax/raw/master/jquery.mockjax.js'
17
18
  system 'jim bundle lib/bundled.js'
18
19
  end
19
20
  end
@@ -2,11 +2,13 @@ var app = $.sammy(function() {
2
2
 
3
3
  this.element_selector = '#choco';
4
4
  this.template_engine = 'template';
5
+ this.project_path = '/<%= name %>';
6
+ this.fixtures = true;
5
7
 
6
8
  // Configure your Sammy JS plugins
7
9
  this.use(Sammy.Template);
8
10
  this.use(Sammy.NestedParams);
9
- this.use(Sammy.SmartRenderer, '/<%= name %>/app/views/');
11
+ this.use(Sammy.SmartRenderer, this.project_path + '/app/views/');
10
12
 
11
13
  // Event fired by the render() method
12
14
  this.bind('template_loaded', function(e, data) {
@@ -0,0 +1,20 @@
1
+ if(app.fixtures) {
2
+ var model = '{ "id": 1, "title": "Hello Choco!" }';
3
+
4
+ $.mockjax({
5
+ url: '/<%= @name %>/*',
6
+ responseText: model
7
+ });
8
+
9
+ $.mockjax({
10
+ url: '/<%= @name %>',
11
+ type: 'POST',
12
+ responseText: model
13
+ });
14
+
15
+ $.mockjax({
16
+ url: '/<%= @name %>',
17
+ type: 'GET',
18
+ proxy: app.project_path + '/fixtures/<%= @name %>/<%= @name %>.json'
19
+ });
20
+ }
@@ -0,0 +1,4 @@
1
+ [
2
+ { "id": 1, "title": "Hello Choco!" },
3
+ { "id": 2, "title": "Hello Sammy!" }
4
+ ]
@@ -7,6 +7,6 @@ The choco script responds to the following commands and options :
7
7
  Your Jimfile will also be maintained by this command.
8
8
 
9
9
  generate <generator_name> <resource_name> [options]
10
- Available generators are : controller, model, scaffold, layout, plugin
10
+ Available generators are : controller, model, scaffold, fixture, layout, plugin
11
11
  Run '$ choco generate', for more information.
12
12
 
@@ -23,6 +23,15 @@ scaffold <url>
23
23
  The fields will be determined from the JSON returned by your URL
24
24
  e.g : http://localhost:3000/posts.json
25
25
 
26
+ fixture
27
+ $ choco generate fixture <resource_name>
28
+
29
+ It will create fixture & JSON files.
30
+ resource_name will be pluralized.
31
+
32
+ $ choco generate fixture post
33
+ Will mock requests sent to /posts
34
+
26
35
  layout
27
36
  $ choco generate layout <layout_name>
28
37
 
@@ -68,6 +68,16 @@ describe Choco::DependencyManager do
68
68
 
69
69
  end
70
70
 
71
+ describe "when it's a fixture" do
72
+
73
+ it "should add an entry in the Jimfile (models section)" do
74
+ in_file('Jimfile', 'fixtures/posts').should == 0
75
+ Choco::DependencyManager.add_dependency('fixtures/posts.js')
76
+ in_file('Jimfile', 'fixtures/posts', "// Fixtures # Don't remove this line!").should == 1
77
+ end
78
+
79
+ end
80
+
71
81
  describe "when it's a lib" do
72
82
 
73
83
  it "should add an entry in the Jimfile (libs section)" do
@@ -42,6 +42,10 @@ describe "Generators" do
42
42
  File.exist?(@project_path + '/stylesheets/application.css').should be_true
43
43
  end
44
44
 
45
+ it "should generate the fixtures folder" do
46
+ File.exist?(@project_path + '/fixtures').should be_true
47
+ end
48
+
45
49
  it "should generate the spec folder" do
46
50
  File.exist?(@project_path + '/spec').should be_true
47
51
  end
@@ -64,7 +68,7 @@ describe "Generators" do
64
68
 
65
69
  it "should set the views path to the project views folder" do
66
70
  file = get_file_as_string(@project_path + '/app/controllers/application_controller.js')
67
- file.include?("this.use(Sammy.SmartRenderer, '/spec/tmp/test_project/app/views/');").should be_true
71
+ file.include?("this.project_path = '/spec/tmp/test_project';").should be_true
68
72
  end
69
73
  end
70
74
 
@@ -188,6 +192,30 @@ describe "Generators" do
188
192
 
189
193
  end
190
194
 
195
+ describe Choco::FixtureGenerator do
196
+ it "should generate a fixture file" do
197
+ Choco::FixtureGenerator.start 'posts'
198
+ File.exist?('fixtures/posts.js').should be_true
199
+ end
200
+
201
+ it "should generate a fixture folder" do
202
+ Choco::FixtureGenerator.start 'posts'
203
+ File.exist?('fixtures/posts').should be_true
204
+ File.exist?('fixtures/posts/posts.json').should be_true
205
+ end
206
+
207
+ describe "templates" do
208
+
209
+ it "the URL should have a correct format" do
210
+ Choco::FixtureGenerator.start 'post'
211
+ file = get_file_as_string('fixtures/posts.js')
212
+ file.include?("url: '/posts',").should be_true
213
+ end
214
+
215
+ end
216
+
217
+ end
218
+
191
219
  describe Choco::PluginGenerator do
192
220
  it "should generate a plugin file" do
193
221
  Choco::PluginGenerator.start 'live'
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 1
9
- version: 0.1.1
8
+ - 2
9
+ version: 0.1.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Anthony Heukmes
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-07-27 00:00:00 +02:00
17
+ date: 2010-07-28 00:00:00 +02:00
18
18
  default_executable: choco
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -102,6 +102,7 @@ files:
102
102
  - lib/choco/dependency_manager.rb
103
103
  - lib/choco/generators/app_generator.rb
104
104
  - lib/choco/generators/controller_generator.rb
105
+ - lib/choco/generators/fixture_generator.rb
105
106
  - lib/choco/generators/layout_generator.rb
106
107
  - lib/choco/generators/model_generator.rb
107
108
  - lib/choco/generators/plugin_generator.rb
@@ -114,6 +115,8 @@ files:
114
115
  - lib/choco/generators/templates/controllers/application_controller.js
115
116
  - lib/choco/generators/templates/controllers/base_controller.js
116
117
  - lib/choco/generators/templates/controllers/rest_controller.js
118
+ - lib/choco/generators/templates/fixtures/base.js
119
+ - lib/choco/generators/templates/fixtures/model/array.js
117
120
  - lib/choco/generators/templates/help/commands
118
121
  - lib/choco/generators/templates/help/generators
119
122
  - lib/choco/generators/templates/helpers/application_helper.js