Files
mapknitter/test/controllers/comments_controller_test.rb
Álax de Carvalho Alves 27f8941a40 Upgrading to Rails 5.2.3 (#891)
* Configurations update for rails 4.0

* ActiveSupport::Testing::Performance extracted to a gem

* ruby prof required as a dependency

* disable rubocop on bin folder

* http patch

* Comment out to allow testing

* no longer supports plugin loading

* lock to sprockets 2.12

* Active record patches

* remove deprecated test syntax

* fix failing tests

* change new super class

* replace right_aws with right_aws_api

right_aws is no longer maintained, was throwing an error

* lock to rails 4.2.11.1

* change rails version in install script

* remove deprecation warnings

* Change test lib to minitest, add  minitest reporters

* make app work

* active record find patches

* root_in_json include defaulted to false

* confirm option removed in link helper

* cookies serializer changed to hybrid

* Change render :text to :plain

render :text will be deprecated and poses a security risk

* console for dev web

* Check and fix interface functionality

* fix export functionality

* add protected attributes for the warpable model

* fix image upload

* Fix comments and images failing tests

* include mass assignment security in annotations

* render html for update images

* clear mail array before every test

* Fix codeclimate issues

* skip failing test

The test is failing because of different names in model(warpable) and
controller(images) skipping this for now until we decide if we want to
standardize the names

* replace unprotected redirects

* Fix codeclimate issues

* Autofixing rubocop offenses and Problematic test for #578 (#667)

* Autofixing rubocop offenses

* Adding Rubocop to Travis pipelines and development branch

* Fixing maps controller test

* Fixing remaining offenses

* change post test to create since action new is a get action

* remove unprotected redirects

* Fix codeclimate issues

* Add yarn

* Remove error log

* Fix oauth icons

* Modify package.json

* Add yarn install to start.sh

* Add leaflet google

* Remove leaflet-google from package json

* remove passenger error logs

* Fix install script

* Remove flag

* Fix gemfile.lock

* Fix gemfile.lock

* Fix login

* Upgrade Gemfile to Rails 5.0

* require rake'

* Change config files

* Add application record

* Bump mysql

* Local builds for Travis runners (#672)

* Using local mysql for travis

* Fix codeclimate issues

* Refactoring yamls

* Autofixing rubocop offenses and Problematic test for #578 (#667)

* Autofixing rubocop offenses

* Adding Rubocop to Travis pipelines and development branch

* Fixing maps controller test

* Fixing remaining offenses

* Fixing unit tests

* Adding docker build to travis pipelines

* Adding docker build to travis pipelines

* Staging builds in travis

* fix travis.yml

* Upgrading sintax of assets and using required gems

* Using updated version of GDAL and installing required dependencies

* Enabling cache in between builds

* Test yarn for travis

* Conditionalize rake db:setup for travis

* Add semicolon

* Remove comment

* modify database.yml

* Migrate seperately

* Run create only for production

* Locking newer Rails v

* Running update task

* Adding missing bootsnap gem

* Fixing missing database

* Adding missing listen gem

* Fixing schema example version

* Fixing migration versions

* Updating dependencies for Rails 5

* Adding ApplicationMailer abstraction

* Adding required initializers

* Prefer require_relative instead of full path

* Making associations not required by default

* Regenerating schema file

* Hotfixing MassAssigment

* Upgrade web-console, remove mysql adapter override

* Remove attr_accessible

* Add rails-controller-testing gem

* Follow new syntax for tests

* Remove extra web-console from gemfile

* Regenerating lock file

* Fixing rubocop offenses and bundler version

* Using correct Paperclip class as in https://github.com/rails/rails/issues/26404#issuecomment-502129936

* Fix images functional tests

* images controller test typecast to string

* Fix rails logger

* Fix map tests

* Bumping rubocop version

* Autofixing rubocop offenses

* Including performance cop to rubocop

* Refactoring deprecated routing and secret_token

* Fixing routes for feed controller

* Using correct routes for RSS builder

* Fixing missing routes

* Fixing travis bundler and yarn cache

* Fixing bundle path

* Splitting bundle and yarn verifications

* Autofixing rubocop offenses

* Fixing prod host for travis, private class usage and rubocop offenses

* Upgrade to Rails 5.2 (#685)

* Upgrade Gemfile to Rails 5.0

* require rake'

* Change config files

* Add application record

* Bump mysql

* Locking newer Rails v

* Running update task

* Adding missing bootsnap gem

* Fixing missing database

* Adding missing listen gem

* Fixing schema example version

* Fixing migration versions

* Updating dependencies for Rails 5

* Adding ApplicationMailer abstraction

* Adding required initializers

* Prefer require_relative instead of full path

* Making associations not required by default

* Regenerating schema file

* Hotfixing MassAssigment

* Upgrade web-console, remove mysql adapter override

* Remove attr_accessible

* Add rails-controller-testing gem

* Follow new syntax for tests

* Remove extra web-console from gemfile

* Regenerating lock file

* Fixing rubocop offenses and bundler version

* Using correct Paperclip class as in https://github.com/rails/rails/issues/26404#issuecomment-502129936

* Fix images functional tests

* images controller test typecast to string

* Fix rails logger

* Fix map tests

* Bumping rubocop version

* Autofixing rubocop offenses

* Including performance cop to rubocop

* Refactoring deprecated routing and secret_token

* Fixing routes for feed controller

* Using correct routes for RSS builder

* Fixing missing routes

* Fixing travis bundler and yarn cache

* Fixing bundle path

* Splitting bundle and yarn verifications

* Fixing prod host for travis, private class usage and rubocop offenses

* Enforcing params usage on get method

* Using correct folder names to Rails >5 conventions

* Enforcing params wrapping and adding missing front_ui route

* Precompiling assets before serving

* Improving Jenkins startup script

* Using supported docker yaml version by Jenkins

* Adding task to check database existance

* Improving start script

* Improving Makefile's recipes and target

* Adding task to check database existance

* Improving start script

* Improving Makefile's recipes and target

* Improving Makefile's recipes and target

* Patching https://github.com/publiclab/mapknitter/pull/803

* Improving Jenkins setup

* Fix map loading

* h

* Fixing Leaflet-Environmental-Layers map loading

* h

* leaflet

* fix

* change

* updates

* stop precompiling assets

* precompile

* Using correct Yarn, NPM and Node version, avoiding mismatch

* Removing unwanted tags.js invocation

* Improving Makefile recipe

* Using node_modules/ as dependencies folder, since https://github.com/sass/node-sass/issues/2050#issuecomment-317233552

* Upgrading Yarn dependencies

* Removing duplicate rubocop directive

* Removing test/ from codeclimate checks

* Removing fixed FIXME comments

* Removing fixed FIXME comments

* Updating docs in README

* Bumping recaptcha and include methods

* Fixing migration version

* Using strong params in requests

* Using strong params in requests

* Use Rack::Test::UploadedFile instead of ActionDispatch::Http::UploadedFile

* Remove rubocop linter

* Fix codeclimate issues

* Fix minor asset issue

* Remove manual asset references and add them to application js

* Fix asset ordering in application.js

* Configure System tests  (#936)

* Add new system tests and fix minor asset loading

* modify test

* Add chromedriver to travis

* Add sudo

* Add dependencies to dockerfile

* Properly installing chrome and chromedriver

* Fixing Map loading since merges
2019-08-15 15:59:45 -04:00

193 lines
4.8 KiB
Ruby

require 'test_helper'
class CommentsControllerTest < ActionController::TestCase
# called before every single test
def setup
@map = maps(:saugus)
@emails = ActionMailer::Base.deliveries
@emails.clear
end
def teardown
end
test "should not create comment if not logged in" do
before_count = Comment.count
post(:create,
params: { map_id: @map.slug,
comment: {
user_id: 1
}})
assert_response :success
assert_equal before_count, Comment.count
end
test "should create comment" do
session[:user_id] = 1
before_count = Comment.count
post(:create,
params: { comment: {
map_id: @map.id,
body: "I'm gonna troll you!"
}})
assert_response :success
assert_not_equal before_count, Comment.count
assert_equal "I'm gonna troll you!", @map.comments.last.body
end
test "should update comment if commenter" do
@comment = comments(:four)
session[:user_id] = 4
put(:update,
params: { id: @comment.id,
comment: {
map_id: @map.id,
body: "I'm gonna troll you!"
}})
# refresh the object
@comment.reload
assert_redirected_to "/maps/" + @map.slug
assert_equal "I'm gonna troll you!", @comment.body
end
test "should not update comment if not commenter" do
@comment = comments(:one)
session[:user_id] = 3
put(:update,
params: { id: @comment.id,
map_id: @map.slug,
comment: {
body: "I'm gonna troll you!"
}})
@comment.reload
assert_redirected_to "/login"
assert_not_equal "I'm gonna troll you!", @comment.body
assert_equal "I'll just leave a comment, why don't I.", @comment.body
assert_equal "You do not have permissions to update that comment.", flash[:error]
end
test "should not update comment if not logged in" do
@comment = comments(:one)
put(:update,
params: { id: @comment.id,
map_id: @map.slug,
comment: {
body: "I'm gonna troll you!"
}})
@comment.reload
assert_redirected_to "/login"
assert_not_equal "I'm gonna troll you!", @comment.body
assert_equal "I'll just leave a comment, why don't I.", @comment.body
assert_equal "You do not have permissions to update that comment.", flash[:error]
end
test "should delete comment" do
@comment = comments(:one)
session[:user_id] = 1
before_count = Comment.count
delete(:destroy,
params: { id: @comment.id,
map_id: @map.slug})
assert_redirected_to "/maps/" + @map.slug
assert_not_equal before_count, Comment.count
assert_equal "Comment deleted.", flash[:notice]
end
test "should not delete comment if not commmenter" do
@comment = comments(:one)
session[:user_id] = 3
before_count = Comment.count
delete(:destroy,
params: { id: @comment.id,
map_id: @map.slug})
assert_redirected_to "/maps/" + @map.slug
assert_equal before_count, Comment.count
assert_equal "You do not have permission to delete that comment.", flash[:error]
end
test "should not delete comment if not logged in" do
@comment = comments(:one)
before_count = Comment.count
delete(:destroy,
params: { id: @comment.id,
map_id: @map.slug})
assert_redirected_to "/maps/" + @map.slug
assert_equal before_count, Comment.count
assert_equal "You do not have permission to delete that comment.", flash[:error]
end
test "should not send email to author" do
@user = users(:quentin)
session[:user_id] = @user.id
post(:create,
params: { comment: {
map_id: @map.id,
body: "I'm gonna troll you!"
}})
assert_response :success
assert_not @emails.collect(&:to).include?([@user.email])
end
test "should send email to author if someone else comments" do
@user = users(:quentin)
session[:user_id] = 3
post(:create,
params: { comment: {
map_id: @map.id,
body: "I'm gonna troll you!"
}})
assert_response :success
assert @emails.collect(&:to).include?([@user.email])
assert @emails.collect(&:subject).include?("New comment on '#{@map.name}'")
end
test "should send email to all commenters on commenting" do
@joshua = users(:joshua)
@chris = users(:chris)
session[:user_id] = @chris.id
post(:create,
params: { comment: {
map_id: @map.id,
body: "I'm gonna troll you!"
}})
session[:user_id] = @joshua.id
post(:create,
params: { comment: {
map_id: @map.id,
body: "Yeah we'll see!"
}})
assert_response :success
assert @emails.collect(&:to).include?([@chris.email])
assert @emails.collect(&:subject).include?("New comment on '#{@map.name}'")
end
end