From 9b1ef63ccf7808096d962ea961f9c8465ab30bf5 Mon Sep 17 00:00:00 2001 From: Leah Bueing Date: Wed, 28 Sep 2016 16:07:32 -0700 Subject: [PATCH 01/10] functioning wave 1 --- .DS_Store | Bin 0 -> 8196 bytes .gitignore | 46 ++--- Gemfile | 47 +++++ Gemfile.lock | 163 ++++++++++++++++++ README.rdoc | 28 +++ Rakefile | 6 + app/.DS_Store | Bin 0 -> 6148 bytes app/assets/images/.keep | 0 app/assets/javascripts/application.js | 16 ++ app/assets/javascripts/tasks.coffee | 3 + app/assets/stylesheets/application.css | 15 ++ app/assets/stylesheets/tasks.scss | 3 + app/controllers/.DS_Store | Bin 0 -> 6148 bytes app/controllers/application_controller.rb | 5 + app/controllers/concerns/.keep | 0 app/controllers/tasks_controller.rb | 48 ++++++ app/helpers/application_helper.rb | 2 + app/helpers/tasks_helper.rb | 2 + app/mailers/.keep | 0 app/models/.keep | 0 app/models/concerns/.keep | 0 app/views/.DS_Store | Bin 0 -> 6148 bytes app/views/layouts/.DS_Store | Bin 0 -> 6148 bytes app/views/layouts/application.html.erb | 14 ++ app/views/tasks/create.html.erb | 2 + app/views/tasks/delete.html.erb | 2 + app/views/tasks/edit.html.erb | 2 + app/views/tasks/index.html.erb | 6 + app/views/tasks/new.html.erb | 2 + app/views/tasks/show.html.erb | 7 + app/views/tasks/update.html.erb | 2 + bin/bundle | 3 + bin/rails | 9 + bin/rake | 9 + bin/setup | 29 ++++ bin/spring | 15 ++ config.ru | 4 + config/application.rb | 26 +++ config/boot.rb | 3 + config/database.yml | 25 +++ config/environment.rb | 5 + config/environments/development.rb | 41 +++++ config/environments/production.rb | 79 +++++++++ config/environments/test.rb | 42 +++++ config/initializers/assets.rb | 11 ++ config/initializers/backtrace_silencers.rb | 7 + config/initializers/cookies_serializer.rb | 3 + .../initializers/filter_parameter_logging.rb | 4 + config/initializers/inflections.rb | 16 ++ config/initializers/mime_types.rb | 4 + config/initializers/session_store.rb | 3 + config/initializers/wrap_parameters.rb | 14 ++ config/locales/en.yml | 23 +++ config/routes.rb | 73 ++++++++ config/secrets.yml | 22 +++ db/seeds.rb | 7 + lib/assets/.keep | 0 lib/tasks/.keep | 0 log/.keep | 0 public/404.html | 67 +++++++ public/422.html | 67 +++++++ public/500.html | 66 +++++++ public/favicon.ico | 0 public/robots.txt | 5 + test/controllers/.keep | 0 test/controllers/tasks_controller_test.rb | 39 +++++ test/fixtures/.keep | 0 test/helpers/.keep | 0 test/integration/.keep | 0 test/mailers/.keep | 0 test/models/.keep | 0 test/test_helper.rb | 10 ++ vendor/assets/javascripts/.keep | 0 vendor/assets/stylesheets/.keep | 0 74 files changed, 1120 insertions(+), 32 deletions(-) create mode 100644 .DS_Store create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 README.rdoc create mode 100644 Rakefile create mode 100644 app/.DS_Store create mode 100644 app/assets/images/.keep create mode 100644 app/assets/javascripts/application.js create mode 100644 app/assets/javascripts/tasks.coffee create mode 100644 app/assets/stylesheets/application.css create mode 100644 app/assets/stylesheets/tasks.scss create mode 100644 app/controllers/.DS_Store create mode 100644 app/controllers/application_controller.rb create mode 100644 app/controllers/concerns/.keep create mode 100644 app/controllers/tasks_controller.rb create mode 100644 app/helpers/application_helper.rb create mode 100644 app/helpers/tasks_helper.rb create mode 100644 app/mailers/.keep create mode 100644 app/models/.keep create mode 100644 app/models/concerns/.keep create mode 100644 app/views/.DS_Store create mode 100644 app/views/layouts/.DS_Store create mode 100644 app/views/layouts/application.html.erb create mode 100644 app/views/tasks/create.html.erb create mode 100644 app/views/tasks/delete.html.erb create mode 100644 app/views/tasks/edit.html.erb create mode 100644 app/views/tasks/index.html.erb create mode 100644 app/views/tasks/new.html.erb create mode 100644 app/views/tasks/show.html.erb create mode 100644 app/views/tasks/update.html.erb create mode 100755 bin/bundle create mode 100755 bin/rails create mode 100755 bin/rake create mode 100755 bin/setup create mode 100755 bin/spring create mode 100644 config.ru create mode 100644 config/application.rb create mode 100644 config/boot.rb create mode 100644 config/database.yml create mode 100644 config/environment.rb create mode 100644 config/environments/development.rb create mode 100644 config/environments/production.rb create mode 100644 config/environments/test.rb create mode 100644 config/initializers/assets.rb create mode 100644 config/initializers/backtrace_silencers.rb create mode 100644 config/initializers/cookies_serializer.rb create mode 100644 config/initializers/filter_parameter_logging.rb create mode 100644 config/initializers/inflections.rb create mode 100644 config/initializers/mime_types.rb create mode 100644 config/initializers/session_store.rb create mode 100644 config/initializers/wrap_parameters.rb create mode 100644 config/locales/en.yml create mode 100644 config/routes.rb create mode 100644 config/secrets.yml create mode 100644 db/seeds.rb create mode 100644 lib/assets/.keep create mode 100644 lib/tasks/.keep create mode 100644 log/.keep create mode 100644 public/404.html create mode 100644 public/422.html create mode 100644 public/500.html create mode 100644 public/favicon.ico create mode 100644 public/robots.txt create mode 100644 test/controllers/.keep create mode 100644 test/controllers/tasks_controller_test.rb create mode 100644 test/fixtures/.keep create mode 100644 test/helpers/.keep create mode 100644 test/integration/.keep create mode 100644 test/mailers/.keep create mode 100644 test/models/.keep create mode 100644 test/test_helper.rb create mode 100644 vendor/assets/javascripts/.keep create mode 100644 vendor/assets/stylesheets/.keep diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..02844549ffad42ff7ec60a277ddbd287bf57f600 GIT binary patch literal 8196 zcmeHM%Wl&^6ur}g)M;4+K}97tUKXjU8bp;Y)6jyts8ltm6{0BEv1zTkcH}q>sEU*| zTQ;nDe+Pmc9{_*QPheNhJkpLGx`ZMz6U|&_=A60LXU2A}Lqx36^QuI%L}a0ITbV}l zo5II=9V-*6X9kvmPt>H8VoJzg5694^!zf@BFbWt2i~>f1e?b8}vw5*Dc<#$l(;5Yg z0{^7~{Qh90a$8q+D6P14pb;qmY!Tg};23#;;MmI6l^seesF+h`4@^;+N->zEW8CI& z*t)VqX(gSQq!Uw~naWU@@D83W;Kb_En${>_6c|^4=k8@%pjG7VEj@pa+in=U7{vv} zwop$_MG;dJ!PujK()Ccs(S3~0X}GBo4%j`4M(+kPoNqZ!fgI{kCp$BbfaXxy=_y(w zg>w7dj*9cA+X;hiy14j*O%#e(N|RQ3YMOs4*QTB{_v3yub<$q9;Utg6x4`pVb-d}M z`=jHBaU7lh4Yud2zoH_ad*m+m!R|1YWw|s?2OA{t>8~ zPULR~-M|gPAbnw#`KML6d3;=3p0}&jJA--qxK>-7x9=`h2ZPEh%er-YX=US4XYlgP z+js9jeEjtJi#T6m>c&Uc<@dAp>$w_7%_IurXb(LcT_6{_M>!?GV?hxVW@pRt|w%j3<=XwepS^a0M0D?E07 zBF^VpoMqtGXa!f~2J8ZK@v^W!TJ)fp9|A%K L(-;N*ssg_NWUEbO literal 0 HcmV?d00001 diff --git a/.gitignore b/.gitignore index 28f484983..050c9d95c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,35 +1,17 @@ -*.gem -*.rbc -/.config -/coverage/ -/InstalledFiles -/pkg/ -/spec/reports/ -/test/tmp/ -/test/version_tmp/ -/tmp/ +# See https://help.github.com/articles/ignoring-files for more about ignoring files. +# +# If you find yourself ignoring temporary files generated by your text editor +# or operating system, you probably want to add a global ignore instead: +# git config --global core.excludesfile '~/.gitignore_global' -## Specific to RubyMotion: -.dat* -.repl_history -build/ +# Ignore bundler config. +/.bundle -## Documentation cache and generated files: -/.yardoc/ -/_yardoc/ -/doc/ -/rdoc/ +# Ignore the default SQLite database. +/db/*.sqlite3 +/db/*.sqlite3-journal -## Environment normalisation: -/.bundle/ -/vendor/bundle -/lib/bundler/man/ - -# for a library or gem, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -# Gemfile.lock -# .ruby-version -# .ruby-gemset - -# unless supporting rvm < 1.11.0 or doing something fancy, ignore this: -.rvmrc +# Ignore all logfiles and tempfiles. +/log/* +!/log/.keep +/tmp diff --git a/Gemfile b/Gemfile new file mode 100644 index 000000000..e87fad5fc --- /dev/null +++ b/Gemfile @@ -0,0 +1,47 @@ +source 'https://rubygems.org' + + +# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' +gem 'rails', '4.2.7' +# Use sqlite3 as the database for Active Record +gem 'sqlite3' +# Use SCSS for stylesheets +gem 'sass-rails', '~> 5.0' +# Use Uglifier as compressor for JavaScript assets +gem 'uglifier', '>= 1.3.0' +# Use CoffeeScript for .coffee assets and views +gem 'coffee-rails', '~> 4.1.0' +# See https://github.com/rails/execjs#readme for more supported runtimes +# gem 'therubyracer', platforms: :ruby + +# Use jquery as the JavaScript library +gem 'jquery-rails' +# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks +gem 'turbolinks' +# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder +gem 'jbuilder', '~> 2.0' +# bundle exec rake doc:rails generates the API under doc/api. +gem 'sdoc', '~> 0.4.0', group: :doc + +# Use ActiveModel has_secure_password +# gem 'bcrypt', '~> 3.1.7' + +# Use Unicorn as the app server +# gem 'unicorn' + +# Use Capistrano for deployment +# gem 'capistrano-rails', group: :development + +group :development, :test do + # Call 'byebug' anywhere in the code to stop execution and get a debugger console + gem 'byebug' +end + +group :development do + # Access an IRB console on exception pages or by using <%= console %> in views + gem 'web-console', '~> 2.0' + + # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring + gem 'spring' +end + diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 000000000..187046034 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,163 @@ +GEM + remote: https://rubygems.org/ + specs: + actionmailer (4.2.7) + actionpack (= 4.2.7) + actionview (= 4.2.7) + activejob (= 4.2.7) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 1.0, >= 1.0.5) + actionpack (4.2.7) + actionview (= 4.2.7) + activesupport (= 4.2.7) + rack (~> 1.6) + rack-test (~> 0.6.2) + rails-dom-testing (~> 1.0, >= 1.0.5) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + actionview (4.2.7) + activesupport (= 4.2.7) + builder (~> 3.1) + erubis (~> 2.7.0) + rails-dom-testing (~> 1.0, >= 1.0.5) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + activejob (4.2.7) + activesupport (= 4.2.7) + globalid (>= 0.3.0) + activemodel (4.2.7) + activesupport (= 4.2.7) + builder (~> 3.1) + activerecord (4.2.7) + activemodel (= 4.2.7) + activesupport (= 4.2.7) + arel (~> 6.0) + activesupport (4.2.7) + i18n (~> 0.7) + json (~> 1.7, >= 1.7.7) + minitest (~> 5.1) + thread_safe (~> 0.3, >= 0.3.4) + tzinfo (~> 1.1) + arel (6.0.3) + binding_of_caller (0.7.2) + debug_inspector (>= 0.0.1) + builder (3.2.2) + byebug (9.0.5) + coffee-rails (4.1.1) + coffee-script (>= 2.2.0) + railties (>= 4.0.0, < 5.1.x) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.10.0) + concurrent-ruby (1.0.2) + debug_inspector (0.0.2) + erubis (2.7.0) + execjs (2.7.0) + globalid (0.3.7) + activesupport (>= 4.1.0) + i18n (0.7.0) + jbuilder (2.6.0) + activesupport (>= 3.0.0, < 5.1) + multi_json (~> 1.2) + jquery-rails (4.2.1) + rails-dom-testing (>= 1, < 3) + railties (>= 4.2.0) + thor (>= 0.14, < 2.0) + json (1.8.3) + loofah (2.0.3) + nokogiri (>= 1.5.9) + mail (2.6.4) + mime-types (>= 1.16, < 4) + mime-types (3.1) + mime-types-data (~> 3.2015) + mime-types-data (3.2016.0521) + mini_portile2 (2.1.0) + minitest (5.9.1) + multi_json (1.12.1) + nokogiri (1.6.8) + mini_portile2 (~> 2.1.0) + pkg-config (~> 1.1.7) + pkg-config (1.1.7) + rack (1.6.4) + rack-test (0.6.3) + rack (>= 1.0) + rails (4.2.7) + actionmailer (= 4.2.7) + actionpack (= 4.2.7) + actionview (= 4.2.7) + activejob (= 4.2.7) + activemodel (= 4.2.7) + activerecord (= 4.2.7) + activesupport (= 4.2.7) + bundler (>= 1.3.0, < 2.0) + railties (= 4.2.7) + sprockets-rails + rails-deprecated_sanitizer (1.0.3) + activesupport (>= 4.2.0.alpha) + rails-dom-testing (1.0.7) + activesupport (>= 4.2.0.beta, < 5.0) + nokogiri (~> 1.6.0) + rails-deprecated_sanitizer (>= 1.0.1) + rails-html-sanitizer (1.0.3) + loofah (~> 2.0) + railties (4.2.7) + actionpack (= 4.2.7) + activesupport (= 4.2.7) + rake (>= 0.8.7) + thor (>= 0.18.1, < 2.0) + rake (11.3.0) + rdoc (4.2.2) + json (~> 1.4) + sass (3.4.22) + sass-rails (5.0.6) + railties (>= 4.0.0, < 6) + sass (~> 3.1) + sprockets (>= 2.8, < 4.0) + sprockets-rails (>= 2.0, < 4.0) + tilt (>= 1.1, < 3) + sdoc (0.4.1) + json (~> 1.7, >= 1.7.7) + rdoc (~> 4.0) + spring (1.7.2) + sprockets (3.7.0) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.2.0) + actionpack (>= 4.0) + activesupport (>= 4.0) + sprockets (>= 3.0.0) + sqlite3 (1.3.11) + thor (0.19.1) + thread_safe (0.3.5) + tilt (2.0.5) + turbolinks (5.0.1) + turbolinks-source (~> 5) + turbolinks-source (5.0.0) + tzinfo (1.2.2) + thread_safe (~> 0.1) + uglifier (3.0.2) + execjs (>= 0.3.0, < 3) + web-console (2.3.0) + activemodel (>= 4.0) + binding_of_caller (>= 0.7.2) + railties (>= 4.0) + sprockets-rails (>= 2.0, < 4.0) + +PLATFORMS + ruby + +DEPENDENCIES + byebug + coffee-rails (~> 4.1.0) + jbuilder (~> 2.0) + jquery-rails + rails (= 4.2.7) + sass-rails (~> 5.0) + sdoc (~> 0.4.0) + spring + sqlite3 + turbolinks + uglifier (>= 1.3.0) + web-console (~> 2.0) + +BUNDLED WITH + 1.13.1 diff --git a/README.rdoc b/README.rdoc new file mode 100644 index 000000000..dd4e97e22 --- /dev/null +++ b/README.rdoc @@ -0,0 +1,28 @@ +== README + +This README would normally document whatever steps are necessary to get the +application up and running. + +Things you may want to cover: + +* Ruby version + +* System dependencies + +* Configuration + +* Database creation + +* Database initialization + +* How to run the test suite + +* Services (job queues, cache servers, search engines, etc.) + +* Deployment instructions + +* ... + + +Please feel free to use a different markup language if you do not plan to run +rake doc:app. diff --git a/Rakefile b/Rakefile new file mode 100644 index 000000000..ba6b733dd --- /dev/null +++ b/Rakefile @@ -0,0 +1,6 @@ +# Add your own tasks in files placed in lib/tasks ending in .rake, +# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. + +require File.expand_path('../config/application', __FILE__) + +Rails.application.load_tasks diff --git a/app/.DS_Store b/app/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7e4ea2466c89c83dc55caae0926dbbe72eee4d34 GIT binary patch literal 6148 zcmeHK&5P4O6o1op+qAtzR201As8FO8mwK$-D(pchMs^WbYO)D75R;OmElVl%?A6Pj z{r)>dZ~g)LpLnak`Pe1fkCPxG^M*ISmznn_o!^_xbcl#`$6kxbBq9UKu~b8~L3lsc zH7Tf;I*^GmY|1F6g#7(*&09BU1~dcz8Uy^>t z7^GRV`I8ljrJZucsMhMdn3rnL?O{B%GbbCTT_<@ao&wKzmECu;;hFs;j>B`?aSsB2 zIxw&7#Zl%2k)Py3j}C*#i>KXq9C_)HEyp_yylglyul5svg3!Jb`3FH7xIq|XCq|W* zfq886)eZw%wct=;>No{r|P-@beQ;p3;zU%ra@6T^-w z;f4<22iA-E1{w25(%(|n#P^a@!GHs^=^z<7D@GQ4B*#Q3YZ zMyQEVNk#1#NoLbDLq{4T*`EQK9~3yJ7~Fc}Jzp-f#dm<&g|rTjVy7ZPPSF?IQ1 z>dj2uP?&f-#i)qxd>h2>L8;06Pj7643(De*^>#y3!2%RR(?oBwi9A literal 0 HcmV?d00001 diff --git a/app/assets/images/.keep b/app/assets/images/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js new file mode 100644 index 000000000..e07c5a830 --- /dev/null +++ b/app/assets/javascripts/application.js @@ -0,0 +1,16 @@ +// This is a manifest file that'll be compiled into application.js, which will include all the files +// listed below. +// +// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, +// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path. +// +// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the +// compiled file. +// +// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details +// about supported directives. +// +//= require jquery +//= require jquery_ujs +//= require turbolinks +//= require_tree . diff --git a/app/assets/javascripts/tasks.coffee b/app/assets/javascripts/tasks.coffee new file mode 100644 index 000000000..24f83d18b --- /dev/null +++ b/app/assets/javascripts/tasks.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css new file mode 100644 index 000000000..f9cd5b348 --- /dev/null +++ b/app/assets/stylesheets/application.css @@ -0,0 +1,15 @@ +/* + * This is a manifest file that'll be compiled into application.css, which will include all the files + * listed below. + * + * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, + * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path. + * + * You're free to add application-wide styles to this file and they'll appear at the bottom of the + * compiled file so the styles you add here take precedence over styles defined in any styles + * defined in the other CSS/SCSS files in this directory. It is generally better to create a new + * file per style scope. + * + *= require_tree . + *= require_self + */ diff --git a/app/assets/stylesheets/tasks.scss b/app/assets/stylesheets/tasks.scss new file mode 100644 index 000000000..b57862ec7 --- /dev/null +++ b/app/assets/stylesheets/tasks.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the tasks controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/.DS_Store b/app/controllers/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..49c9d44617f271c546a8f40377f58922d167e288 GIT binary patch literal 6148 zcmeHKyH3PF47A~jlW4AlZc8d8{vbLXNYs1)kU()#l$?0<`+@uu%-9B$BlQU(JF>^S zYwu&E>_bF!{q}e%vJ#Ocl&ExOgw?Z6M-fa^>tidOJjknTWt{2gFII8xXPEO2UyphJ z%zuzOltvk_o@Zc>?+M-ow7u!auIeg@0wp$q)zP*N7+#;*z93TI^FmB4flXj_L<>Yc z73irNPYm^R)R%~B0;{8^i`vNOCr18yyr_+i`eNatjbqwmAQ_l4aO}ku&;Kj@GP95T zX-bxofn?yHF`$dh?PiTd#o796c|2r^9KM}dl)qVTmW!T2`e=$ej(IP zx+E3TQblAchYtlv$ROTMmb`7l-^c*XT@9W<2Yl$E&gV~l2oo7%FMS%9sE?*f&;nS6 z1Ohn3xgKIfzMU+1zano`Hl335b?R{bn%vbbNApcK-Rx*Kcav!0@k7a@XJtF3`Bf;enr}iA+CY&n#-@ZP7Ad z8L$l8Gy`Uxan^4-vCU^0unhe34AA<(Q3*YRrAD=MV4;RxjvRmBGy3sc7)LTGAO)m=6p#W^;5Q0*@1-pd5*4L@6p#X+ z3i$V-&>d^TF)=Y?E|?DEIL;Ep;t67HI3_Yfv!oJ}YVC+&NoT&ay4r9|Ogb!f z<~nU>YbO+o-I*^@4y%cZQa}n!71+<|%KQH*{fG1al%$yykOKco0b6V@wi~`u>#ehw x^Ilu%m-G)~ZIm-aD<(!O=EPg^(U-d7W8SX~$HbsBA9SLA1Y8%H6!;4T-T?+v9@qc? literal 0 HcmV?d00001 diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb new file mode 100644 index 000000000..46eeb110b --- /dev/null +++ b/app/views/layouts/application.html.erb @@ -0,0 +1,14 @@ + + + + TaskListRails + <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> + <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> + <%= csrf_meta_tags %> + + + +<%= yield %> + + + diff --git a/app/views/tasks/create.html.erb b/app/views/tasks/create.html.erb new file mode 100644 index 000000000..fcad439c4 --- /dev/null +++ b/app/views/tasks/create.html.erb @@ -0,0 +1,2 @@ +

Tasks#create

+

Find me in app/views/tasks/create.html.erb

diff --git a/app/views/tasks/delete.html.erb b/app/views/tasks/delete.html.erb new file mode 100644 index 000000000..ea72c29cf --- /dev/null +++ b/app/views/tasks/delete.html.erb @@ -0,0 +1,2 @@ +

Tasks#delete

+

Find me in app/views/tasks/delete.html.erb

diff --git a/app/views/tasks/edit.html.erb b/app/views/tasks/edit.html.erb new file mode 100644 index 000000000..374190308 --- /dev/null +++ b/app/views/tasks/edit.html.erb @@ -0,0 +1,2 @@ +

Tasks#edit

+

Find me in app/views/tasks/edit.html.erb

diff --git a/app/views/tasks/index.html.erb b/app/views/tasks/index.html.erb new file mode 100644 index 000000000..6fe1deff3 --- /dev/null +++ b/app/views/tasks/index.html.erb @@ -0,0 +1,6 @@ +

Get yo SH*T done!

+<% @tasks.each do |task| %> +
+

<%= link_to( task[:thing], show_path(task[:id])) %>

+
+<% end %> diff --git a/app/views/tasks/new.html.erb b/app/views/tasks/new.html.erb new file mode 100644 index 000000000..2484008a3 --- /dev/null +++ b/app/views/tasks/new.html.erb @@ -0,0 +1,2 @@ +

Tasks#new

+

Find me in app/views/tasks/new.html.erb

diff --git a/app/views/tasks/show.html.erb b/app/views/tasks/show.html.erb new file mode 100644 index 000000000..4983ccc23 --- /dev/null +++ b/app/views/tasks/show.html.erb @@ -0,0 +1,7 @@ +
+

<%= @mytask[:thing] %>

+

<%= @mytask[:description] %>

+

<%= @mytask[:completion_status] %>

+

<%= @mytask[:completeion_date] %>

+

<%= link_to( 'View All Tasks', index_path ) %>

+
diff --git a/app/views/tasks/update.html.erb b/app/views/tasks/update.html.erb new file mode 100644 index 000000000..fdb1ea609 --- /dev/null +++ b/app/views/tasks/update.html.erb @@ -0,0 +1,2 @@ +

Tasks#update

+

Find me in app/views/tasks/update.html.erb

diff --git a/bin/bundle b/bin/bundle new file mode 100755 index 000000000..66e9889e8 --- /dev/null +++ b/bin/bundle @@ -0,0 +1,3 @@ +#!/usr/bin/env ruby +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) +load Gem.bin_path('bundler', 'bundle') diff --git a/bin/rails b/bin/rails new file mode 100755 index 000000000..0138d79b7 --- /dev/null +++ b/bin/rails @@ -0,0 +1,9 @@ +#!/usr/bin/env ruby +begin + load File.expand_path('../spring', __FILE__) +rescue LoadError => e + raise unless e.message.include?('spring') +end +APP_PATH = File.expand_path('../../config/application', __FILE__) +require_relative '../config/boot' +require 'rails/commands' diff --git a/bin/rake b/bin/rake new file mode 100755 index 000000000..d87d5f578 --- /dev/null +++ b/bin/rake @@ -0,0 +1,9 @@ +#!/usr/bin/env ruby +begin + load File.expand_path('../spring', __FILE__) +rescue LoadError => e + raise unless e.message.include?('spring') +end +require_relative '../config/boot' +require 'rake' +Rake.application.run diff --git a/bin/setup b/bin/setup new file mode 100755 index 000000000..acdb2c138 --- /dev/null +++ b/bin/setup @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +require 'pathname' + +# path to your application root. +APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) + +Dir.chdir APP_ROOT do + # This script is a starting point to setup your application. + # Add necessary setup steps to this file: + + puts "== Installing dependencies ==" + system "gem install bundler --conservative" + system "bundle check || bundle install" + + # puts "\n== Copying sample files ==" + # unless File.exist?("config/database.yml") + # system "cp config/database.yml.sample config/database.yml" + # end + + puts "\n== Preparing database ==" + system "bin/rake db:setup" + + puts "\n== Removing old logs and tempfiles ==" + system "rm -f log/*" + system "rm -rf tmp/cache" + + puts "\n== Restarting application server ==" + system "touch tmp/restart.txt" +end diff --git a/bin/spring b/bin/spring new file mode 100755 index 000000000..7fe232c3a --- /dev/null +++ b/bin/spring @@ -0,0 +1,15 @@ +#!/usr/bin/env ruby + +# This file loads spring without using Bundler, in order to be fast. +# It gets overwritten when you run the `spring binstub` command. + +unless defined?(Spring) + require 'rubygems' + require 'bundler' + + if (match = Bundler.default_lockfile.read.match(/^GEM$.*?^ (?: )*spring \((.*?)\)$.*?^$/m)) + Gem.paths = { 'GEM_PATH' => [Bundler.bundle_path.to_s, *Gem.path].uniq.join(Gem.path_separator) } + gem 'spring', match[1] + require 'spring/binstub' + end +end diff --git a/config.ru b/config.ru new file mode 100644 index 000000000..bd83b2541 --- /dev/null +++ b/config.ru @@ -0,0 +1,4 @@ +# This file is used by Rack-based servers to start the application. + +require ::File.expand_path('../config/environment', __FILE__) +run Rails.application diff --git a/config/application.rb b/config/application.rb new file mode 100644 index 000000000..902432bad --- /dev/null +++ b/config/application.rb @@ -0,0 +1,26 @@ +require File.expand_path('../boot', __FILE__) + +require 'rails/all' + +# Require the gems listed in Gemfile, including any gems +# you've limited to :test, :development, or :production. +Bundler.require(*Rails.groups) + +module TaskListRails + class Application < Rails::Application + # Settings in config/environments/* take precedence over those specified here. + # Application configuration should go into files in config/initializers + # -- all .rb files in that directory are automatically loaded. + + # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. + # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. + # config.time_zone = 'Central Time (US & Canada)' + + # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. + # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] + # config.i18n.default_locale = :de + + # Do not swallow errors in after_commit/after_rollback callbacks. + config.active_record.raise_in_transactional_callbacks = true + end +end diff --git a/config/boot.rb b/config/boot.rb new file mode 100644 index 000000000..6b750f00b --- /dev/null +++ b/config/boot.rb @@ -0,0 +1,3 @@ +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) + +require 'bundler/setup' # Set up gems listed in the Gemfile. diff --git a/config/database.yml b/config/database.yml new file mode 100644 index 000000000..1c1a37ca8 --- /dev/null +++ b/config/database.yml @@ -0,0 +1,25 @@ +# SQLite version 3.x +# gem install sqlite3 +# +# Ensure the SQLite 3 gem is defined in your Gemfile +# gem 'sqlite3' +# +default: &default + adapter: sqlite3 + pool: 5 + timeout: 5000 + +development: + <<: *default + database: db/development.sqlite3 + +# Warning: The database defined as "test" will be erased and +# re-generated from your development database when you run "rake". +# Do not set this db to the same as development or production. +test: + <<: *default + database: db/test.sqlite3 + +production: + <<: *default + database: db/production.sqlite3 diff --git a/config/environment.rb b/config/environment.rb new file mode 100644 index 000000000..ee8d90dc6 --- /dev/null +++ b/config/environment.rb @@ -0,0 +1,5 @@ +# Load the Rails application. +require File.expand_path('../application', __FILE__) + +# Initialize the Rails application. +Rails.application.initialize! diff --git a/config/environments/development.rb b/config/environments/development.rb new file mode 100644 index 000000000..b55e2144b --- /dev/null +++ b/config/environments/development.rb @@ -0,0 +1,41 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # In the development environment your application's code is reloaded on + # every request. This slows down response time but is perfect for development + # since you don't have to restart the web server when you make code changes. + config.cache_classes = false + + # Do not eager load code on boot. + config.eager_load = false + + # Show full error reports and disable caching. + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + + # Don't care if the mailer can't send. + config.action_mailer.raise_delivery_errors = false + + # Print deprecation notices to the Rails logger. + config.active_support.deprecation = :log + + # Raise an error on page load if there are pending migrations. + config.active_record.migration_error = :page_load + + # Debug mode disables concatenation and preprocessing of assets. + # This option may cause significant delays in view rendering with a large + # number of complex assets. + config.assets.debug = true + + # Asset digests allow you to set far-future HTTP expiration dates on all assets, + # yet still be able to expire them through the digest params. + config.assets.digest = true + + # Adds additional error checking when serving assets at runtime. + # Checks for improperly declared sprockets dependencies. + # Raises helpful error messages. + config.assets.raise_runtime_errors = true + + # Raises error for missing translations + # config.action_view.raise_on_missing_translations = true +end diff --git a/config/environments/production.rb b/config/environments/production.rb new file mode 100644 index 000000000..5c1b32e48 --- /dev/null +++ b/config/environments/production.rb @@ -0,0 +1,79 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # Code is not reloaded between requests. + config.cache_classes = true + + # Eager load code on boot. This eager loads most of Rails and + # your application in memory, allowing both threaded web servers + # and those relying on copy on write to perform better. + # Rake tasks automatically ignore this option for performance. + config.eager_load = true + + # Full error reports are disabled and caching is turned on. + config.consider_all_requests_local = false + config.action_controller.perform_caching = true + + # Enable Rack::Cache to put a simple HTTP cache in front of your application + # Add `rack-cache` to your Gemfile before enabling this. + # For large-scale production use, consider using a caching reverse proxy like + # NGINX, varnish or squid. + # config.action_dispatch.rack_cache = true + + # Disable serving static files from the `/public` folder by default since + # Apache or NGINX already handles this. + config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present? + + # Compress JavaScripts and CSS. + config.assets.js_compressor = :uglifier + # config.assets.css_compressor = :sass + + # Do not fallback to assets pipeline if a precompiled asset is missed. + config.assets.compile = false + + # Asset digests allow you to set far-future HTTP expiration dates on all assets, + # yet still be able to expire them through the digest params. + config.assets.digest = true + + # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb + + # Specifies the header that your server uses for sending files. + # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache + # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX + + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. + # config.force_ssl = true + + # Use the lowest log level to ensure availability of diagnostic information + # when problems arise. + config.log_level = :debug + + # Prepend all log lines with the following tags. + # config.log_tags = [ :subdomain, :uuid ] + + # Use a different logger for distributed setups. + # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new) + + # Use a different cache store in production. + # config.cache_store = :mem_cache_store + + # Enable serving of images, stylesheets, and JavaScripts from an asset server. + # config.action_controller.asset_host = 'http://assets.example.com' + + # Ignore bad email addresses and do not raise email delivery errors. + # Set this to true and configure the email server for immediate delivery to raise delivery errors. + # config.action_mailer.raise_delivery_errors = false + + # Enable locale fallbacks for I18n (makes lookups for any locale fall back to + # the I18n.default_locale when a translation cannot be found). + config.i18n.fallbacks = true + + # Send deprecation notices to registered listeners. + config.active_support.deprecation = :notify + + # Use default logging formatter so that PID and timestamp are not suppressed. + config.log_formatter = ::Logger::Formatter.new + + # Do not dump schema after migrations. + config.active_record.dump_schema_after_migration = false +end diff --git a/config/environments/test.rb b/config/environments/test.rb new file mode 100644 index 000000000..1c19f08b2 --- /dev/null +++ b/config/environments/test.rb @@ -0,0 +1,42 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # The test environment is used exclusively to run your application's + # test suite. You never need to work with it otherwise. Remember that + # your test database is "scratch space" for the test suite and is wiped + # and recreated between test runs. Don't rely on the data there! + config.cache_classes = true + + # Do not eager load code on boot. This avoids loading your whole application + # just for the purpose of running a single test. If you are using a tool that + # preloads Rails for running tests, you may have to set it to true. + config.eager_load = false + + # Configure static file server for tests with Cache-Control for performance. + config.serve_static_files = true + config.static_cache_control = 'public, max-age=3600' + + # Show full error reports and disable caching. + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + + # Raise exceptions instead of rendering exception templates. + config.action_dispatch.show_exceptions = false + + # Disable request forgery protection in test environment. + config.action_controller.allow_forgery_protection = false + + # Tell Action Mailer not to deliver emails to the real world. + # The :test delivery method accumulates sent emails in the + # ActionMailer::Base.deliveries array. + config.action_mailer.delivery_method = :test + + # Randomize the order test cases are executed. + config.active_support.test_order = :random + + # Print deprecation notices to the stderr. + config.active_support.deprecation = :stderr + + # Raises error for missing translations + # config.action_view.raise_on_missing_translations = true +end diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb new file mode 100644 index 000000000..01ef3e663 --- /dev/null +++ b/config/initializers/assets.rb @@ -0,0 +1,11 @@ +# Be sure to restart your server when you modify this file. + +# Version of your assets, change this if you want to expire all your assets. +Rails.application.config.assets.version = '1.0' + +# Add additional assets to the asset load path +# Rails.application.config.assets.paths << Emoji.images_path + +# Precompile additional assets. +# application.js, application.css, and all non-JS/CSS in app/assets folder are already added. +# Rails.application.config.assets.precompile += %w( search.js ) diff --git a/config/initializers/backtrace_silencers.rb b/config/initializers/backtrace_silencers.rb new file mode 100644 index 000000000..59385cdf3 --- /dev/null +++ b/config/initializers/backtrace_silencers.rb @@ -0,0 +1,7 @@ +# Be sure to restart your server when you modify this file. + +# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. +# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } + +# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. +# Rails.backtrace_cleaner.remove_silencers! diff --git a/config/initializers/cookies_serializer.rb b/config/initializers/cookies_serializer.rb new file mode 100644 index 000000000..7f70458de --- /dev/null +++ b/config/initializers/cookies_serializer.rb @@ -0,0 +1,3 @@ +# Be sure to restart your server when you modify this file. + +Rails.application.config.action_dispatch.cookies_serializer = :json diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb new file mode 100644 index 000000000..4a994e1e7 --- /dev/null +++ b/config/initializers/filter_parameter_logging.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Configure sensitive parameters which will be filtered from the log file. +Rails.application.config.filter_parameters += [:password] diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb new file mode 100644 index 000000000..ac033bf9d --- /dev/null +++ b/config/initializers/inflections.rb @@ -0,0 +1,16 @@ +# Be sure to restart your server when you modify this file. + +# Add new inflection rules using the following format. Inflections +# are locale specific, and you may define rules for as many different +# locales as you wish. All of these examples are active by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.plural /^(ox)$/i, '\1en' +# inflect.singular /^(ox)en/i, '\1' +# inflect.irregular 'person', 'people' +# inflect.uncountable %w( fish sheep ) +# end + +# These inflection rules are supported but not enabled by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.acronym 'RESTful' +# end diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb new file mode 100644 index 000000000..dc1899682 --- /dev/null +++ b/config/initializers/mime_types.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Add new mime types for use in respond_to blocks: +# Mime::Type.register "text/richtext", :rtf diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb new file mode 100644 index 000000000..15d065a84 --- /dev/null +++ b/config/initializers/session_store.rb @@ -0,0 +1,3 @@ +# Be sure to restart your server when you modify this file. + +Rails.application.config.session_store :cookie_store, key: '_TaskListRails_session' diff --git a/config/initializers/wrap_parameters.rb b/config/initializers/wrap_parameters.rb new file mode 100644 index 000000000..33725e95f --- /dev/null +++ b/config/initializers/wrap_parameters.rb @@ -0,0 +1,14 @@ +# Be sure to restart your server when you modify this file. + +# This file contains settings for ActionController::ParamsWrapper which +# is enabled by default. + +# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. +ActiveSupport.on_load(:action_controller) do + wrap_parameters format: [:json] if respond_to?(:wrap_parameters) +end + +# To enable root element in JSON for ActiveRecord objects. +# ActiveSupport.on_load(:active_record) do +# self.include_root_in_json = true +# end diff --git a/config/locales/en.yml b/config/locales/en.yml new file mode 100644 index 000000000..065395716 --- /dev/null +++ b/config/locales/en.yml @@ -0,0 +1,23 @@ +# Files in the config/locales directory are used for internationalization +# and are automatically loaded by Rails. If you want to use locales other +# than English, add the necessary files in this directory. +# +# To use the locales, use `I18n.t`: +# +# I18n.t 'hello' +# +# In views, this is aliased to just `t`: +# +# <%= t('hello') %> +# +# To use a different locale, set it with `I18n.locale`: +# +# I18n.locale = :es +# +# This would use the information in config/locales/es.yml. +# +# To learn more, please read the Rails Internationalization guide +# available at http://guides.rubyonrails.org/i18n.html. + +en: + hello: "Hello world" diff --git a/config/routes.rb b/config/routes.rb new file mode 100644 index 000000000..0e87c155e --- /dev/null +++ b/config/routes.rb @@ -0,0 +1,73 @@ +Rails.application.routes.draw do + +root to: 'tasks#index' + + get 'tasks/index' => 'tasks#index', as: 'index' + + get 'tasks/new' => 'tasks#new', as: 'new' + + get 'tasks/:id/show' => 'tasks#show', as: 'show' + + delete 'tasks/:id/delete' => 'tasks#delete', as: 'delete' + + get 'tasks/:id/edit' => 'tasks#edit', as: 'edit' + + put 'tasks/:id/update' => 'tasks#update', as: 'update' + + post 'tasks/create' => 'tasks#create', as: 'create' + + # The priority is based upon order of creation: first created -> highest priority. + # See how all your routes lay out with "rake routes". + + # You can have the root of your site routed with "root" + # root 'welcome#index' + + # Example of regular route: + # get 'products/:id' => 'catalog#view' + + # Example of named route that can be invoked with purchase_url(id: product.id) + # get 'products/:id/purchase' => 'catalog#purchase', as: :purchase + + # Example resource route (maps HTTP verbs to controller actions automatically): + # resources :products + + # Example resource route with options: + # resources :products do + # member do + # get 'short' + # post 'toggle' + # end + # + # collection do + # get 'sold' + # end + # end + + # Example resource route with sub-resources: + # resources :products do + # resources :comments, :sales + # resource :seller + # end + + # Example resource route with more complex sub-resources: + # resources :products do + # resources :comments + # resources :sales do + # get 'recent', on: :collection + # end + # end + + # Example resource route with concerns: + # concern :toggleable do + # post 'toggle' + # end + # resources :posts, concerns: :toggleable + # resources :photos, concerns: :toggleable + + # Example resource route within a namespace: + # namespace :admin do + # # Directs /admin/products/* to Admin::ProductsController + # # (app/controllers/admin/products_controller.rb) + # resources :products + # end +end diff --git a/config/secrets.yml b/config/secrets.yml new file mode 100644 index 000000000..6e0a267b5 --- /dev/null +++ b/config/secrets.yml @@ -0,0 +1,22 @@ +# Be sure to restart your server when you modify this file. + +# Your secret key is used for verifying the integrity of signed cookies. +# If you change this key, all old signed cookies will become invalid! + +# Make sure the secret is at least 30 characters and all random, +# no regular words or you'll be exposed to dictionary attacks. +# You can use `rake secret` to generate a secure secret key. + +# Make sure the secrets in this file are kept private +# if you're sharing your code publicly. + +development: + secret_key_base: 55c24b2e7f0f00c45ffdd9860ad5d7c986544a9afa0b0b6fccb1b1c166531e47fda306f5fde290569076526f3e4aad985c3a3951e0d770493b0792cf108327fe + +test: + secret_key_base: 4a073616c57e273b1fef5d5318349d19ff1da892b5085a765ab45cb53fa4b5cacd76f597e14853b0896f0ca1b4b1f4d48639696b0c6c1d4f2440f4490a5b2f53 + +# Do not keep production secrets in the repository, +# instead read values from the environment. +production: + secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> diff --git a/db/seeds.rb b/db/seeds.rb new file mode 100644 index 000000000..4edb1e857 --- /dev/null +++ b/db/seeds.rb @@ -0,0 +1,7 @@ +# This file should contain all the record creation needed to seed the database with its default values. +# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup). +# +# Examples: +# +# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }]) +# Mayor.create(name: 'Emanuel', city: cities.first) diff --git a/lib/assets/.keep b/lib/assets/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/lib/tasks/.keep b/lib/tasks/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/log/.keep b/log/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/public/404.html b/public/404.html new file mode 100644 index 000000000..b612547fc --- /dev/null +++ b/public/404.html @@ -0,0 +1,67 @@ + + + + The page you were looking for doesn't exist (404) + + + + + + +
+
+

The page you were looking for doesn't exist.

+

You may have mistyped the address or the page may have moved.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/public/422.html b/public/422.html new file mode 100644 index 000000000..a21f82b3b --- /dev/null +++ b/public/422.html @@ -0,0 +1,67 @@ + + + + The change you wanted was rejected (422) + + + + + + +
+
+

The change you wanted was rejected.

+

Maybe you tried to change something you didn't have access to.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/public/500.html b/public/500.html new file mode 100644 index 000000000..061abc587 --- /dev/null +++ b/public/500.html @@ -0,0 +1,66 @@ + + + + We're sorry, but something went wrong (500) + + + + + + +
+
+

We're sorry, but something went wrong.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 000000000..e69de29bb diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 000000000..3c9c7c01f --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,5 @@ +# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file +# +# To ban all spiders from the entire site uncomment the next two lines: +# User-agent: * +# Disallow: / diff --git a/test/controllers/.keep b/test/controllers/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/test/controllers/tasks_controller_test.rb b/test/controllers/tasks_controller_test.rb new file mode 100644 index 000000000..fd0792be8 --- /dev/null +++ b/test/controllers/tasks_controller_test.rb @@ -0,0 +1,39 @@ +require 'test_helper' + +class TasksControllerTest < ActionController::TestCase + test "should get index" do + get :index + assert_response :success + end + + test "should get new" do + get :new + assert_response :success + end + + test "should get show" do + get :show + assert_response :success + end + + test "should get delete" do + get :delete + assert_response :success + end + + test "should get edit" do + get :edit + assert_response :success + end + + test "should get update" do + get :update + assert_response :success + end + + test "should get create" do + get :create + assert_response :success + end + +end diff --git a/test/fixtures/.keep b/test/fixtures/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/test/helpers/.keep b/test/helpers/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/test/integration/.keep b/test/integration/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/test/mailers/.keep b/test/mailers/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/test/models/.keep b/test/models/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/test/test_helper.rb b/test/test_helper.rb new file mode 100644 index 000000000..92e39b2d7 --- /dev/null +++ b/test/test_helper.rb @@ -0,0 +1,10 @@ +ENV['RAILS_ENV'] ||= 'test' +require File.expand_path('../../config/environment', __FILE__) +require 'rails/test_help' + +class ActiveSupport::TestCase + # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. + fixtures :all + + # Add more helper methods to be used by all tests here... +end diff --git a/vendor/assets/javascripts/.keep b/vendor/assets/javascripts/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/vendor/assets/stylesheets/.keep b/vendor/assets/stylesheets/.keep new file mode 100644 index 000000000..e69de29bb From e794e7c35f6c826d9abcba037e6e900f7e1068ff Mon Sep 17 00:00:00 2001 From: Leah Bueing Date: Thu, 29 Sep 2016 16:41:35 -0700 Subject: [PATCH 02/10] Add/delete task working --- app/controllers/tasks_controller.rb | 31 +++++++++++++---------- app/models/task.rb | 2 ++ app/views/tasks/create.html.erb | 10 ++++++-- app/views/tasks/delete.html.erb | 4 +-- app/views/tasks/index.html.erb | 6 ++++- app/views/tasks/new.html.erb | 16 ++++++++++-- app/views/tasks/show.html.erb | 6 ++++- config/routes.rb | 2 +- db/migrate/20160929225059_create_tasks.rb | 12 +++++++++ db/schema.rb | 25 ++++++++++++++++++ test/fixtures/tasks.yml | 13 ++++++++++ test/models/task_test.rb | 7 +++++ 12 files changed, 111 insertions(+), 23 deletions(-) create mode 100644 app/models/task.rb create mode 100644 db/migrate/20160929225059_create_tasks.rb create mode 100644 db/schema.rb create mode 100644 test/fixtures/tasks.yml create mode 100644 test/models/task_test.rb diff --git a/app/controllers/tasks_controller.rb b/app/controllers/tasks_controller.rb index 1b7e9bc1f..b650ee642 100644 --- a/app/controllers/tasks_controller.rb +++ b/app/controllers/tasks_controller.rb @@ -1,37 +1,35 @@ class TasksController < ApplicationController def index - @tasks = TasksController.alltasks + @tasks = Task.all end def new + @mytask = Task.new end def show - @tasks = TasksController.alltasks - @mytask = nil - - @tasks.each do |task| - number = params[:id].to_i - if task[:id] == number - @mytask = task - end - end - - if @mytask == nil - @mytask = {id: params[:id].to_i, thing: "Did not find", description: "", completion_status: "unknown", completeion_date: "N/A" } - end + @mytask = Task.find(params[:id].to_i) end def delete + @mytask = Task.destroy(params[:id].to_i) end def edit + show end def update end def create + @params = params + @mytask = Task.new + @mytask.task_name = params[:task_name] + @mytask.description = params[:description] + @mytask.completion_status = "incomplete" + # @mytask.completeion_date = Time.new + @mytask.save end def self.alltasks @@ -45,4 +43,9 @@ def self.alltasks ] end + private + def user_params + params.require(:task).permit(:task_name, :description, :completion_status, :completeion_date) + end + end diff --git a/app/models/task.rb b/app/models/task.rb new file mode 100644 index 000000000..935f76e12 --- /dev/null +++ b/app/models/task.rb @@ -0,0 +1,2 @@ +class Task < ActiveRecord::Base +end diff --git a/app/views/tasks/create.html.erb b/app/views/tasks/create.html.erb index fcad439c4..61b4019d9 100644 --- a/app/views/tasks/create.html.erb +++ b/app/views/tasks/create.html.erb @@ -1,2 +1,8 @@ -

Tasks#create

-

Find me in app/views/tasks/create.html.erb

+
+

<%= @mytask.task_name %>

+

<%= @mytask.description %>

+

<%= @mytask.completion_status %>

+

<%= @mytask.completion_date %>

+

<%= link_to( 'Edit', edit_path ) %>

+

<%= link_to( 'View All Tasks', index_path ) %>

+
diff --git a/app/views/tasks/delete.html.erb b/app/views/tasks/delete.html.erb index ea72c29cf..6674bdf47 100644 --- a/app/views/tasks/delete.html.erb +++ b/app/views/tasks/delete.html.erb @@ -1,2 +1,2 @@ -

Tasks#delete

-

Find me in app/views/tasks/delete.html.erb

+

Task has been deleted!

+

<%= link_to( 'View All Tasks', index_path ) %>

diff --git a/app/views/tasks/index.html.erb b/app/views/tasks/index.html.erb index 6fe1deff3..cac058380 100644 --- a/app/views/tasks/index.html.erb +++ b/app/views/tasks/index.html.erb @@ -1,6 +1,10 @@

Get yo SH*T done!

<% @tasks.each do |task| %>
-

<%= link_to( task[:thing], show_path(task[:id])) %>

+

<%= link_to( task.task_name, show_path(task.id)) %>

<% end %> + +
+

<%= link_to( 'Add a new task', new_path) %> +

diff --git a/app/views/tasks/new.html.erb b/app/views/tasks/new.html.erb index 2484008a3..0d0bf4dc9 100644 --- a/app/views/tasks/new.html.erb +++ b/app/views/tasks/new.html.erb @@ -1,2 +1,14 @@ -

Tasks#new

-

Find me in app/views/tasks/new.html.erb

+

Make a new task!

+ +
+ + + + + + + + <%= tag(:input, :type => "hidden", :name => request_forgery_protection_token.to_s, :value => form_authenticity_token) %> + + +
diff --git a/app/views/tasks/show.html.erb b/app/views/tasks/show.html.erb index 4983ccc23..bdac6ad4d 100644 --- a/app/views/tasks/show.html.erb +++ b/app/views/tasks/show.html.erb @@ -1,7 +1,11 @@
-

<%= @mytask[:thing] %>

+

<%= @mytask[:task_name] %>

<%= @mytask[:description] %>

<%= @mytask[:completion_status] %>

<%= @mytask[:completeion_date] %>

+ +

<%= button_to 'delete task', {action: "delete", id: @mytask.id }, + method: :delete, data: {confirm: "Are you sure you want to delete this task?"} %>

<%= link_to( 'View All Tasks', index_path ) %>

+
diff --git a/config/routes.rb b/config/routes.rb index 0e87c155e..be75eabd0 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -10,7 +10,7 @@ delete 'tasks/:id/delete' => 'tasks#delete', as: 'delete' - get 'tasks/:id/edit' => 'tasks#edit', as: 'edit' + get 'tasks/edit' => 'tasks#edit', as: 'edit' put 'tasks/:id/update' => 'tasks#update', as: 'update' diff --git a/db/migrate/20160929225059_create_tasks.rb b/db/migrate/20160929225059_create_tasks.rb new file mode 100644 index 000000000..40dde8ccd --- /dev/null +++ b/db/migrate/20160929225059_create_tasks.rb @@ -0,0 +1,12 @@ +class CreateTasks < ActiveRecord::Migration + def change + create_table :tasks do |t| + t.string :task_name + t.text :description + t.string :completion_status + t.date :completion_date + + t.timestamps null: false + end + end +end diff --git a/db/schema.rb b/db/schema.rb new file mode 100644 index 000000000..7f47f6714 --- /dev/null +++ b/db/schema.rb @@ -0,0 +1,25 @@ +# encoding: UTF-8 +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema.define(version: 20160929225059) do + + create_table "tasks", force: :cascade do |t| + t.string "task_name" + t.text "description" + t.string "completion_status" + t.date "completion_date" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + +end diff --git a/test/fixtures/tasks.yml b/test/fixtures/tasks.yml new file mode 100644 index 000000000..2971a9b8e --- /dev/null +++ b/test/fixtures/tasks.yml @@ -0,0 +1,13 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + task_name: MyString + description: MyText + completion_status: MyString + completion_date: MyString + +two: + task_name: MyString + description: MyText + completion_status: MyString + completion_date: MyString diff --git a/test/models/task_test.rb b/test/models/task_test.rb new file mode 100644 index 000000000..3ca215970 --- /dev/null +++ b/test/models/task_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class TaskTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end From 18eed8fcf057dd74425e55a9aaaac374539b7cb6 Mon Sep 17 00:00:00 2001 From: Leah Bueing Date: Mon, 3 Oct 2016 09:02:32 -0700 Subject: [PATCH 03/10] functioning well --- app/assets/stylesheets/main.css | 23 +++++++++++++ app/controllers/tasks_controller.rb | 33 +++++++++++++++---- app/views/layouts/application.html.erb | 3 ++ app/views/tasks/create.html.erb | 7 +--- app/views/tasks/edit.html.erb | 17 ++++++++-- app/views/tasks/index.html.erb | 16 ++++++++- app/views/tasks/new.html.erb | 2 +- app/views/tasks/show.html.erb | 16 ++++++--- config/routes.rb | 6 +++- ...5941_change_completion_date_to_datetime.rb | 5 +++ db/schema.rb | 4 +-- 11 files changed, 108 insertions(+), 24 deletions(-) create mode 100644 app/assets/stylesheets/main.css create mode 100644 db/migrate/20160930215941_change_completion_date_to_datetime.rb diff --git a/app/assets/stylesheets/main.css b/app/assets/stylesheets/main.css new file mode 100644 index 000000000..23bdaaff5 --- /dev/null +++ b/app/assets/stylesheets/main.css @@ -0,0 +1,23 @@ +/*body { + background-color: #393E41; +} + + +header { + font-family: fantasy; + background-color: #FFF1D0; + color: #44BBA4; + text-align: center; +} + +h2 { + color: #EDB6A3; +} + +article h2 { + color: #E7BB41; +} + +article p { + display: inline; +}*/ diff --git a/app/controllers/tasks_controller.rb b/app/controllers/tasks_controller.rb index b650ee642..c64be141e 100644 --- a/app/controllers/tasks_controller.rb +++ b/app/controllers/tasks_controller.rb @@ -13,6 +13,8 @@ def show def delete @mytask = Task.destroy(params[:id].to_i) + + redirect_to action: "index" end def edit @@ -20,6 +22,13 @@ def edit end def update + @mytask = Task.find(params[:id].to_i) + @params = params + @mytask.task_name = params[:task_name] + @mytask.description = params[:description] + @mytask.save + + redirect_to action: "index" end def create @@ -28,19 +37,29 @@ def create @mytask.task_name = params[:task_name] @mytask.description = params[:description] @mytask.completion_status = "incomplete" - # @mytask.completeion_date = Time.new + @mytask.completion_date = "Not completed yet!" @mytask.save + + redirect_to action: "index" end - def self.alltasks - [ - {id: 1, thing: "Make Soup", description: "Put veggies in water...boil", completion_status: "incomplete", completeion_date: "N/A"}, + def mark_complete + @mytask = Task.find(params[:id].to_i) + @mytask.completion_status = "complete" + @mytask.completion_date = DateTime.now + @mytask.save - {id: 2, thing: "Bake a party cake", description: "You know the drill", completion_status: "incomplete", completeion_date: "N/A"}, +#
  • <%= link_to_unless_current("About Us", { action: "about" }) %>
  • + redirect_to action: "index" + end - {id: 3, thing: "Dance", description: "OOh, la la la, la la, la la la", completion_status: "incomplete", completeion_date: "N/A"} + def mark_incomplete + @mytask = Task.find(params[:id].to_i) + @mytask.completion_status = "incomplete" + @mytask.completion_date = "Not completed yet!" + @mytask.save - ] + redirect_to action: "index" end private diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 46eeb110b..34310a61d 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -7,6 +7,9 @@ <%= csrf_meta_tags %> +
    +

    Task List

    +
    <%= yield %> diff --git a/app/views/tasks/create.html.erb b/app/views/tasks/create.html.erb index 61b4019d9..ce4d2cc03 100644 --- a/app/views/tasks/create.html.erb +++ b/app/views/tasks/create.html.erb @@ -1,8 +1,3 @@
    -

    <%= @mytask.task_name %>

    -

    <%= @mytask.description %>

    -

    <%= @mytask.completion_status %>

    -

    <%= @mytask.completion_date %>

    -

    <%= link_to( 'Edit', edit_path ) %>

    -

    <%= link_to( 'View All Tasks', index_path ) %>

    +
    diff --git a/app/views/tasks/edit.html.erb b/app/views/tasks/edit.html.erb index 374190308..e5260aaa6 100644 --- a/app/views/tasks/edit.html.erb +++ b/app/views/tasks/edit.html.erb @@ -1,2 +1,15 @@ -

    Tasks#edit

    -

    Find me in app/views/tasks/edit.html.erb

    +

    Edit Your Task

    + +
    + + + + + + + + + <%= tag(:input, :type => "hidden", :name => request_forgery_protection_token.to_s, :value => form_authenticity_token) %> + + +
    diff --git a/app/views/tasks/index.html.erb b/app/views/tasks/index.html.erb index cac058380..544a119aa 100644 --- a/app/views/tasks/index.html.erb +++ b/app/views/tasks/index.html.erb @@ -1,7 +1,21 @@ -

    Get yo SH*T done!

    +

    Get to work!

    <% @tasks.each do |task| %>

    <%= link_to( task.task_name, show_path(task.id)) %>

    + + <% if task.completion_status == 'incomplete' %> +

    <%= button_to 'mark as complete', {action: "mark_complete", id: task.id }, + method: :mark_complete %>

    + <% else %> +

    <%= button_to 'mark as incomplete', {action: "mark_incomplete", id: task.id }, + method: :mark_incomplete %>

    + <% end %> + +

    <%= button_to 'edit task', {action: "edit", id: task.id }, + method: :edit %>

    + +

    <%= button_to 'delete task', {action: "delete", id: task.id }, + method: :delete, data: {confirm: "Are you sure you want to delete this task?"} %>

    <% end %> diff --git a/app/views/tasks/new.html.erb b/app/views/tasks/new.html.erb index 0d0bf4dc9..069fd3116 100644 --- a/app/views/tasks/new.html.erb +++ b/app/views/tasks/new.html.erb @@ -1,4 +1,4 @@ -

    Make a new task!

    +

    Make a new task!

    diff --git a/app/views/tasks/show.html.erb b/app/views/tasks/show.html.erb index bdac6ad4d..4244fb2ca 100644 --- a/app/views/tasks/show.html.erb +++ b/app/views/tasks/show.html.erb @@ -1,8 +1,16 @@
    -

    <%= @mytask[:task_name] %>

    -

    <%= @mytask[:description] %>

    -

    <%= @mytask[:completion_status] %>

    -

    <%= @mytask[:completeion_date] %>

    +

    <%= @mytask[:task_name] %>

    +

    Description: <%= @mytask[:description] %>

    +

    Status: <%= @mytask[:completion_status] %>

    +

    Completion Date: <%= @mytask[:completion_date] %>

    + + <% if @mytask.completion_status == 'incomplete' %> +

    <%= button_to 'mark as complete', {action: "mark_complete", id: @mytask.id }, + method: :mark_complete %>

    + <% else %> +

    <%= button_to 'mark as incomplete', {action: "mark_incomplete", id: @mytask.id }, + method: :mark_incomplete %>

    + <% end %>

    <%= button_to 'delete task', {action: "delete", id: @mytask.id }, method: :delete, data: {confirm: "Are you sure you want to delete this task?"} %>

    diff --git a/config/routes.rb b/config/routes.rb index be75eabd0..fdc4d3724 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -10,10 +10,14 @@ delete 'tasks/:id/delete' => 'tasks#delete', as: 'delete' - get 'tasks/edit' => 'tasks#edit', as: 'edit' + post 'tasks/:id/edit' => 'tasks#edit', as: 'edit' put 'tasks/:id/update' => 'tasks#update', as: 'update' + post 'tasks/:id/mark_complete' => 'tasks#mark_complete' + + post 'tasks/:id/mark_incomplete' => 'tasks#mark_incomplete' + post 'tasks/create' => 'tasks#create', as: 'create' # The priority is based upon order of creation: first created -> highest priority. diff --git a/db/migrate/20160930215941_change_completion_date_to_datetime.rb b/db/migrate/20160930215941_change_completion_date_to_datetime.rb new file mode 100644 index 000000000..5abef9e32 --- /dev/null +++ b/db/migrate/20160930215941_change_completion_date_to_datetime.rb @@ -0,0 +1,5 @@ +class ChangeCompletionDateToDatetime < ActiveRecord::Migration + def change + change_column(:tasks, :completion_date, :datetime) + end +end diff --git a/db/schema.rb b/db/schema.rb index 7f47f6714..ff400f0a2 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,13 +11,13 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160929225059) do +ActiveRecord::Schema.define(version: 20160930215941) do create_table "tasks", force: :cascade do |t| t.string "task_name" t.text "description" t.string "completion_status" - t.date "completion_date" + t.datetime "completion_date" t.datetime "created_at", null: false t.datetime "updated_at", null: false end From 07c2d9070a280d8d48f279a7cb0c0f4a6062d5ab Mon Sep 17 00:00:00 2001 From: Leah Bueing Date: Mon, 3 Oct 2016 09:30:06 -0700 Subject: [PATCH 04/10] Update README.md --- README.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2b96daf9c..b89eeb713 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,13 @@ +##### REFLECTION ##### + +After completing this project I feel far more comfortable with how each piece of rails works together. I felt comfortable navigating between the views, route, controller, etc. + +One aspect I did not get to function properly that I did want to function properly was a redirection to the index page. As it stands now, whenever a task is updated or marked complete/incomplete, it redirects to the home page. I would like it to stay on the task page for these commands and not redirect. I did work on this for a while and think I found some useful documentation, but could not seem to get it to work the way I wanted it to. With more dedicated time I think I could make it work. + +After the project satisfied the basic requirements, I tried to go back and add in some CSS, but I found it difficult to style the buttons and other aspects that were written in embedded ruby. I do have style sheet, but I am not fond of it, so I commented it out. My seat partner did a really great job of styling her buttons and other embedded ruby, it seems I will have to wrap my code/use classes to better advantage. + +----------------------------------------------------------- + # Task List Rails ✅ We are going to build a Task List in Rails. This web application will enable us to keep track of list of tasks with the functionality to add, edit and remove tasks from a list. @@ -50,7 +60,7 @@ In this wave we will add the first set of user interactivity and persistence. 1. Ask the user to confirm that they definitely want to delete the task. 1. Delete the task from the database and redirect the user back to the list of remaining tasks - + + + From a3d5c59929b50ed0f0de5cc989f0122327ad273c Mon Sep 17 00:00:00 2001 From: Leah Bueing Date: Tue, 18 Oct 2016 09:59:11 -0700 Subject: [PATCH 05/10] saving minor changes --- app/views/tasks/_form.html.erb | 10 ++++++++++ app/views/tasks/edit.html.erb | 6 ++++-- app/views/tasks/new.html.erb | 8 +++++--- 3 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 app/views/tasks/_form.html.erb diff --git a/app/views/tasks/_form.html.erb b/app/views/tasks/_form.html.erb new file mode 100644 index 000000000..1078142c6 --- /dev/null +++ b/app/views/tasks/_form.html.erb @@ -0,0 +1,10 @@ +<%= form_for @mytask, url: action_name do |f| %> + + <%= f.label :task_name %> + <%= f.text_field :task_name %> + + <%= f.label :description %> + <%= f.text_area :description %> + + <%= f.submit %> +<% end %> diff --git a/app/views/tasks/edit.html.erb b/app/views/tasks/edit.html.erb index e5260aaa6..dd3c248f7 100644 --- a/app/views/tasks/edit.html.erb +++ b/app/views/tasks/edit.html.erb @@ -1,5 +1,5 @@

    Edit Your Task

    - + + +<%= render partial: "form", locals: { action_name: "create"} %> diff --git a/app/views/tasks/new.html.erb b/app/views/tasks/new.html.erb index 069fd3116..faf2bade1 100644 --- a/app/views/tasks/new.html.erb +++ b/app/views/tasks/new.html.erb @@ -1,6 +1,6 @@

    Make a new task!

    - + + +<%= render partial: "form" , locals: { action_name: "create"}%> From e5af64626df2e912f8be32ae8a1b619e42bfcc8c Mon Sep 17 00:00:00 2001 From: Leah Bueing Date: Mon, 24 Oct 2016 12:52:01 -0700 Subject: [PATCH 06/10] changes --- .gitignore | 5 +++ Gemfile | 9 ++++ Gemfile.lock | 46 +++++++++++++++++++- app/assets/javascripts/sessions.coffee | 3 ++ app/assets/stylesheets/sessions.scss | 3 ++ app/controllers/sessions_controller.rb | 4 ++ app/controllers/tasks_controller.rb | 2 +- app/helpers/sessions_helper.rb | 2 + app/models/user.rb | 2 + app/views/sessions/create.html.erb | 2 + config/initializers/omniauth.rb | 3 ++ config/routes.rb | 6 +++ db/migrate/20161018170107_create_users.rb | 12 +++++ db/schema.rb | 11 ++++- test/controllers/sessions_controller_test.rb | 34 +++++++++++++++ test/controllers/tasks_controller_test.rb | 16 +++++++ test/fixtures/tasks.yml | 21 ++++----- test/fixtures/users.yml | 17 ++++++++ test/models/user_test.rb | 7 +++ test/test_helper.rb | 16 +++++++ 20 files changed, 208 insertions(+), 13 deletions(-) create mode 100644 app/assets/javascripts/sessions.coffee create mode 100644 app/assets/stylesheets/sessions.scss create mode 100644 app/controllers/sessions_controller.rb create mode 100644 app/helpers/sessions_helper.rb create mode 100644 app/models/user.rb create mode 100644 app/views/sessions/create.html.erb create mode 100644 config/initializers/omniauth.rb create mode 100644 db/migrate/20161018170107_create_users.rb create mode 100644 test/controllers/sessions_controller_test.rb create mode 100644 test/fixtures/users.yml create mode 100644 test/models/user_test.rb diff --git a/.gitignore b/.gitignore index 050c9d95c..bc1b7b334 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,11 @@ # Ignore bundler config. /.bundle +# Hide the .env. It's full of secrets! +.env + +.DS_Store + # Ignore the default SQLite database. /db/*.sqlite3 /db/*.sqlite3-journal diff --git a/Gemfile b/Gemfile index e87fad5fc..fd9d40e56 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,10 @@ source 'https://rubygems.org' +gem "omniauth" +gem "omniauth-github" + +gem "awesome_print" # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '4.2.7' # Use sqlite3 as the database for Active Record @@ -35,6 +39,8 @@ gem 'sdoc', '~> 0.4.0', group: :doc group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug' + gem 'dotenv-rails' + gem 'better_errors' end group :development do @@ -45,3 +51,6 @@ group :development do gem 'spring' end +group :test do + gem 'minitest-reporters' +end diff --git a/Gemfile.lock b/Gemfile.lock index 187046034..853929a1f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -36,11 +36,18 @@ GEM minitest (~> 5.1) thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) + ansi (1.5.0) arel (6.0.3) + awesome_print (1.7.0) + better_errors (2.1.1) + coderay (>= 1.0.0) + erubis (>= 2.6.6) + rack (>= 0.9.0) binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) builder (3.2.2) byebug (9.0.5) + coderay (1.1.1) coffee-rails (4.1.1) coffee-script (>= 2.2.0) railties (>= 4.0.0, < 5.1.x) @@ -50,10 +57,17 @@ GEM coffee-script-source (1.10.0) concurrent-ruby (1.0.2) debug_inspector (0.0.2) + dotenv (2.1.1) + dotenv-rails (2.1.1) + dotenv (= 2.1.1) + railties (>= 4.0, < 5.1) erubis (2.7.0) execjs (2.7.0) + faraday (0.9.2) + multipart-post (>= 1.2, < 3) globalid (0.3.7) activesupport (>= 4.1.0) + hashie (3.4.6) i18n (0.7.0) jbuilder (2.6.0) activesupport (>= 3.0.0, < 5.1) @@ -63,6 +77,7 @@ GEM railties (>= 4.2.0) thor (>= 0.14, < 2.0) json (1.8.3) + jwt (1.5.6) loofah (2.0.3) nokogiri (>= 1.5.9) mail (2.6.4) @@ -72,10 +87,32 @@ GEM mime-types-data (3.2016.0521) mini_portile2 (2.1.0) minitest (5.9.1) + minitest-reporters (1.1.11) + ansi + builder + minitest (>= 5.0) + ruby-progressbar multi_json (1.12.1) + multi_xml (0.5.5) + multipart-post (2.0.0) nokogiri (1.6.8) mini_portile2 (~> 2.1.0) pkg-config (~> 1.1.7) + oauth2 (1.2.0) + faraday (>= 0.8, < 0.10) + jwt (~> 1.0) + multi_json (~> 1.3) + multi_xml (~> 0.5) + rack (>= 1.2, < 3) + omniauth (1.3.1) + hashie (>= 1.2, < 4) + rack (>= 1.0, < 3) + omniauth-github (1.1.2) + omniauth (~> 1.0) + omniauth-oauth2 (~> 1.1) + omniauth-oauth2 (1.4.0) + oauth2 (~> 1.0) + omniauth (~> 1.2) pkg-config (1.1.7) rack (1.6.4) rack-test (0.6.3) @@ -107,6 +144,7 @@ GEM rake (11.3.0) rdoc (4.2.2) json (~> 1.4) + ruby-progressbar (1.8.1) sass (3.4.22) sass-rails (5.0.6) railties (>= 4.0.0, < 6) @@ -146,10 +184,16 @@ PLATFORMS ruby DEPENDENCIES + awesome_print + better_errors byebug coffee-rails (~> 4.1.0) + dotenv-rails jbuilder (~> 2.0) jquery-rails + minitest-reporters + omniauth + omniauth-github rails (= 4.2.7) sass-rails (~> 5.0) sdoc (~> 0.4.0) @@ -160,4 +204,4 @@ DEPENDENCIES web-console (~> 2.0) BUNDLED WITH - 1.13.1 + 1.13.2 diff --git a/app/assets/javascripts/sessions.coffee b/app/assets/javascripts/sessions.coffee new file mode 100644 index 000000000..24f83d18b --- /dev/null +++ b/app/assets/javascripts/sessions.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/stylesheets/sessions.scss b/app/assets/stylesheets/sessions.scss new file mode 100644 index 000000000..7bef9cf82 --- /dev/null +++ b/app/assets/stylesheets/sessions.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the sessions controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb new file mode 100644 index 000000000..22ca8debf --- /dev/null +++ b/app/controllers/sessions_controller.rb @@ -0,0 +1,4 @@ +class SessionsController < ApplicationController + def create + end +end diff --git a/app/controllers/tasks_controller.rb b/app/controllers/tasks_controller.rb index c64be141e..f6e8a379c 100644 --- a/app/controllers/tasks_controller.rb +++ b/app/controllers/tasks_controller.rb @@ -64,7 +64,7 @@ def mark_incomplete private def user_params - params.require(:task).permit(:task_name, :description, :completion_status, :completeion_date) + params.require(:task).permit(:task_name, :description, :completion_status, :completion_date) end end diff --git a/app/helpers/sessions_helper.rb b/app/helpers/sessions_helper.rb new file mode 100644 index 000000000..309f8b2eb --- /dev/null +++ b/app/helpers/sessions_helper.rb @@ -0,0 +1,2 @@ +module SessionsHelper +end diff --git a/app/models/user.rb b/app/models/user.rb new file mode 100644 index 000000000..4a57cf079 --- /dev/null +++ b/app/models/user.rb @@ -0,0 +1,2 @@ +class User < ActiveRecord::Base +end diff --git a/app/views/sessions/create.html.erb b/app/views/sessions/create.html.erb new file mode 100644 index 000000000..c251174fe --- /dev/null +++ b/app/views/sessions/create.html.erb @@ -0,0 +1,2 @@ +

    Sessions#create

    +

    Find me in app/views/sessions/create.html.erb

    diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb new file mode 100644 index 000000000..fd4416122 --- /dev/null +++ b/config/initializers/omniauth.rb @@ -0,0 +1,3 @@ +Rails.application.config.middleware.use OmniAuth::Builder do + provider :github, ENV["GITHUB_CLIENT_ID"], ENV["GITHUB_CLIENT_SECRET"], scope: "user:email" +end diff --git a/config/routes.rb b/config/routes.rb index fdc4d3724..67f86aa12 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,5 +1,7 @@ Rails.application.routes.draw do + get 'sessions/create' + root to: 'tasks#index' get 'tasks/index' => 'tasks#index', as: 'index' @@ -20,6 +22,10 @@ post 'tasks/create' => 'tasks#create', as: 'create' + # get 'sessions/create' + + get "/auth/:provider/callback" => "sessions#create" + # The priority is based upon order of creation: first created -> highest priority. # See how all your routes lay out with "rake routes". diff --git a/db/migrate/20161018170107_create_users.rb b/db/migrate/20161018170107_create_users.rb new file mode 100644 index 000000000..f85251a60 --- /dev/null +++ b/db/migrate/20161018170107_create_users.rb @@ -0,0 +1,12 @@ +class CreateUsers < ActiveRecord::Migration + def change + create_table :users do |t| + t.string :uid + t.string :name + t.string :provider + t.string :email + + t.timestamps null: false + end + end +end diff --git a/db/schema.rb b/db/schema.rb index ff400f0a2..0313a65c3 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160930215941) do +ActiveRecord::Schema.define(version: 20161018170107) do create_table "tasks", force: :cascade do |t| t.string "task_name" @@ -22,4 +22,13 @@ t.datetime "updated_at", null: false end + create_table "users", force: :cascade do |t| + t.string "uid" + t.string "name" + t.string "provider" + t.string "email" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + end diff --git a/test/controllers/sessions_controller_test.rb b/test/controllers/sessions_controller_test.rb new file mode 100644 index 000000000..afdd8c3b3 --- /dev/null +++ b/test/controllers/sessions_controller_test.rb @@ -0,0 +1,34 @@ +require 'test_helper' + +class SessionsControllerTest < ActionController::TestCase + test "should get create" do + get :create + assert_response :success + end + + def login_a_user + request.env['omniauth.auth'] = OmniAuth.config.mock_auth[:github] + get :create, {provider: "github"} + end + + test "Can Create a user" do + assert_difference('User.count', 1) do + login_a_user + assert_response :redirect + assert_redirected_to root_path + asser_equal session[:user_id], User.find_by(uid: OmniAuth.config.mock_auth[:github][:uid], provider: "github").id + end + end + + test "If a user logs in twice it doesn't create a 2nd user" do + assert_difference('User.count', 1) do + login_a_user + end + assert_no_difference('User.count') do + login_a_user + assert_response :redirect + assert_redirected_to root_path + end + end + +end diff --git a/test/controllers/tasks_controller_test.rb b/test/controllers/tasks_controller_test.rb index fd0792be8..627f9d225 100644 --- a/test/controllers/tasks_controller_test.rb +++ b/test/controllers/tasks_controller_test.rb @@ -1,6 +1,22 @@ require 'test_helper' class TasksControllerTest < ActionController::TestCase + + test "Make sure a user can see his/her/their task" do + session[:user_id] = users(:ada).id + get :show, id: tasks(:adas_task).id + + assert_response :success + end + + test "Make sure a user cannot see another user's task" do + session[:user_id] = users(:ada).id + get :show, id: tasks(:babbages_task).id + + assert_response :redirect + assert_equal flash[:notice], "You do not have access to that task." + end + test "should get index" do get :index assert_response :success diff --git a/test/fixtures/tasks.yml b/test/fixtures/tasks.yml index 2971a9b8e..3f91624a4 100644 --- a/test/fixtures/tasks.yml +++ b/test/fixtures/tasks.yml @@ -1,13 +1,14 @@ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html -one: - task_name: MyString - description: MyText - completion_status: MyString - completion_date: MyString +adas_task: + task_name: "write first code!" + description: "Fortran" + user: :ada + completion_status: complete + completion_date: 2016-09-15 -two: - task_name: MyString - description: MyText - completion_status: MyString - completion_date: MyString +babbages_task: + task_name: "make first computer" + description: "build it!" + user: :babbage + completion_status: Incomplete diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml new file mode 100644 index 000000000..08b2857a3 --- /dev/null +++ b/test/fixtures/users.yml @@ -0,0 +1,17 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +ada: + id: 1 + uid: 11234 + name: "Helena Helga" + provider: github + email: "hh@self.com" + created_at: 2016-08-13 14:15:56 + +babbage: + id: 2 + uid: 12344 + name: "Gerdy Lurdy" + provider: github + email: "gl@self.com" + created_at: 2016-08-13 14:15:56 diff --git a/test/models/user_test.rb b/test/models/user_test.rb new file mode 100644 index 000000000..82f61e010 --- /dev/null +++ b/test/models/user_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class UserTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/test_helper.rb b/test/test_helper.rb index 92e39b2d7..df515d524 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,10 +1,26 @@ ENV['RAILS_ENV'] ||= 'test' require File.expand_path('../../config/environment', __FILE__) require 'rails/test_help' +require 'minitest-reporters' class ActiveSupport::TestCase # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. fixtures :all # Add more helper methods to be used by all tests here... + + # /test/test_helper.rb + def setup + # Once you have enabled test mode, all requests + # to OmniAuth will be short circuited to use the mock authentication hash. + # A request to /auth/provider will redirect immediately to /auth/provider/callback. + OmniAuth.config.test_mode = true + + # The mock_auth configuration allows you to set per-provider (or default) authentication + # hashes to return during testing. + OmniAuth.config.mock_auth[:github] = OmniAuth::AuthHash.new({ + provider: 'github', uid: '123545', info: { email: "a@b.com", name: "Ada" } + }) + end + end From 40ff4dfc181e9e779d76b608c0aa099a14e7164c Mon Sep 17 00:00:00 2001 From: Leah Bueing Date: Wed, 26 Oct 2016 20:52:29 -0700 Subject: [PATCH 07/10] added homepage controller, migration to add user_id to tasks, user can only see their tasks --- app/assets/javascripts/homepages.coffee | 3 ++ app/assets/stylesheets/homepages.scss | 3 ++ app/controllers/homepages_controller.rb | 12 +++++++ app/controllers/sessions_controller.rb | 26 +++++++++++++++ app/controllers/tasks_controller.rb | 12 ++++--- app/helpers/homepages_helper.rb | 2 ++ app/models/user.rb | 11 +++++++ app/views/homepages/index.html.erb | 9 ++++++ app/views/layouts/application.html.erb | 7 ++++ app/views/sessions/create.html.erb | 1 - app/views/tasks/index.html.erb | 32 +++++++++++-------- config/routes.rb | 10 ++++-- ...161026071831_add_user_id_column_to_task.rb | 5 +++ db/schema.rb | 3 +- test/controllers/homepages_controller_test.rb | 9 ++++++ 15 files changed, 121 insertions(+), 24 deletions(-) create mode 100644 app/assets/javascripts/homepages.coffee create mode 100644 app/assets/stylesheets/homepages.scss create mode 100644 app/controllers/homepages_controller.rb create mode 100644 app/helpers/homepages_helper.rb create mode 100644 app/views/homepages/index.html.erb create mode 100644 db/migrate/20161026071831_add_user_id_column_to_task.rb create mode 100644 test/controllers/homepages_controller_test.rb diff --git a/app/assets/javascripts/homepages.coffee b/app/assets/javascripts/homepages.coffee new file mode 100644 index 000000000..24f83d18b --- /dev/null +++ b/app/assets/javascripts/homepages.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/stylesheets/homepages.scss b/app/assets/stylesheets/homepages.scss new file mode 100644 index 000000000..e42583ae8 --- /dev/null +++ b/app/assets/stylesheets/homepages.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the homepages controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/homepages_controller.rb b/app/controllers/homepages_controller.rb new file mode 100644 index 000000000..033bf5597 --- /dev/null +++ b/app/controllers/homepages_controller.rb @@ -0,0 +1,12 @@ +class HomepagesController < ApplicationController + + def index + get_current_user + end + + private + def get_current_user + @user = User.find_by(id: session[:user_id]) + end + +end diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 22ca8debf..563f37a66 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -1,4 +1,30 @@ class SessionsController < ApplicationController + def create + auth_hash = request.env['omniauth.auth'] + redirect to login_failure_path unless auth_hash['uid'] + + @user = User.find_by(uid: auth_hash[:uid], provider: 'github') + if @user.nil? + # User doesn't match anything in the DB. + # Attempt to create a new user. + @user = User.build_from_github(auth_hash) + render :creation_failure unless @user.save + end + + # Save the user ID in the session + session[:user_id] = @user.id + + redirect_to index_path end + + def index + @user = User.find(session[:user_id]) # < recalls the value set in a previous request + end + + def destroy + session[:user_id] = nil + redirect_to root_path + end + end diff --git a/app/controllers/tasks_controller.rb b/app/controllers/tasks_controller.rb index f6e8a379c..9fd4f83cc 100644 --- a/app/controllers/tasks_controller.rb +++ b/app/controllers/tasks_controller.rb @@ -1,6 +1,7 @@ class TasksController < ApplicationController def index - @tasks = Task.all + @tasks = Task.where(user_id: session[:user_id]) + @user = User.find(session[:user_id]) end def new @@ -24,8 +25,8 @@ def edit def update @mytask = Task.find(params[:id].to_i) @params = params - @mytask.task_name = params[:task_name] - @mytask.description = params[:description] + @mytask.task_name = params[:task][:task_name] + @mytask.description = params[:task][:description] @mytask.save redirect_to action: "index" @@ -34,10 +35,11 @@ def update def create @params = params @mytask = Task.new - @mytask.task_name = params[:task_name] - @mytask.description = params[:description] + @mytask.task_name = params[:task][:task_name] + @mytask.description = params[:task][:description] @mytask.completion_status = "incomplete" @mytask.completion_date = "Not completed yet!" + @mytask.user_id = session[:user_id] @mytask.save redirect_to action: "index" diff --git a/app/helpers/homepages_helper.rb b/app/helpers/homepages_helper.rb new file mode 100644 index 000000000..4bd8098f3 --- /dev/null +++ b/app/helpers/homepages_helper.rb @@ -0,0 +1,2 @@ +module HomepagesHelper +end diff --git a/app/models/user.rb b/app/models/user.rb index 4a57cf079..f6c13853a 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,2 +1,13 @@ class User < ActiveRecord::Base + validates :email, :uid, :provider, presence: true + +def self.build_from_github(auth_hash) + user = User.new + user.uid = auth_hash[:uid] + user.provider = 'github' + user.name = auth_hash['info']['name'] + user.email = auth_hash['info']['email'] + + return user +end end diff --git a/app/views/homepages/index.html.erb b/app/views/homepages/index.html.erb new file mode 100644 index 000000000..7ba3ae900 --- /dev/null +++ b/app/views/homepages/index.html.erb @@ -0,0 +1,9 @@ +<% if @user %> +

    Welcome <%= @user.name %>!

    +<% else %> +

    Please log in

    +<% end %> + +<% if flash[:notice] %> +

    <%= flash[:notice] %>

    +<% end %> diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 34310a61d..93c923c4e 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -9,6 +9,13 @@

    Task List

    + <% if session[:user_id] == nil %> +

    <%= link_to "log in via github", "/auth/github" %>

    + <% else %> +

    <%= link_to "logout", sessions_destroy_path,:method => :delete %>

    + +

    <%= link_to "View my Tasks", index_path %>

    + <% end %>
    <%= yield %> diff --git a/app/views/sessions/create.html.erb b/app/views/sessions/create.html.erb index c251174fe..00c31cf79 100644 --- a/app/views/sessions/create.html.erb +++ b/app/views/sessions/create.html.erb @@ -1,2 +1 @@

    Sessions#create

    -

    Find me in app/views/sessions/create.html.erb

    diff --git a/app/views/tasks/index.html.erb b/app/views/tasks/index.html.erb index 544a119aa..14875d100 100644 --- a/app/views/tasks/index.html.erb +++ b/app/views/tasks/index.html.erb @@ -1,22 +1,26 @@ +

    Welcome <%= @user.name %>!

    +

    Get to work!

    <% @tasks.each do |task| %> -
    -

    <%= link_to( task.task_name, show_path(task.id)) %>

    + + + - <% if task.completion_status == 'incomplete' %> -

    <%= button_to 'mark as complete', {action: "mark_complete", id: task.id }, - method: :mark_complete %>

    - <% else %> -

    <%= button_to 'mark as incomplete', {action: "mark_incomplete", id: task.id }, - method: :mark_incomplete %>

    - <% end %> + <% if task.completion_status == 'incomplete' %> + + <% else %> + + <% end %> -

    <%= button_to 'edit task', {action: "edit", id: task.id }, - method: :edit %>

    + -

    <%= button_to 'delete task', {action: "delete", id: task.id }, - method: :delete, data: {confirm: "Are you sure you want to delete this task?"} %>

    - + + +

    <%= link_to( task.task_name, show_path(task.id)) %>

    <%= button_to 'mark as complete', {action: "mark_complete", id: task.id }, + method: :mark_complete %> <%= button_to 'mark as incomplete', {action: "mark_incomplete", id: task.id }, + method: :mark_incomplete %> <%= button_to 'edit task', {action: "edit", id: task.id }, + method: :edit %> <%= button_to 'delete task', {action: "delete", id: task.id }, + method: :delete, data: {confirm: "Are you sure you want to delete this task?"} %>
    <% end %>
    diff --git a/config/routes.rb b/config/routes.rb index 67f86aa12..a9de6b90d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,8 +1,6 @@ Rails.application.routes.draw do - get 'sessions/create' - -root to: 'tasks#index' +root to: 'homepages#index' get 'tasks/index' => 'tasks#index', as: 'index' @@ -24,8 +22,14 @@ # get 'sessions/create' + get 'sessions/create' + + delete 'sessions/destroy' + get "/auth/:provider/callback" => "sessions#create" + get 'homepages/index' + # The priority is based upon order of creation: first created -> highest priority. # See how all your routes lay out with "rake routes". diff --git a/db/migrate/20161026071831_add_user_id_column_to_task.rb b/db/migrate/20161026071831_add_user_id_column_to_task.rb new file mode 100644 index 000000000..3f7114b0c --- /dev/null +++ b/db/migrate/20161026071831_add_user_id_column_to_task.rb @@ -0,0 +1,5 @@ +class AddUserIdColumnToTask < ActiveRecord::Migration + def change + add_column :tasks, :user_id, :integer + end +end diff --git a/db/schema.rb b/db/schema.rb index 0313a65c3..e5dfc62f7 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20161018170107) do +ActiveRecord::Schema.define(version: 20161026071831) do create_table "tasks", force: :cascade do |t| t.string "task_name" @@ -20,6 +20,7 @@ t.datetime "completion_date" t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.integer "user_id" end create_table "users", force: :cascade do |t| diff --git a/test/controllers/homepages_controller_test.rb b/test/controllers/homepages_controller_test.rb new file mode 100644 index 000000000..46828ab12 --- /dev/null +++ b/test/controllers/homepages_controller_test.rb @@ -0,0 +1,9 @@ +require 'test_helper' + +class HomepagesControllerTest < ActionController::TestCase + test "should get index" do + get :index + assert_response :success + end + +end From f4ac91d938dcb68bc9a3b2a1f1df372df5a85a22 Mon Sep 17 00:00:00 2001 From: Leah Bueing Date: Wed, 26 Oct 2016 21:35:25 -0700 Subject: [PATCH 08/10] test complete for user model --- Gemfile | 8 ++++---- Gemfile.lock | 8 -------- test/fixtures/tasks.yml | 2 -- test/models/user_test.rb | 12 ++++++++++++ test/test_helper.rb | 4 ++-- 5 files changed, 18 insertions(+), 16 deletions(-) diff --git a/Gemfile b/Gemfile index fd9d40e56..da23e76fc 100644 --- a/Gemfile +++ b/Gemfile @@ -50,7 +50,7 @@ group :development do # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem 'spring' end - -group :test do - gem 'minitest-reporters' -end +# +# group :test do +# gem 'minitest-reporters' +# end diff --git a/Gemfile.lock b/Gemfile.lock index 853929a1f..f52268aa1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -36,7 +36,6 @@ GEM minitest (~> 5.1) thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) - ansi (1.5.0) arel (6.0.3) awesome_print (1.7.0) better_errors (2.1.1) @@ -87,11 +86,6 @@ GEM mime-types-data (3.2016.0521) mini_portile2 (2.1.0) minitest (5.9.1) - minitest-reporters (1.1.11) - ansi - builder - minitest (>= 5.0) - ruby-progressbar multi_json (1.12.1) multi_xml (0.5.5) multipart-post (2.0.0) @@ -144,7 +138,6 @@ GEM rake (11.3.0) rdoc (4.2.2) json (~> 1.4) - ruby-progressbar (1.8.1) sass (3.4.22) sass-rails (5.0.6) railties (>= 4.0.0, < 6) @@ -191,7 +184,6 @@ DEPENDENCIES dotenv-rails jbuilder (~> 2.0) jquery-rails - minitest-reporters omniauth omniauth-github rails (= 4.2.7) diff --git a/test/fixtures/tasks.yml b/test/fixtures/tasks.yml index 3f91624a4..0b46d61fb 100644 --- a/test/fixtures/tasks.yml +++ b/test/fixtures/tasks.yml @@ -3,12 +3,10 @@ adas_task: task_name: "write first code!" description: "Fortran" - user: :ada completion_status: complete completion_date: 2016-09-15 babbages_task: task_name: "make first computer" description: "build it!" - user: :babbage completion_status: Incomplete diff --git a/test/models/user_test.rb b/test/models/user_test.rb index 82f61e010..320ca4d1b 100644 --- a/test/models/user_test.rb +++ b/test/models/user_test.rb @@ -4,4 +4,16 @@ class UserTest < ActiveSupport::TestCase # test "the truth" do # assert true # end + + test "test validity of user if email, uid, and provider not present" do + user = User.new + assert_not user.valid? + user.email = "joe@schmoe.com" + assert_not user.valid? + user.uid = 12 + assert_not user.valid? + user.provider = "github" + assert user.valid? + end + end diff --git a/test/test_helper.rb b/test/test_helper.rb index df515d524..2af1c951b 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,7 +1,7 @@ ENV['RAILS_ENV'] ||= 'test' require File.expand_path('../../config/environment', __FILE__) require 'rails/test_help' -require 'minitest-reporters' +# require 'minitest-reporters' class ActiveSupport::TestCase # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. @@ -22,5 +22,5 @@ def setup provider: 'github', uid: '123545', info: { email: "a@b.com", name: "Ada" } }) end - + end From e4480115de5a65dcfb133a6bccd256c19480af86 Mon Sep 17 00:00:00 2001 From: Leah Bueing Date: Wed, 26 Oct 2016 22:19:50 -0700 Subject: [PATCH 09/10] added relationships between user and task models, only a user sees tasks that beling to them --- app/controllers/tasks_controller.rb | 8 ++++++++ app/models/task.rb | 1 + app/models/user.rb | 1 + config/routes.rb | 2 +- 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/controllers/tasks_controller.rb b/app/controllers/tasks_controller.rb index 9fd4f83cc..77e9dc993 100644 --- a/app/controllers/tasks_controller.rb +++ b/app/controllers/tasks_controller.rb @@ -1,5 +1,9 @@ class TasksController < ApplicationController def index + if @mytask.user_id != session[:user_id] + flash[:notice] = "You cannot view a task list that is not your own." + redirect_to homepage_path + end @tasks = Task.where(user_id: session[:user_id]) @user = User.find(session[:user_id]) end @@ -10,6 +14,10 @@ def new def show @mytask = Task.find(params[:id].to_i) + if @mytask.user_id != session[:user_id] + flash[:notice] = "You cannot view tasks that are not your own." + redirect_to homepage_path + end end def delete diff --git a/app/models/task.rb b/app/models/task.rb index 935f76e12..5c58542c4 100644 --- a/app/models/task.rb +++ b/app/models/task.rb @@ -1,2 +1,3 @@ class Task < ActiveRecord::Base + belongs_to :user end diff --git a/app/models/user.rb b/app/models/user.rb index f6c13853a..c3d95eb89 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,4 +1,5 @@ class User < ActiveRecord::Base + has_many :tasks validates :email, :uid, :provider, presence: true def self.build_from_github(auth_hash) diff --git a/config/routes.rb b/config/routes.rb index a9de6b90d..2fa4e024c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -28,7 +28,7 @@ get "/auth/:provider/callback" => "sessions#create" - get 'homepages/index' + get 'homepages/index', as: 'homepage' # The priority is based upon order of creation: first created -> highest priority. # See how all your routes lay out with "rake routes". From e145c7a63645532d4891b951c64a476d29859f66 Mon Sep 17 00:00:00 2001 From: Leah Bueing Date: Wed, 26 Oct 2016 22:23:45 -0700 Subject: [PATCH 10/10] users must be logged in to create a task, users cannot edit tasks that are not their own --- app/controllers/tasks_controller.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/controllers/tasks_controller.rb b/app/controllers/tasks_controller.rb index 77e9dc993..2ef7f0e86 100644 --- a/app/controllers/tasks_controller.rb +++ b/app/controllers/tasks_controller.rb @@ -15,7 +15,7 @@ def new def show @mytask = Task.find(params[:id].to_i) if @mytask.user_id != session[:user_id] - flash[:notice] = "You cannot view tasks that are not your own." + flash[:notice] = "You cannot view or edit tasks that are not your own." redirect_to homepage_path end end @@ -41,6 +41,10 @@ def update end def create + if session[:user_id] = nil + flash[:notice] = "You must be logged in to create a task." + redirect_to homepage_path + end @params = params @mytask = Task.new @mytask.task_name = params[:task][:task_name]