todo_rails 0.1.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.
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