-
Notifications
You must be signed in to change notification settings - Fork 56
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fixed a lot of merge conflicts from prod... And made changes to pass …
…Rubocop
- Loading branch information
Showing
15 changed files
with
174 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
// Place all the behaviors and hooks related to the matching controller here. | ||
// All this logic will automatically be available in application.js. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
// Place all the styles related to the Adopted controller here. | ||
// They will automatically be included in application.css. | ||
// You can use Sass (SCSS) here: http://sass-lang.com/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
class AdoptedController < ApplicationController | ||
before_action :authenticate | ||
before_action :adopted_things, :make_cur_page, :make_other_pages, only: [:index] | ||
|
||
# GET /api/v1/drains/adopted | ||
# Optional params: | ||
# | ||
# page | ||
def index | ||
@results = {next_page: @next_page, prev_page: @prev_page, total_pages: @adopted_things.page(1).total_pages, drains: @things} | ||
render json: @results | ||
end | ||
|
||
private | ||
|
||
def adopted_things | ||
@adopted_things = Thing.where.not(user_id: nil) | ||
end | ||
|
||
# Determine if the user supplied a valid page number, if not they get first page | ||
def make_cur_page | ||
page = params[:page].blank? || params[:page].to_i.zero? ? 1 : params[:page] | ||
@cur_page = @adopted_things.page(page) | ||
@things = format_fields(@cur_page) | ||
end | ||
|
||
# Determine next and previous pages, so the user can navigate if needed | ||
def make_other_pages | ||
@next_page = @cur_page.next_page.nil? ? -1 : @cur_page.next_page | ||
@prev_page = @cur_page.prev_page.nil? ? -1 : @cur_page.prev_page | ||
end | ||
|
||
def format_fields(obj) | ||
obj.map { |thing| {latitude: thing.lat, longitude: thing.lng, city_id: 'N-' + thing.city_id.to_s} } | ||
end | ||
|
||
def authenticate | ||
authenticate_or_request_with_http_basic('Administration') do |username, password| | ||
user = User.find_by(email: username) | ||
if user && user.valid_password?(password) | ||
return true if user.admin? | ||
render html: '<div> You must be an admin to access this page </div>' | ||
end | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
module AdoptedHelper | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
<%- headers = ['Lat', 'Lng', 'City ID'] -%> | ||
<%= CSV.generate_line headers %> | ||
<%- @allthings.each do |thing| -%> | ||
<%= CSV.generate_line([thing.lat, thing.lng, "N-" + thing.city_id.to_s]) -%> | ||
<%- end -%> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
Kaminari.configure do |config| | ||
config.default_per_page = 100 | ||
config.max_per_page = 1000 | ||
# config.window = 4 | ||
# config.outer_window = 0 | ||
# config.left = 0 | ||
# config.right = 0 | ||
# config.page_method_name = :page | ||
# config.param_name = :page | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
require 'test_helper' | ||
|
||
class AdoptedControllerTest < ActionController::TestCase | ||
setup do | ||
request.env['devise.mapping'] = Devise.mappings[:user] | ||
@user = users(:erik) | ||
@user2 = users(:dan) | ||
@admin = users(:admin) | ||
@thing = things(:thing_1) | ||
@thing2 = things(:thing_2) | ||
@thing.user_id = @user.id | ||
@thing2.user_id = @user2.id | ||
@thing.save | ||
@thing2.save | ||
end | ||
|
||
test 'should get index' do | ||
@request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials(@user.email, 'correct') | ||
|
||
get :index | ||
assert_response :success | ||
end | ||
|
||
test 'should get json' do | ||
@request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials(@admin.email, 'correct') | ||
|
||
get :index | ||
assert_equal 'application/json', @response.content_type | ||
end | ||
|
||
test 'only admins get access' do | ||
@request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials(@user.email, 'correct') | ||
|
||
get :index | ||
assert_equal 'text/html', @response.content_type # If user were an admin, content_type would be JSON, since that is default | ||
end | ||
|
||
test 'drain data is correct' do | ||
@request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials(@admin.email, 'correct') | ||
|
||
get :index | ||
random_drain = JSON.parse(@response.body)['drains'].first | ||
drain = Thing.find_by(city_id: random_drain['city_id'].gsub('N-', '')) | ||
assert_not_nil drain | ||
assert_equal drain.lat.to_s, random_drain['latitude'] | ||
assert_equal drain.lng.to_s, random_drain['longitude'] | ||
end | ||
|
||
test 'page counts' do | ||
@request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials(@admin.email, 'correct') | ||
|
||
get :index | ||
json = JSON.parse(@response.body) | ||
assert_equal json['next_page'], -1 | ||
assert_equal json['prev_page'], -1 | ||
assert_equal json['total_pages'], 1 | ||
end | ||
end |