todo_rails 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +37 -0
  4. data/Rakefile +40 -0
  5. data/app/assets/javascripts/todo_rails/angular-init.coffee +15 -0
  6. data/app/assets/javascripts/todo_rails/application.coffee +7 -0
  7. data/app/assets/javascripts/todo_rails/controllers/todoCtrl.coffee +30 -0
  8. data/app/assets/stylesheets/scaffold.css +56 -0
  9. data/app/assets/stylesheets/todo_rails/application.css.scss +213 -0
  10. data/app/controllers/todo_rails/application_controller.rb +9 -0
  11. data/app/controllers/todo_rails/index_controller.rb +8 -0
  12. data/app/controllers/todo_rails/tasks_controller.rb +55 -0
  13. data/app/helpers/todo_rails/application_helper.rb +4 -0
  14. data/app/helpers/todo_rails/index_helper.rb +4 -0
  15. data/app/helpers/todo_rails/tasks_helper.rb +4 -0
  16. data/app/models/todo_rails/task.rb +4 -0
  17. data/app/views/layouts/todo_rails/application.html.haml +18 -0
  18. data/app/views/todo_rails/index/index.haml +16 -0
  19. data/config/initializers/bower_rails.rb +19 -0
  20. data/config/routes.rb +4 -0
  21. data/db/migrate/20150729111534_create_todo_rails_tasks.rb +13 -0
  22. data/lib/tasks/todo_rails_tasks.rake +4 -0
  23. data/lib/todo_rails/engine.rb +17 -0
  24. data/lib/todo_rails/version.rb +3 -0
  25. data/lib/todo_rails.rb +4 -0
  26. data/test/controllers/todo_rails/index_controller_test.rb +15 -0
  27. data/test/controllers/todo_rails/tasks_controller_test.rb +52 -0
  28. data/test/dummy/README.rdoc +28 -0
  29. data/test/dummy/Rakefile +6 -0
  30. data/test/dummy/app/assets/javascripts/application.js +13 -0
  31. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  32. data/test/dummy/app/controllers/application_controller.rb +5 -0
  33. data/test/dummy/app/helpers/application_helper.rb +2 -0
  34. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  35. data/test/dummy/bin/bundle +3 -0
  36. data/test/dummy/bin/rails +4 -0
  37. data/test/dummy/bin/rake +4 -0
  38. data/test/dummy/bin/setup +29 -0
  39. data/test/dummy/config/application.rb +26 -0
  40. data/test/dummy/config/boot.rb +5 -0
  41. data/test/dummy/config/database.yml +25 -0
  42. data/test/dummy/config/environment.rb +5 -0
  43. data/test/dummy/config/environments/development.rb +41 -0
  44. data/test/dummy/config/environments/production.rb +79 -0
  45. data/test/dummy/config/environments/test.rb +42 -0
  46. data/test/dummy/config/initializers/assets.rb +11 -0
  47. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  48. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  49. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  50. data/test/dummy/config/initializers/inflections.rb +16 -0
  51. data/test/dummy/config/initializers/mime_types.rb +4 -0
  52. data/test/dummy/config/initializers/session_store.rb +3 -0
  53. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  54. data/test/dummy/config/locales/en.yml +23 -0
  55. data/test/dummy/config/routes.rb +4 -0
  56. data/test/dummy/config/secrets.yml +22 -0
  57. data/test/dummy/config.ru +4 -0
  58. data/test/dummy/db/development.sqlite3 +0 -0
  59. data/test/dummy/db/schema.rb +26 -0
  60. data/test/dummy/log/development.log +10 -0
  61. data/test/dummy/public/404.html +67 -0
  62. data/test/dummy/public/422.html +67 -0
  63. data/test/dummy/public/500.html +66 -0
  64. data/test/dummy/public/favicon.ico +0 -0
  65. data/test/fixtures/todo_rails/tasks.yml +15 -0
  66. data/test/integration/navigation_test.rb +10 -0
  67. data/test/models/todo_rails/task_test.rb +9 -0
  68. data/test/test_helper.rb +20 -0
  69. data/test/todo_rails_test.rb +7 -0
  70. metadata +227 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b1a9be8af5ff36eb5aad57c29f54706c41913828
4
+ data.tar.gz: 261c2d0354496615ff584e758a2d87c042edef70
5
+ SHA512:
6
+ metadata.gz: cbed0d7fe59b75eab20bfc6bde5dc9edfbbac2457772d359ca419757d7cdf3bfc0932ec62b4f11cfb81849647555372e8a3e679081d4fd7cd7ceef0653dac00c
7
+ data.tar.gz: 77853c93caac5ef43d5e0a6fa7a3f17a99d8affc03b115f0efb030f8d98441bf58e29f11f1f6cd9e52089e5893f6b64b26a09ec3c11ce6c24b245c2719b49106
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2015 goooseman
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,37 @@
1
+ # TODO-Rails
2
+
3
+ Make a simple TODO app on your web app with just two line of codes. It is really easy to share your tasks about your web app with other with this app.
4
+
5
+
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+
13
+ gem 'todo-rails'
14
+
15
+ ```
16
+
17
+ And then execute:
18
+
19
+ $ bundle
20
+
21
+ Run
22
+ ``` ruby
23
+ rake db:migrate
24
+ ```
25
+
26
+ Add
27
+ ``` ruby
28
+ mount TodoRails::Engine => "/todos", as: 'todo'
29
+ ```
30
+ to your ``` routes.rb ``` and open ``` http://localhost:3000/todos ```.
31
+
32
+
33
+ ## TODO:
34
+ * Comments
35
+ * Archieve items
36
+ * The name of the person, whom this task belongs to
37
+ * Date and time
data/Rakefile ADDED
@@ -0,0 +1,40 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'TodoRails'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.rdoc')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+ spec = Gem::Specification.find_by_name 'bower-rails'
18
+ load "#{spec.gem_dir}/lib/tasks/bower.rake"
19
+
20
+ APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
21
+ load 'rails/tasks/engine.rake'
22
+
23
+
24
+ load 'rails/tasks/statistics.rake'
25
+
26
+
27
+
28
+ Bundler::GemHelper.install_tasks
29
+
30
+ require 'rake/testtask'
31
+
32
+ Rake::TestTask.new(:test) do |t|
33
+ t.libs << 'lib'
34
+ t.libs << 'test'
35
+ t.pattern = 'test/**/*_test.rb'
36
+ t.verbose = false
37
+ end
38
+
39
+
40
+ task default: :test
@@ -0,0 +1,15 @@
1
+ app = angular.module 'todoRails', [
2
+ 'todoRails.controllers'
3
+ 'ngMaterial'
4
+ 'restangular'
5
+ ]
6
+ app.config ($mdThemingProvider, $mdIconProvider, RestangularProvider) ->
7
+ $mdThemingProvider.theme('default')
8
+ .primaryPalette('blue')
9
+ .accentPalette('red');
10
+
11
+ ## Restangular config
12
+ RestangularProvider.setBaseUrl "#{window.location.href}/"
13
+ RestangularProvider.setRequestSuffix '.json'
14
+
15
+ angular.module('todoRails.controllers', [])
@@ -0,0 +1,7 @@
1
+ #= require angular/angular.js
2
+ #= require lodash/lodash.js
3
+ #= require restangular/dist/restangular.js
4
+ #= require angular-animate/angular-animate
5
+ #= require angular-aria/angular-aria
6
+ #= require angular-material/angular-material.js
7
+ #= require_tree .
@@ -0,0 +1,30 @@
1
+ # angular.module('todoRails.controllers').controller 'todoCtrl', ($scope, $log, Restangular) ->
2
+ # $scope.todos = Restangular.all('tasks').getList().$object
3
+ # $log.log $scope.todos
4
+
5
+
6
+ angular.module('todoRails.controllers').controller 'todoCtrl', [
7
+ '$scope', 'Restangular'
8
+ ($scope, Restangular) ->
9
+ todos = Restangular.all('tasks')
10
+
11
+ $scope.reload = ->
12
+ $scope.todos = todos.getList().$object
13
+
14
+ $scope.reload()
15
+
16
+ $scope.addTodo = ->
17
+ todo =
18
+ task:
19
+ title: $scope.todoText
20
+ completed: false
21
+ todos.post todo
22
+ $scope.todoText = ''
23
+ $scope.reload()
24
+
25
+ $scope.remaining = ->
26
+ count = 0
27
+ angular.forEach $scope.todos, (todo) ->
28
+ count += if todo.completed then 0 else 1
29
+ count
30
+ ]
@@ -0,0 +1,56 @@
1
+ body { background-color: #fff; color: #333; }
2
+
3
+ body, p, ol, ul, td {
4
+ font-family: verdana, arial, helvetica, sans-serif;
5
+ font-size: 13px;
6
+ line-height: 18px;
7
+ }
8
+
9
+ pre {
10
+ background-color: #eee;
11
+ padding: 10px;
12
+ font-size: 11px;
13
+ }
14
+
15
+ a { color: #000; }
16
+ a:visited { color: #666; }
17
+ a:hover { color: #fff; background-color:#000; }
18
+
19
+ div.field, div.actions {
20
+ margin-bottom: 10px;
21
+ }
22
+
23
+ #notice {
24
+ color: green;
25
+ }
26
+
27
+ .field_with_errors {
28
+ padding: 2px;
29
+ background-color: red;
30
+ display: table;
31
+ }
32
+
33
+ #error_explanation {
34
+ width: 450px;
35
+ border: 2px solid red;
36
+ padding: 7px;
37
+ padding-bottom: 0;
38
+ margin-bottom: 20px;
39
+ background-color: #f0f0f0;
40
+ }
41
+
42
+ #error_explanation h2 {
43
+ text-align: left;
44
+ font-weight: bold;
45
+ padding: 5px 5px 5px 15px;
46
+ font-size: 12px;
47
+ margin: -7px;
48
+ margin-bottom: 0px;
49
+ background-color: #c00;
50
+ color: #fff;
51
+ }
52
+
53
+ #error_explanation ul li {
54
+ font-size: 12px;
55
+ list-style: square;
56
+ }
@@ -0,0 +1,213 @@
1
+ /*
2
+ *= require angular-material/angular-material.css
3
+ */
4
+
5
+ @import url(http://fonts.googleapis.com/css?family=Roboto:400,300,400italic,500,700&subset=latin,cyrillic);
6
+
7
+
8
+ html,
9
+ body
10
+ {
11
+ font-family: 'Roboto', sans-serif;
12
+ font-size: 14px;
13
+
14
+ height: 100%;
15
+ margin: 0;
16
+ padding: 0;
17
+ }
18
+ ul
19
+ {
20
+ list-style: none;
21
+ }
22
+
23
+ /* Toolbar area */
24
+
25
+ .menu
26
+ {
27
+ position: absolute;
28
+ top: 0;
29
+ left: 0;
30
+
31
+ width: 36px;
32
+ height: 38px;
33
+ margin: 16px;
34
+
35
+ border: none;
36
+ background-color: transparent;
37
+ }
38
+
39
+ md-toolbar h1
40
+ {
41
+ position: relative;
42
+
43
+ margin: auto;
44
+ }
45
+
46
+ @media (min-width: 800px)
47
+ {
48
+ #mainBody
49
+ {
50
+ width: 800px;
51
+ }
52
+ }
53
+
54
+ @media (max-width: 799px)
55
+ {
56
+ #mainBody
57
+ {
58
+ width: 100%;
59
+ }
60
+ }
61
+ #mainBody
62
+ {
63
+ min-width: 340px;
64
+ }
65
+
66
+
67
+ md-content
68
+ {
69
+ width: 100%;
70
+ }
71
+ .listHeader
72
+ {
73
+ color: grey;
74
+ }
75
+ /* Sidenav area */
76
+
77
+ md-list .md-button
78
+ {
79
+ font-weight: 500;
80
+
81
+ width: 100%;
82
+
83
+ text-align: left;
84
+
85
+ color: inherit;
86
+ }
87
+ md-list .md-button.selected
88
+ {
89
+ color: #03a9f4;
90
+ }
91
+
92
+ md-sidenav md-list
93
+ {
94
+ padding: 0 0 8px 0;
95
+ }
96
+
97
+
98
+ /* Primary content area */
99
+
100
+ #content
101
+ {
102
+ overflow: hidden;
103
+ }
104
+
105
+ #content
106
+ {
107
+ padding-top: 5px;
108
+ padding-right: 40px;
109
+ padding-left: 40px;
110
+ }
111
+
112
+ #content .md-button.share
113
+ {
114
+ position: absolute;
115
+ top: 10px;
116
+ right: 25px;
117
+
118
+ width: 48px;
119
+ height: 48px;
120
+ margin: 8px auto 16px 0;
121
+
122
+ border: none;
123
+ background-color: transparent;
124
+ }
125
+
126
+ #content md-icon.avatar
127
+ {
128
+ margin-top: 10px;
129
+ }
130
+
131
+ #content .md-button.share > md-icon
132
+ {
133
+ width: 36px;
134
+ height: 36px;
135
+
136
+ fill: black;
137
+ }
138
+
139
+ md-button.menuBtn > md-icon
140
+ {
141
+ width: 24px;
142
+ height: 24px;
143
+
144
+ fill: white;
145
+ }
146
+
147
+ #content .md-button.share:active > md-icon
148
+ {
149
+ padding: 4px;
150
+
151
+ transition: all 100ms ease-out 30ms;
152
+
153
+ border-radius: 75%;
154
+ background-color: #dadada;
155
+ }
156
+
157
+ #content img
158
+ {
159
+ display: block;
160
+
161
+ max-width: 500px;
162
+ height: auto;
163
+ }
164
+
165
+ /* Utils */
166
+
167
+ .content-wrapper
168
+ {
169
+ position: relative;
170
+ }
171
+
172
+ /* Typography support coming in 0.8.0 */
173
+
174
+ md-toolbar h1
175
+ {
176
+ font-size: 1.250em;
177
+ font-weight: 400;
178
+ }
179
+
180
+ .avatar
181
+ {
182
+ position: relative;
183
+
184
+ display: inline-block;
185
+ overflow: hidden;
186
+ zoom: .70;
187
+
188
+ width: 128px;
189
+ height: 128px;
190
+ margin: 0;
191
+
192
+ -webkit-transform: scale(.70);
193
+ -moz-transform: scale(.70);
194
+ transform: translateZ(0);
195
+ vertical-align: middle;
196
+
197
+ border: 1px solid #ddd;
198
+ border-radius: 50%;
199
+ }
200
+
201
+
202
+ md-bottom-sheet md-icon
203
+ {
204
+ margin-right: 20px;
205
+ }
206
+
207
+ span.name
208
+ {
209
+ font-size: 1.1em;
210
+ font-weight: bold;
211
+
212
+ padding-left: 5px;
213
+ }
@@ -0,0 +1,9 @@
1
+ module TodoRails
2
+ class ApplicationController < ActionController::Base
3
+ before_action :set_settings
4
+
5
+ def set_settings
6
+ @config = YAML.load_file(Rails.root.join('config/todo-rails.yml'))
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ require_dependency "todo_rails/application_controller"
2
+
3
+ module TodoRails
4
+ class IndexController < ApplicationController
5
+ def index
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,55 @@
1
+ require_dependency "todo_rails/application_controller"
2
+
3
+ module TodoRails
4
+ class TasksController < ApplicationController
5
+ before_action :set_task, only: [:show, :edit, :update, :destroy]
6
+
7
+ # GET /tasks
8
+ def index
9
+ @tasks = Task.all
10
+ render json: @tasks
11
+ end
12
+
13
+ # GET /tasks/1
14
+ def show
15
+ render json: @task
16
+ end
17
+
18
+ # POST /tasks
19
+ def create
20
+ @task = Task.new(task_params)
21
+
22
+ if @task.save
23
+ render json: @task, status: :created, location: @task
24
+ else
25
+ render json: @task.errors, status: :unprocessable_entity
26
+ end
27
+ end
28
+
29
+ # PATCH/PUT /tasks/1
30
+ def update
31
+ if @task.update(task_params)
32
+ head :no_content
33
+ else
34
+ render json: @task.errors, status: :unprocessable_entity
35
+ end
36
+ end
37
+
38
+ # DELETE /tasks/1
39
+ def destroy
40
+ @task.destroy
41
+ head :no_content
42
+ end
43
+
44
+ private
45
+ # Use callbacks to share common setup or constraints between actions.
46
+ def set_task
47
+ @task = Task.find(params[:id])
48
+ end
49
+
50
+ # Only allow a trusted parameter "white list" through.
51
+ def task_params
52
+ params.require(:task).permit(:title, :completed, :row_order, :priority, :comment)
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,4 @@
1
+ module TodoRails
2
+ module ApplicationHelper
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module TodoRails
2
+ module IndexHelper
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module TodoRails
2
+ module TasksHelper
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module TodoRails
2
+ class Task < ActiveRecord::Base
3
+ end
4
+ end
@@ -0,0 +1,18 @@
1
+ !!!
2
+ %html{ lang: "#{locale}" }
3
+ %head
4
+ %meta{ content: 'text/html; charset=UTF-8',
5
+ 'http-equiv' => 'Content-Type' }/
6
+ %meta{ content: 'IE=edge',
7
+ 'http-equiv' => 'X-UA-Compatible' }/
8
+ %meta{ content: 'initial-scale=1, maximum-scale=1, user-scalable=no',
9
+ name: 'viewport' }/
10
+ %title ToDo
11
+ = stylesheet_link_tag 'todo_rails/application', media: 'all'
12
+ = csrf_meta_tags
13
+ %body{ 'ng-app' => 'todoRails',
14
+ layout: 'column', 'layout-align' => 'center center' }
15
+ %md-toolbar{ layout: 'row', 'layout-align' => 'center' }
16
+ %h2= @config['title']
17
+ = yield
18
+ = javascript_include_tag 'todo_rails/application'
@@ -0,0 +1,16 @@
1
+ #mainBody{ flex: '', layout: 'row', 'ng-controller' => 'todoCtrl' }
2
+ %md-content.md-padding
3
+ %form{ 'ng-submit' => 'addTodo()' }
4
+ %div{ layout: '', 'layout-align-gt-sm' => 'center center' }
5
+ %md-input-container{ flex: '85' }
6
+ %label= @config['add_label']
7
+ %input{ 'ng-model' => 'todoText' }/
8
+ %md-input-container
9
+ %md-button.md-fab{ 'aria-label' => 'Add todo items', type: 'submit' }
10
+ +
11
+ %div
12
+ .listHeader{ flex: '', layout: '', 'layout-align' => 'end end' }= @config['remaining_label']
13
+ %ul
14
+ %li{ 'ng-repeat' => 'todo in todos' }
15
+ %md-checkbox{ 'aria-label' => 'Todo Checkbox',
16
+ 'ng-init' => 'todo.completed=false', 'ng-model' => 'todo.completed' } {{todo.title}}
@@ -0,0 +1,19 @@
1
+ BowerRails.configure do |bower_rails|
2
+ # Tell bower-rails what path should be considered as root. Defaults to Dir.pwd
3
+ # bower_rails.root_path = Dir.pwd
4
+
5
+ # Invokes rake bower:install before precompilation. Defaults to false
6
+ # bower_rails.install_before_precompile = true
7
+
8
+ # Invokes rake bower:resolve before precompilation. Defaults to false
9
+ # bower_rails.resolve_before_precompile = true
10
+
11
+ # Invokes rake bower:clean before precompilation. Defaults to false
12
+ # bower_rails.clean_before_precompile = true
13
+
14
+ # Invokes rake bower:install:deployment instead rake bower:install. Defaults to false
15
+ # bower_rails.use_bower_install_deployment = true
16
+ #
17
+ # Invokes rake bower:install and rake bower:install:deployment with -F (force) flag. Defaults to false
18
+ # bower_rails.force_install = true
19
+ end
data/config/routes.rb ADDED
@@ -0,0 +1,4 @@
1
+ TodoRails::Engine.routes.draw do
2
+ resources :tasks, except: [:new, :edit]
3
+ root 'index#index'
4
+ end
@@ -0,0 +1,13 @@
1
+ class CreateTodoRailsTasks < ActiveRecord::Migration
2
+ def change
3
+ create_table :todo_rails_tasks do |t|
4
+ t.string :title
5
+ t.boolean :completed
6
+ t.integer :row_order
7
+ t.integer :priority
8
+ t.text :comment
9
+
10
+ t.timestamps null: false
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :todo_rails do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,17 @@
1
+ module TodoRails
2
+ class Engine < ::Rails::Engine
3
+
4
+ require 'bower-rails'
5
+
6
+
7
+ isolate_namespace TodoRails
8
+
9
+ initializer :append_migrations do |app|
10
+ unless app.root.to_s.match(root.to_s)
11
+ config.paths["db/migrate"].expanded.each do |p|
12
+ app.config.paths["db/migrate"] << p
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,3 @@
1
+ module TodoRails
2
+ VERSION = "0.1.0"
3
+ end
data/lib/todo_rails.rb ADDED
@@ -0,0 +1,4 @@
1
+ require "todo_rails/engine"
2
+
3
+ module TodoRails
4
+ end
@@ -0,0 +1,15 @@
1
+ require 'test_helper'
2
+
3
+ module TodoRails
4
+ class IndexControllerTest < ActionController::TestCase
5
+ setup do
6
+ @routes = Engine.routes
7
+ end
8
+
9
+ test "should get index" do
10
+ get :index
11
+ assert_response :success
12
+ end
13
+
14
+ end
15
+ end