mirror of
https://github.com/publiclab/mapknitter.git
synced 2025-12-13 11:49:59 +01:00
* include byebug in test group * refactor feeds controller * refactor tags and maps controllers * refactor images controller * increase maps controller test coverage
291 lines
7.4 KiB
Ruby
291 lines
7.4 KiB
Ruby
require 'test_helper'
|
|
|
|
class MapsControllerTest < ActionController::TestCase
|
|
|
|
# called before every single test
|
|
def setup
|
|
@map = maps(:saugus)
|
|
end
|
|
|
|
# called after every single test
|
|
def teardown
|
|
end
|
|
|
|
test "should display image url for maps by region" do
|
|
get :region , { minlat: 40, maxlat: 50, minlon: -80, maxlon: -60, format: :json}
|
|
|
|
image_urls = []
|
|
@map.warpables.each do | warpable|
|
|
image_urls.append(warpable.image.url)
|
|
end
|
|
|
|
json_response = JSON.parse(response.body)
|
|
|
|
assert_response :success
|
|
assert_equal image_urls, json_response[0]['image_urls']
|
|
end
|
|
|
|
test "should get index" do
|
|
get :index
|
|
@maps = assigns(:maps)
|
|
|
|
assert_response :success
|
|
assert @maps.collect(&:name).include?("Saugus Landfill Incinerator")
|
|
assert @maps.collect(&:name).include?("Cubbon Park")
|
|
assert @maps.collect{ |map| map.user.login}.include?("quentin")
|
|
end
|
|
|
|
test "should not display archived maps" do
|
|
session[:user_id] = 1
|
|
get(:archive, id: @map.slug)
|
|
get :index
|
|
@maps = assigns(:maps)
|
|
|
|
assert_response :success
|
|
assert !@maps.collect(&:name).include?("Saugus Landfill Incinerator")
|
|
assert @maps.collect(&:name).include?("Cubbon Park")
|
|
assert @maps.collect{ |map| map.user.login}.include?("quentin")
|
|
end
|
|
|
|
test "should get map of maps" do
|
|
get :map
|
|
assert_response :success
|
|
assert_includes @response.body, @map.slug
|
|
end
|
|
|
|
test "should get new" do
|
|
get :new
|
|
assert_response :success
|
|
assert_not_nil assigns(:map)
|
|
end
|
|
|
|
test "should search for maps by name" do
|
|
get :search, q: 'Saugus'
|
|
@maps = assigns(:maps)
|
|
|
|
assert_response :success
|
|
assert @maps.collect(&:name).include?("Saugus Landfill Incinerator")
|
|
assert !@maps.collect(&:name).include?("Cubbon Park")
|
|
end
|
|
|
|
test "should search for maps by location" do
|
|
get :search, q: 'India'
|
|
@maps = assigns(:maps)
|
|
|
|
assert_response :success
|
|
assert !@maps.collect(&:name).include?("Saugus Landfill Incinerator")
|
|
assert @maps.collect(&:name).include?("Cubbon Park")
|
|
end
|
|
|
|
test "should search for maps by description" do
|
|
get :search, q: 'a park'
|
|
@maps = assigns(:maps)
|
|
|
|
assert_response :success
|
|
assert !@maps.collect(&:name).include?("Saugus Landfill Incinerator")
|
|
assert @maps.collect(&:name).include?("Cubbon Park")
|
|
end
|
|
|
|
test "should create map if logged in" do
|
|
session[:user_id] = 1
|
|
before_count = Map.count
|
|
post(:create, map: {
|
|
name: "Coal terminal map",
|
|
slug: "coal-terminal",
|
|
location: "London",
|
|
lat: 42.43823313018592,
|
|
lon: -70.9849190711975
|
|
})
|
|
@map = assigns(:map)
|
|
|
|
assert_response 302
|
|
assert_redirected_to '/maps/'+@map.slug
|
|
assert_not_equal before_count, Map.count
|
|
assert Map.all.collect(&:name).include?("Coal terminal map")
|
|
assert_equal @map.user.login, "quentin"
|
|
end
|
|
|
|
test "should create map if not logged in" do
|
|
before_count = Map.count
|
|
post(:create, map: {
|
|
name: "Coal terminal map",
|
|
slug: "coal-terminal",
|
|
location: "London",
|
|
lat: 42.43823313018592,
|
|
lon: -70.9849190711975
|
|
})
|
|
@map = assigns(:map)
|
|
|
|
assert_redirected_to '/maps/'+@map.slug
|
|
assert_not_equal before_count, Map.count
|
|
assert Map.all.collect(&:name).include?("Coal terminal map")
|
|
assert_nil @map.user
|
|
assert_equal 'anonymous', @map.author
|
|
end
|
|
|
|
test 'assigns current user as map author if logged in' do
|
|
before_count = Map.count
|
|
user = users(:quentin)
|
|
session[:user_id] = user.id
|
|
post :create, map: {
|
|
name: 'Yaya Center',
|
|
slug: 'yaya-center',
|
|
location: 'Nairobi',
|
|
lat: -0.3030988,
|
|
lon: 36.080026
|
|
}
|
|
@map = assigns(:map)
|
|
|
|
assert_redirected_to '/maps/'+@map.slug
|
|
assert_not_equal before_count, Map.count
|
|
assert Map.all.collect(&:name).include?('Yaya Center')
|
|
assert_equal user, @map.user
|
|
assert_equal user.login, @map.author
|
|
end
|
|
|
|
test "should render new if map not created" do
|
|
session[:user_id] = 1
|
|
before_count = Map.count
|
|
post(:create, map: {
|
|
name: "Coal terminal map",
|
|
slug: "coal-terminal"
|
|
})
|
|
@map = assigns(:map)
|
|
|
|
assert_response :success
|
|
assert_template :new
|
|
assert_equal before_count, Map.count
|
|
assert !Map.all.collect(&:name).include?("Coal terminal map")
|
|
end
|
|
|
|
test "should not delete map if not owner" do
|
|
session[:user_id] = 3
|
|
before_count = Map.count
|
|
post(:destroy, id: @map.id)
|
|
|
|
assert_redirected_to "/maps/" + @map.slug
|
|
assert_equal flash[:error], "Only admins or map owners may delete maps."
|
|
assert_equal before_count, Map.count
|
|
end
|
|
|
|
test "should delete map if owner" do
|
|
session[:user_id] = 1
|
|
before_count = Map.count
|
|
post(:destroy, id: @map.id)
|
|
|
|
assert_redirected_to '/'
|
|
assert_not_equal before_count, Map.count
|
|
assert_equal flash[:notice], "Map deleted."
|
|
end
|
|
|
|
test "should get show" do
|
|
get(:show, id: @map.id)
|
|
assert_response :success
|
|
assert_not_nil assigns(:map)
|
|
end
|
|
|
|
test "should archive map" do
|
|
session[:user_id] = 1
|
|
get(:archive, id: @map.slug)
|
|
@map.reload
|
|
|
|
assert_redirected_to '/?_=' + Time.now.to_i.to_s
|
|
assert_true @map.archived
|
|
end
|
|
|
|
test "should not archive map without enough permissions" do
|
|
session[:user_id] = 3
|
|
get(:archive, id: @map.slug)
|
|
@map.reload
|
|
|
|
assert_redirected_to '/?_=' + Time.now.to_i.to_s
|
|
assert_false @map.archived
|
|
end
|
|
|
|
test "should update map" do
|
|
session[:user_id] = 1
|
|
put(:update,
|
|
id: 1,
|
|
map: {
|
|
name: "Schrute farms",
|
|
location: "USA",
|
|
lat: 44,
|
|
lon: -74,
|
|
description: "A really green farm"
|
|
},
|
|
tags: "beets bears")
|
|
@map.reload
|
|
|
|
assert_redirected_to "/maps/" + @map.id.to_s
|
|
assert_equal "Schrute farms", @map.name
|
|
assert_equal 44, @map.lat
|
|
assert_equal -74, @map.lon
|
|
assert_equal "A really green farm", @map.description
|
|
assert @map.has_tag("beets")
|
|
assert @map.has_tag("bears")
|
|
end
|
|
|
|
test 'should not update unless logged in' do
|
|
put :update, id: 2, map: { name: 'Street 5'}
|
|
assert_redirected_to '/login?back_to=/map/2'
|
|
end
|
|
|
|
test "should display maps by region"do
|
|
get :region , { minlat: 40, maxlat: 50, minlon: -80, maxlon: -60}
|
|
@maps = assigns(:maps)
|
|
|
|
assert_response :success
|
|
assert @maps.collect(&:name).include?("Saugus Landfill Incinerator")
|
|
end
|
|
|
|
test 'should annotate maps' do
|
|
get :annotate, id: @map.id
|
|
assert_response :success
|
|
assigns(:annotations) == true
|
|
end
|
|
|
|
test 'embed' do
|
|
get :embed, id: @map.id
|
|
assert_response :success
|
|
assert_template :show
|
|
end
|
|
|
|
test 'it returns the images' do
|
|
get :images, id: @map.id
|
|
assert_response :success
|
|
assert_equal 'application/json', response.content_type
|
|
end
|
|
|
|
def export_if_logged_in
|
|
Rails.stub(:env, ActiveSupport::StringInquirer.new('development')) do
|
|
session[:user_id] = 1
|
|
post :export, id: @map.id, resolution: 5
|
|
assert_response :success
|
|
assert_equal 'complete', @response.body
|
|
end
|
|
end
|
|
|
|
def export_anonmymous_map
|
|
Rails.stub(:env, ActiveSupport::StringInquirer.new('development')) do
|
|
map = maps(:cubbon)
|
|
post :export, id: map.id, resolution: 5
|
|
assert_response :success
|
|
end
|
|
end
|
|
|
|
test 'returns the exports' do
|
|
get :exports, id: 1
|
|
assert_response :success
|
|
end
|
|
|
|
test 'license' do
|
|
get :license
|
|
assert_response :success
|
|
end
|
|
|
|
test 'featured' do
|
|
get :featured
|
|
assert_response :success
|
|
end
|
|
end
|