diff --git a/.rspec b/.rspec new file mode 100644 index 0000000..83e16f8 --- /dev/null +++ b/.rspec @@ -0,0 +1,2 @@ +--color +--require spec_helper diff --git a/Gemfile b/Gemfile index 822315c..4102717 100644 --- a/Gemfile +++ b/Gemfile @@ -1,5 +1,13 @@ source 'https://rubygems.org' +def darwin_only(require_as) + RbConfig::CONFIG['host_os'] =~ /darwin/ && require_as +end + +def linux_only(require_as) + RbConfig::CONFIG['host_os'] =~ /linux/ && require_as +end + gem 'rails', '4.2.3' gem 'sqlite3' @@ -7,14 +15,33 @@ gem 'sass-rails', '~> 5.0' gem 'uglifier', '>= 1.3.0' gem 'coffee-rails', '~> 4.1.0' gem 'jquery-rails' -gem 'turbolinks' gem 'jbuilder', '~> 2.0' +gem 'slim-rails' +gem 'bootstrap-sass' gem 'sdoc', '~> 0.4.0', group: :doc -group :development, :test do - gem 'byebug' - gem 'web-console', '~> 2.0' - gem 'spring' +group :development do + gem 'bullet' + gem 'better_errors' + gem 'quiet_assets' end +group :development, :test do + gem 'pry' + gem 'spring' + gem 'dotenv-rails' + gem 'rspec-rails' + gem 'spring-commands-rspec' + gem 'guard-rspec' +end + +group :test do + gem 'capybara' + gem 'factory_girl_rails' + gem 'database_cleaner', '~> 1.4.1' + gem 'launchy' + gem 'faker' + gem 'capybara-webkit' + gem 'shoulda' +end diff --git a/Gemfile.lock b/Gemfile.lock index 4127425..b419a9b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -36,12 +36,32 @@ GEM minitest (~> 5.1) thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) + addressable (2.3.8) arel (6.0.0) - binding_of_caller (0.7.2) - debug_inspector (>= 0.0.1) + autoprefixer-rails (5.2.1) + execjs + json + better_errors (2.1.1) + coderay (>= 1.0.0) + erubis (>= 2.6.6) + rack (>= 0.9.0) + bootstrap-sass (3.3.5.1) + autoprefixer-rails (>= 5.0.0.1) + sass (>= 3.3.0) builder (3.2.2) - byebug (5.0.0) - columnize (= 0.9.0) + bullet (4.14.7) + activesupport (>= 3.0.0) + uniform_notifier (~> 1.9.0) + capybara (2.4.4) + mime-types (>= 1.16) + nokogiri (>= 1.3.3) + rack (>= 1.0.0) + rack-test (>= 0.5.4) + xpath (~> 2.0) + capybara-webkit (1.6.0) + capybara (>= 2.3.0, < 2.5.0) + json + coderay (1.1.0) coffee-rails (4.1.0) coffee-script (>= 2.2.0) railties (>= 4.0.0, < 5.0) @@ -49,12 +69,39 @@ GEM coffee-script-source execjs coffee-script-source (1.9.1.1) - columnize (0.9.0) - debug_inspector (0.0.2) + database_cleaner (1.4.1) + diff-lcs (1.2.5) + dotenv (2.0.2) + dotenv-rails (2.0.2) + dotenv (= 2.0.2) + railties (~> 4.0) erubis (2.7.0) execjs (2.5.2) + factory_girl (4.5.0) + activesupport (>= 3.0.0) + factory_girl_rails (4.5.0) + factory_girl (~> 4.5.0) + railties (>= 3.0.0) + faker (1.4.3) + i18n (~> 0.5) + ffi (1.9.10) + formatador (0.2.5) globalid (0.3.5) activesupport (>= 4.1.0) + guard (2.12.8) + formatador (>= 0.2.4) + listen (>= 2.7, <= 4.0) + lumberjack (~> 1.0) + nenv (~> 0.1) + notiffany (~> 0.0) + pry (>= 0.9.12) + shellany (~> 0.0) + thor (>= 0.18.1) + guard-compat (1.2.1) + guard-rspec (4.6.0) + guard (~> 2.1) + guard-compat (~> 1.1) + rspec (>= 2.99.0, < 4.0) i18n (0.7.0) jbuilder (2.3.1) activesupport (>= 3.0.0, < 5) @@ -64,16 +111,33 @@ GEM railties (>= 4.2.0) thor (>= 0.14, < 2.0) json (1.8.3) + launchy (2.4.3) + addressable (~> 2.3) + listen (3.0.1) + rb-fsevent (>= 0.9.3) + rb-inotify (>= 0.9) loofah (2.0.2) nokogiri (>= 1.5.9) + lumberjack (1.0.9) mail (2.6.3) mime-types (>= 1.16, < 3) + method_source (0.8.2) mime-types (2.6.1) mini_portile (0.6.2) minitest (5.7.0) multi_json (1.11.2) + nenv (0.2.0) nokogiri (1.6.6.2) mini_portile (~> 0.6.0) + notiffany (0.0.6) + nenv (~> 0.1) + shellany (~> 0.0) + pry (0.10.1) + coderay (~> 1.1.0) + method_source (~> 0.8.1) + slop (~> 3.4) + quiet_assets (1.1.0) + railties (>= 3.1, < 5.0) rack (1.6.4) rack-test (0.6.3) rack (>= 1.0) @@ -102,7 +166,31 @@ GEM rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) rake (10.4.2) + rb-fsevent (0.9.5) + rb-inotify (0.9.5) + ffi (>= 0.5.0) rdoc (4.2.0) + rspec (3.3.0) + rspec-core (~> 3.3.0) + rspec-expectations (~> 3.3.0) + rspec-mocks (~> 3.3.0) + rspec-core (3.3.1) + rspec-support (~> 3.3.0) + rspec-expectations (3.3.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.3.0) + rspec-mocks (3.3.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.3.0) + rspec-rails (3.3.2) + actionpack (>= 3.0, < 4.3) + activesupport (>= 3.0, < 4.3) + railties (>= 3.0, < 4.3) + rspec-core (~> 3.3.0) + rspec-expectations (~> 3.3.0) + rspec-mocks (~> 3.3.0) + rspec-support (~> 3.3.0) + rspec-support (3.3.0) sass (3.4.15) sass-rails (5.0.3) railties (>= 4.0.0, < 5.0) @@ -113,7 +201,26 @@ GEM sdoc (0.4.1) json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) + shellany (0.0.1) + shoulda (3.5.0) + shoulda-context (~> 1.0, >= 1.0.1) + shoulda-matchers (>= 1.4.1, < 3.0) + shoulda-context (1.2.1) + shoulda-matchers (2.8.0) + activesupport (>= 3.0.0) + slim (3.0.6) + temple (~> 0.7.3) + tilt (>= 1.3.3, < 2.1) + slim-rails (3.0.1) + actionmailer (>= 3.1, < 5.0) + actionpack (>= 3.1, < 5.0) + activesupport (>= 3.1, < 5.0) + railties (>= 3.1, < 5.0) + slim (~> 3.0) + slop (3.6.0) spring (1.3.6) + spring-commands-rspec (1.0.4) + spring (>= 0.9.1) sprockets (3.2.0) rack (~> 1.0) sprockets-rails (2.3.2) @@ -121,38 +228,49 @@ GEM activesupport (>= 3.0) sprockets (>= 2.8, < 4.0) sqlite3 (1.3.10) + temple (0.7.6) thor (0.19.1) thread_safe (0.3.5) tilt (1.4.1) - turbolinks (2.5.3) - coffee-rails tzinfo (1.2.2) thread_safe (~> 0.1) uglifier (2.7.1) execjs (>= 0.3.0) json (>= 1.8.0) - web-console (2.1.3) - activemodel (>= 4.0) - binding_of_caller (>= 0.7.2) - railties (>= 4.0) - sprockets-rails (>= 2.0, < 4.0) + uniform_notifier (1.9.0) + xpath (2.0.0) + nokogiri (~> 1.3) PLATFORMS ruby DEPENDENCIES - byebug + better_errors + bootstrap-sass + bullet + capybara + capybara-webkit coffee-rails (~> 4.1.0) + database_cleaner (~> 1.4.1) + dotenv-rails + factory_girl_rails + faker + guard-rspec jbuilder (~> 2.0) jquery-rails + launchy + pry + quiet_assets rails (= 4.2.3) + rspec-rails sass-rails (~> 5.0) sdoc (~> 0.4.0) + shoulda + slim-rails spring + spring-commands-rspec sqlite3 - turbolinks uglifier (>= 1.3.0) - web-console (~> 2.0) BUNDLED WITH 1.10.5 diff --git a/Guardfile b/Guardfile new file mode 100644 index 0000000..d147a32 --- /dev/null +++ b/Guardfile @@ -0,0 +1,72 @@ +# A sample Guardfile +# More info at https://github.com/guard/guard#readme + +## Uncomment and set this to only include directories you want to watch +# directories %w(app lib config test spec features) \ +# .select{|d| Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")} + +## Note: if you are using the `directories` clause above and you are not +## watching the project directory ('.'), then you will want to move +## the Guardfile to a watched dir and symlink it back, e.g. +# +# $ mkdir config +# $ mv Guardfile config/ +# $ ln -s config/Guardfile . +# +# and, you'll have to watch "config/Guardfile" instead of "Guardfile" + +# Note: The cmd option is now required due to the increasing number of ways +# rspec may be run, below are examples of the most common uses. +# * bundler: 'bundle exec rspec' +# * bundler binstubs: 'bin/rspec' +# * spring: 'bin/rspec' (This will use spring if running and you have +# installed the spring binstubs per the docs) +# * zeus: 'zeus rspec' (requires the server to be started separately) +# * 'just' rspec: 'rspec' + +guard :rspec, cmd: "bundle exec rspec" do + notification :off + + require "guard/rspec/dsl" + dsl = Guard::RSpec::Dsl.new(self) + + # Feel free to open issues for suggestions and improvements + + # RSpec files + rspec = dsl.rspec + watch(rspec.spec_helper) { rspec.spec_dir } + watch(rspec.spec_support) { rspec.spec_dir } + watch(rspec.spec_files) + + # Ruby files + ruby = dsl.ruby + dsl.watch_spec_files_for(ruby.lib_files) + + # Rails files + rails = dsl.rails(view_extensions: %w(erb haml slim)) + dsl.watch_spec_files_for(rails.app_files) + dsl.watch_spec_files_for(rails.views) + + watch(rails.controllers) do |m| + [ + rspec.spec.("routing/#{m[1]}_routing"), + rspec.spec.("controllers/#{m[1]}_controller"), + rspec.spec.("acceptance/#{m[1]}") + ] + end + + # Rails config changes + watch(rails.spec_helper) { rspec.spec_dir } + watch(rails.routes) { "#{rspec.spec_dir}/routing" } + watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" } + + # Capybara features specs + watch(rails.view_dirs) { |m| rspec.spec.("features/#{m[1]}") } + watch(rails.layouts) { |m| rspec.spec.("features/#{m[1]}") } + + # Turnip features and steps + watch(%r{^spec/acceptance/(.+)\.feature$}) + watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) do |m| + Dir[File.join("**/#{m[1]}.feature")][0] || "spec/acceptance" + end +end diff --git a/README.md b/README.md new file mode 100644 index 0000000..60d5fba --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +# creddit + +C(lone)reddit + +## Development + +Some stuff for notifications later + +### Mac + +* `brew install terminal-notifier` + +### Ubuntu 14.04 + + diff --git a/README.rdoc b/README.rdoc deleted file mode 100644 index dd4e97e..0000000 --- a/README.rdoc +++ /dev/null @@ -1,28 +0,0 @@ -== 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/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index e07c5a8..a15adc5 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -12,5 +12,5 @@ // //= require jquery //= require jquery_ujs -//= require turbolinks +//= require bootstrap-sprockets //= require_tree . diff --git a/app/assets/stylesheets/custom.scss b/app/assets/stylesheets/custom.scss new file mode 100644 index 0000000..baccee2 --- /dev/null +++ b/app/assets/stylesheets/custom.scss @@ -0,0 +1,2 @@ +@import "bootstrap-sprockets"; +@import "bootstrap"; diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb new file mode 100644 index 0000000..ea1bb0c --- /dev/null +++ b/spec/rails_helper.rb @@ -0,0 +1,24 @@ +# This file is copied to spec/ when you run 'rails generate rspec:install' +ENV['RAILS_ENV'] ||= 'test' +require File.expand_path('../../config/environment', __FILE__) + +# Prevent database truncation if the environment is production +abort("The Rails environment is running in production mode!") if Rails.env.production? +require 'spec_helper' +require 'rspec/rails' +require 'shoulda/matchers' +require 'capybara/rails' +require 'capybara/rspec' + +require 'support/capybara' +require 'support/database_cleaner' +require 'support/factory_girl' + +ActiveRecord::Migration.maintain_test_schema! + +RSpec.configure do |config| + config.fixture_path = "#{::Rails.root}/spec/fixtures" + config.use_transactional_fixtures = false + + config.infer_spec_type_from_file_location! +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 0000000..b52ab21 --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,15 @@ +RSpec.configure do |config| + config.expect_with :rspec do |expectations| + expectations.include_chain_clauses_in_custom_matcher_descriptions = true + end + + config.mock_with :rspec do |mocks| + mocks.verify_partial_doubles = true + end + + config.filter_run :focus + config.run_all_when_everything_filtered = true + + config.order = :random + Kernel.srand config.seed +end diff --git a/spec/support/capybara.rb b/spec/support/capybara.rb new file mode 100644 index 0000000..2eb9762 --- /dev/null +++ b/spec/support/capybara.rb @@ -0,0 +1,2 @@ +Capybara.javascript_driver = :webkit +Capybara.asset_host = 'http://localhost:3000' diff --git a/spec/support/database_cleaner.rb b/spec/support/database_cleaner.rb new file mode 100644 index 0000000..7b76152 --- /dev/null +++ b/spec/support/database_cleaner.rb @@ -0,0 +1,21 @@ +RSpec.configure do |config| + config.before(:suite) do + DatabaseCleaner.clean_with(:truncation) + end + + config.before(:each) do + DatabaseCleaner.strategy = :truncation + end + + config.before(:each, :js => true) do + DatabaseCleaner.strategy = :truncation + end + + config.before(:each) do + DatabaseCleaner.start + end + + config.append_after(:each) do + DatabaseCleaner.clean + end +end diff --git a/spec/support/factory_girl.rb b/spec/support/factory_girl.rb new file mode 100644 index 0000000..eec437f --- /dev/null +++ b/spec/support/factory_girl.rb @@ -0,0 +1,3 @@ +RSpec.configure do |config| + config.include FactoryGirl::Syntax::Methods +end diff --git a/test/controllers/.keep b/test/controllers/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/fixtures/.keep b/test/fixtures/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/helpers/.keep b/test/helpers/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/integration/.keep b/test/integration/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/mailers/.keep b/test/mailers/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/models/.keep b/test/models/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/test_helper.rb b/test/test_helper.rb deleted file mode 100644 index 92e39b2..0000000 --- a/test/test_helper.rb +++ /dev/null @@ -1,10 +0,0 @@ -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