-
Notifications
You must be signed in to change notification settings - Fork 39
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 878c3f3
Showing
14 changed files
with
1,102 additions
and
0 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
require './setup' | ||
|
||
class ProjectsController | ||
def index | ||
# When user is admitted at least a week ago we show it's active projects | ||
if current_user && current_user.created_at < (Time.now - 7*24*3600) | ||
@projects = current_user.active_projects | ||
|
||
# If not admitted we show some featured projects, and set a marketing flash | ||
# message when user is new | ||
else | ||
if current_user && current_user.created_at > (Time.now - 7*24*3600) | ||
@flash_msg = 'Sign up for having your own projects, and see promo ones!' | ||
end | ||
@projects = Project.featured | ||
end | ||
end | ||
end | ||
|
||
require './tests' if __FILE__ == $0 |
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,15 @@ | ||
class User < Struct.new(:created_at) | ||
def active_projects | ||
[:user_active_projects] | ||
end | ||
end | ||
|
||
class Project | ||
def self.featured | ||
[:public_featured_projects] | ||
end | ||
end | ||
|
||
class ProjectsController | ||
attr_accessor :current_user, :flash_msg, :projects | ||
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,24 @@ | ||
#!/usr/bin/env ruby -w | ||
require 'minitest/autorun' | ||
|
||
class TestProjectsController < Minitest::Test | ||
def setup | ||
@controller = ProjectsController.new | ||
@admitted_user = User.new(Time.new(2013, 11, 10)) | ||
@new_user = User.new(Time.new) | ||
end | ||
|
||
def test_for_admitted_user | ||
@controller.current_user = @admitted_user | ||
@controller.index | ||
assert_equal [:user_active_projects], @controller.projects | ||
assert_nil @controller.flash_msg | ||
end | ||
|
||
def test_for_new_user | ||
@controller.current_user = @new_user | ||
@controller.index | ||
assert_equal [:public_featured_projects], @controller.projects | ||
assert_equal 'Sign up for having your own projects, and see promo ones!', @controller.flash_msg | ||
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
require './setup' | ||
|
||
class User | ||
def last_subscription | ||
subscriptions.last | ||
end | ||
|
||
def cancel_subscription | ||
last_subscription && last_subscription.cancel | ||
end | ||
end | ||
|
||
class StatusReportJob | ||
def self.perform | ||
users = {} | ||
User.all.map do |user| | ||
users[user.name] = { | ||
name: (user.last_subscription && user.last_subscription.name) || 'none', | ||
status: (user.last_subscription && user.last_subscription.status) || '-', | ||
trial_days: user.last_subscription && user.last_subscription.trial_days || '-' | ||
} | ||
end | ||
users | ||
end | ||
end | ||
|
||
require './tests' if __FILE__ == $0 |
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,30 @@ | ||
class Subscription | ||
def name | ||
'Monthly Subscription' | ||
end | ||
def status | ||
'active' | ||
end | ||
def trial_days | ||
14 | ||
end | ||
def cancel | ||
# telling payment gateway... | ||
true | ||
end | ||
end | ||
|
||
class User | ||
attr_accessor :name, :subscriptions | ||
|
||
def initialize(name, subscriptions) | ||
@name = name | ||
@subscriptions = subscriptions | ||
end | ||
|
||
def self.all | ||
suscripto = User.new('Bob', [Subscription.new]) | ||
no_suscripto = User.new('Patricio', []) | ||
[suscripto, no_suscripto] | ||
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
#!/usr/bin/env ruby -w | ||
require 'minitest/autorun' | ||
|
||
class TestApp < Minitest::Test | ||
def test_status_report_job | ||
response = { | ||
"Bob" => { name: "Monthly Subscription", status: "active", trial_days: 14}, | ||
"Patricio" => { name: "none", status: "-", trial_days: "-"} | ||
} | ||
assert_equal response, StatusReportJob.perform | ||
end | ||
|
||
def test_subscription_cancel | ||
user = User.all.first | ||
assert user.cancel_subscription | ||
|
||
user = User.all.last | ||
assert !user.cancel_subscription | ||
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
#!/usr/bin/env ruby -w | ||
require 'csv' | ||
|
||
# 1. Crear una clase que se inicializa con los mismos argumentos que el método | ||
# 2. Copiar y pegar el método en la nueva clase, quitando sus argumentos | ||
# 3. Reemplazar el método original por una llamada a la clase nueva | ||
# 4. Extraer cada pedazo de código que se puede identificar como un subpaso, | ||
# y darle un nombre apropiado. Intention Revealing Method For The Win. | ||
class Formatter | ||
def row_per_day_format(file_name) | ||
file = File.open file_name, 'r:ISO-8859-1' | ||
# hash[NivelConsistencia][date] = [[value, status]] | ||
hash = { '1' => {}, '2' => {} } | ||
dates = [] | ||
str = '' | ||
CSV.parse(file, col_sep: ';').each do |row| | ||
next if row.empty? | ||
next if row[0] =~ /^\/\// | ||
date = Date.parse(row[2]) | ||
(13..43).each do |i| | ||
measurement_date = date + (i-13) | ||
|
||
# Si NumDiasDeChuva es vacío significa sin datos | ||
value = row[7].nil? ? -99.9 : row[i] | ||
status = row[i + 31] | ||
hash_value = [value, status] | ||
|
||
dates << measurement_date | ||
hash[row[1]][measurement_date] = hash_value | ||
end | ||
end | ||
|
||
dates.uniq.each do |date| | ||
if !hash['1'][date].nil? && hash['2'][date].nil? | ||
# Only 'bruto' (good) | ||
value = hash['1'][date] | ||
str << "#{date}\t#{value[0]}\t#{value[1]}\n" | ||
elsif hash['1'][date].nil? && !hash['2'][date].nil? | ||
# Only 'consistido' (kind of good) | ||
value = hash['2'][date] | ||
str << "#{date}\t#{value[0]}\t#{value[1]}\n" | ||
else | ||
# 'bruto' y 'consistido' (has new and old data) | ||
old_value = hash['1'][date] | ||
new_value = hash['2'][date] | ||
str << "#{date}\t#{new_value[0]}\t#{old_value[1]}\t#{old_value[0]}\n" | ||
end | ||
end | ||
|
||
str | ||
end | ||
end | ||
|
||
require './tests' if __FILE__ == $0 |
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,33 @@ | ||
//------------------------------------------------------------------------------ | ||
// | ||
// NivelConsistencia: 1 = Bruto, 2 = Consistido | ||
// TipoMedicaoChuvas: 1 = Pluvi�metro, 2 = Pluvi�grafo, 3 = Data logger | ||
// Status: 0 = Branco, 1 = Real, 2 = Estimado, 3 = Duvidoso, 4 = Acumulado | ||
// | ||
//------------------------------------------------------------------------------ | ||
|
||
//EstacaoCodigo;NivelConsistencia;Data;TipoMedicaoChuvas;Maxima;Total;DiaMaxima;NumDiasDeChuva;MaximaStatus;TotalStatus;NumDiasDeChuvaStatus;TotalAnual;TotalAnualStatus;Chuva01;Chuva02;Chuva03;Chuva04;Chuva05;Chuva06;Chuva07;Chuva08;Chuva09;Chuva10;Chuva11;Chuva12;Chuva13;Chuva14;Chuva15;Chuva16;Chuva17;Chuva18;Chuva19;Chuva20;Chuva21;Chuva22;Chuva23;Chuva24;Chuva25;Chuva26;Chuva27;Chuva28;Chuva29;Chuva30;Chuva31;Chuva01Status;Chuva02Status;Chuva03Status;Chuva04Status;Chuva05Status;Chuva06Status;Chuva07Status;Chuva08Status;Chuva09Status;Chuva10Status;Chuva11Status;Chuva12Status;Chuva13Status;Chuva14Status;Chuva15Status;Chuva16Status;Chuva17Status;Chuva18Status;Chuva19Status;Chuva20Status;Chuva21Status;Chuva22Status;Chuva23Status;Chuva24Status;Chuva25Status;Chuva26Status;Chuva27Status;Chuva28Status;Chuva29Status;Chuva30Status;Chuva31Status; | ||
02553005;1;01/01/2009;1;47,9;161,3;14;7;1;1;1;0;;0;0;12,4;0;0;0;0;0;0;0;0;0;41,1;47,9;33,9;0;0;2,4;14,4;0;0;0;0;0;0;0;0;0;9,2;0;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
02553005;1;01/02/2009;1;83,4;243,5;7;10;1;1;1;0;;0;0;6,6;12,4;0;0;83,4;0;0;4,2;12,4;24,4;0;0;0;0;0;0;0;43,4;9,9;9,7;0;0;37,1;0;0;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
02553005;1;01/03/2009;1;8,9;20,8;24;5;1;1;1;0;;2,4;0;4,2;0;0;0;0;0;2,1;0;0;0;0;0;0;0;0;0;0;0;0;3,2;0;8,9;0;0;0;0;0;0;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
02553005;1;01/04/2009;1;33,4;113,4;22;5;1;1;1;0;;0;0;0;0;23,4;26,8;0;0;13,4;0;0;0;0;0;0;0;0;0;0;0;0;33,4;16,4;0;0;0;0;0;0;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
02553005;1;01/05/2009;1;124;377,6;25;12;1;1;1;0;;0;0;32,2;0;0;0;0;13,4;23,6;0;0;0;4,2;45,6;33,6;0;0;0;0;0;0;0;0;0;124;13,7;0;4,4;18;40,4;24,5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
02553005;1;01/06/2009;1;46,5;119,8;24;8;1;1;1;0;;0;3,4;0;0;0;6,3;0;0;0;0;8,9;3,4;0;0;0;31,7;0;0;0;0;0;0;3,2;46,5;0;0;0;0;0;16,4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
02553005;1;01/07/2009;1;72,4;225;17;11;1;1;1;0;;0;17;0;0;6,3;1,1;0;0;12,4;19,9;36,6;0;0;0;0;15,3;72,4;0;0;0;11,4;29,2;0;0;0;0;0;0;3,4;0;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
02553005;1;01/08/2009;1;48,8;184,5;2;7;1;1;1;0;;25,5;48,8;0;0;0;0;0;0;0;0;0;0;0;0;0;0;35,5;41,1;0;0;0;0;17,6;2,4;13,6;0;0;0;0;0;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
02553005;1;01/09/2009;1;53,7;285,1;3;12;1;1;1;0;;0;0;53,7;39,5;0;0;0;15,4;19,3;17,8;4,4;13;0;0;0;0;3,4;0;46,3;0;0;0;48,5;0;0;0;0;11,4;12,4;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
02553005;1;01/10/2009;1;87,5;436,9;25;13;1;1;1;;;1,5;7,4;17,4;13,4;0;0;16;0;0;0;0;86,9;0;0;78,6;4,2;51;0;12,2;10,4;0;0;50,4;0;87,5;0;0;0;0;0;0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1; | ||
02553005;1;01/11/2009;1;52,4;273,4;11;11;1;1;1;;;0;0;0;0;0;13,4;16,9;35,5;0;0;52,4;22,4;0;0;12,4;29,2;0;0;0;0;42,7;0;38,3;0;0,4;0;9,8;0;0;0;;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0; | ||
02553005;1;01/12/2009;1;63,5;241,2;12;7;1;1;1;;;21,1;0;41,2;0;0;0;0;24;0;0;0;63,5;0;0;0;0;0;9,3;0;0;0;0;33;0;49,1;0;0;0;0;0;0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1; | ||
02553005;1;01/01/2010;1;45,4;174,5;13;9;1;1;1;;;0;0;10;0;0;0;6,7;0;0;0;7,8;0;45,4;0;0;0;18,2;13,8;0;38;10;0;0;0;0;0;0;24,6;0;0;0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1; | ||
02553005;1;01/02/2010;1;45,6;122,5;16;6;1;1;1;;;0;0;0;0;0;0;0;0;24,2;0;0;0;0;0;11;45,6;23,4;0;0;0;0;0;0;0;16,9;0;0;1,4;;;;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;;; | ||
02553005;1;01/03/2010;1;76,7;218,1;15;9;1;1;1;;;0;0;0;0;0;0;0;0;0;0;0;0;0;30,3;76,7;0;0;0;0;11,6;10,3;1;55,2;26,6;0;0;3,2;3,2;0;0;0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1; | ||
02553005;1;01/04/2010;1;60,9;243,6;22;8;1;1;1;;;0;0;0;11,3;0;0;4,8;0;0;0;0;0;0;0;0;0;0;0;0;0;0;60,9;40,5;0;29;60,1;31,6;0;5,4;0;;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0; | ||
02553005;1;01/05/2010;1;58,8;181,1;8;9;1;1;1;;;0;0;0;3,4;0;0;0;58,8;0;0;0;7,8;0;0;0;0;23,2;46,5;10;10,4;0;0;0;0;6,4;0;0;0;0;0;14,6;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1; | ||
02553005;1;01/06/2010;1;16,2;43,9;4;5;1;1;1;;;0;0;0;16,2;8,2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;5,2;0;7,4;6,9;0;0;0;0;0;0;0;;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0; | ||
02553005;1;01/07/2010;1;44,3;124,1;22;8;1;1;1;;;0;0;0;0;0;0;0;0;0;13;0;0;22,2;0;0;0;16;7;7,9;6,3;0;44,3;7,4;0;0;0;0;0;0;0;0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1; | ||
02553005;1;01/08/2010;1;15,3;39,4;1;4;1;1;1;;;15,3;0;0;5,7;0;0;0;0;0;0;0;0;7,1;0;0;0;0;0;0;11,3;0;0;0;0;0;0;0;0;0;0;0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1; | ||
02553005;1;01/09/2010;1;28,6;71,4;24;5;1;1;1;;;0;0;0;0;0;0;0;0;0;0;0;0;0;16,2;0;0;0;0;0;0;0;0;11,4;28,6;3,4;0;11,8;0;0;0;;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0; | ||
02553005;1;01/10/2010;1;68,7;259,9;30;10;1;1;1;;;0;16,6;0;14,4;16,5;0;67,9;0;0;0;0;0;0;0;12;41,2;0;0;0;0;0;4,7;0;13,6;0;0;0;0;0;68,7;4,3;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1; | ||
02553005;1;01/11/2010;1;44,8;76;10;4;1;1;1;;;0;0;0;0;0;13,4;0;0;0;44,8;0;0;0;0;0;0;0;0;0;0;0;13,4;0;0;0;0;0;0;0;4,4;;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0; | ||
02553005;1;01/12/2010;1;74,9;443,1;3;15;1;1;1;;;0;0;74,9;38,8;48,5;66,3;0;29,7;0;0;18,4;36,6;27,4;0;0;0;0;0;3,4;0;18,5;23,5;13,7;0;12,8;0;0;0;7,4;0;23,2;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1; |
Oops, something went wrong.