rtt 0.0.0.47 → 0.0.0.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +4 -7
- data/Gemfile.lock +28 -35
- data/Manifest +12 -12
- data/Rakefile +3 -3
- data/bin/rtt +2 -2
- data/db/config.yml +10 -0
- data/db/schema.rb +43 -0
- data/db/test.sqlite3 +0 -0
- data/lib/{rtt/array_extensions.rb → extensions/array.rb} +0 -0
- data/lib/extensions/date.rb +15 -0
- data/lib/{rtt/hash_extensions.rb → extensions/hash.rb} +0 -0
- data/lib/{rtt/system_extensions.rb → extensions/kernel.rb} +0 -0
- data/lib/models/client.rb +34 -0
- data/lib/models/project.rb +44 -0
- data/lib/models/task.rb +131 -0
- data/lib/models/user.rb +48 -0
- data/lib/rtt.rb +13 -12
- data/lib/rtt/cmd_line_parser.rb +10 -2
- data/lib/rtt/interactive_configurator.rb +11 -7
- data/lib/rtt/query_builder.rb +9 -4
- data/lib/rtt/report_generator.rb +3 -4
- data/lib/rtt/storage.rb +18 -11
- data/rtt.gemspec +17 -33
- data/spec/ar_spec_helper.rb +11 -0
- data/spec/lib/{rtt → models}/task_spec.rb +9 -10
- data/spec/lib/rtt_spec.rb +20 -22
- data/tasks/rtt.rake +1 -1
- metadata +318 -424
- data/db/rtt.sqlite3 +0 -0
- data/lib/rtt/client.rb +0 -42
- data/lib/rtt/project.rb +0 -54
- data/lib/rtt/task.rb +0 -144
- data/lib/rtt/user.rb +0 -65
- data/log/rtt.sqlite3 +0 -0
- data/spec/datamapper_spec_helper.rb +0 -3
data/lib/models/user.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
class User < ActiveRecord::Base
|
3
|
+
|
4
|
+
BLANK_FIELD = ''
|
5
|
+
DEFAULT_NICK = 'Default user'
|
6
|
+
|
7
|
+
has_many :tasks
|
8
|
+
has_many :projects, :through => :tasks
|
9
|
+
|
10
|
+
def self.default
|
11
|
+
find_or_create_by_active(true)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.find_or_create_active
|
15
|
+
last_user = User.last
|
16
|
+
if last_user.present?
|
17
|
+
last_user.active = true
|
18
|
+
last_user.save
|
19
|
+
last_user
|
20
|
+
else
|
21
|
+
self.default
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def activate
|
26
|
+
self.active = true
|
27
|
+
self.save
|
28
|
+
self
|
29
|
+
end
|
30
|
+
|
31
|
+
def deactivate
|
32
|
+
self.active = false
|
33
|
+
self.save
|
34
|
+
self
|
35
|
+
end
|
36
|
+
|
37
|
+
def full_name
|
38
|
+
"#{first_name.present? ? first_name : ''} #{last_name.present? ? last_name : ''}".strip
|
39
|
+
end
|
40
|
+
|
41
|
+
def full_name_and_nickname
|
42
|
+
"#{full_name.present? ? full_name : ''} #{full_name.present? ? "(#{nickname})" : nickname }".strip
|
43
|
+
end
|
44
|
+
|
45
|
+
def location
|
46
|
+
"#{self.city}#{self.city.present? && self.country.present? ? ', ' : ''}#{self.country}".strip
|
47
|
+
end
|
48
|
+
end
|
data/lib/rtt.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'thread'
|
3
|
-
require 'rtt/boot'
|
4
|
-
require
|
5
|
-
|
6
|
-
Dir[File.expand_path(File.join(File.dirname(__FILE__), '
|
3
|
+
require File.expand_path 'lib/rtt/boot'
|
4
|
+
%w( active_support active_record highline/import).each { |lib| require lib }
|
5
|
+
Dir[File.expand_path(File.join(File.dirname(__FILE__), 'extensions', '*'))].each { |lib| require lib; }
|
6
|
+
Dir[File.expand_path(File.join(File.dirname(__FILE__), 'models', '*'))].each { |lib| require lib; }
|
7
|
+
Dir[File.expand_path(File.join(File.dirname(__FILE__), 'rtt', '*'))].each { |lib| require(lib) unless File.directory?(lib); }
|
7
8
|
|
8
9
|
module Rtt
|
9
10
|
|
10
|
-
VERSION = '
|
11
|
+
VERSION = '0.0.0.48'
|
11
12
|
|
12
13
|
extend self
|
13
14
|
|
@@ -24,7 +25,7 @@ module Rtt
|
|
24
25
|
end
|
25
26
|
|
26
27
|
def current_user
|
27
|
-
active = User.
|
28
|
+
active = User.where(:active => true).first
|
28
29
|
return active if active.present?
|
29
30
|
User.find_or_create_active
|
30
31
|
end
|
@@ -41,7 +42,7 @@ module Rtt
|
|
41
42
|
user = if nickname.blank?
|
42
43
|
current_user
|
43
44
|
else
|
44
|
-
User.
|
45
|
+
User.where(:nickname => nickname).first
|
45
46
|
end
|
46
47
|
current_user.deactivate if current_user
|
47
48
|
if user.blank? || configure
|
@@ -119,7 +120,7 @@ module Rtt
|
|
119
120
|
raise ParametersNotMatchCommandSignatureError if project_name.blank?
|
120
121
|
deactivate_current_project if current_project
|
121
122
|
client = client(client_name) unless client_name.nil?
|
122
|
-
project = Project.
|
123
|
+
project = Project.find_or_create_by_name project_name
|
123
124
|
project.client = client
|
124
125
|
project.description = project_name
|
125
126
|
unless project.active
|
@@ -150,21 +151,21 @@ module Rtt
|
|
150
151
|
end
|
151
152
|
|
152
153
|
def current_client
|
153
|
-
Client.
|
154
|
+
Client.where(:active => true).first
|
154
155
|
end
|
155
156
|
|
156
157
|
def current_project
|
157
|
-
Project.
|
158
|
+
Project.where(:active => true).first
|
158
159
|
end
|
159
160
|
|
160
161
|
def current_task
|
161
|
-
Task.
|
162
|
+
Task.where(:active => true).first
|
162
163
|
end
|
163
164
|
|
164
165
|
private
|
165
166
|
|
166
167
|
def client(name)
|
167
|
-
Client.
|
168
|
+
Client.find_or_create_by_name_and_description(name, name)
|
168
169
|
end
|
169
170
|
|
170
171
|
def deactivate_current_client
|
data/lib/rtt/cmd_line_parser.rb
CHANGED
@@ -99,7 +99,14 @@ module Rtt
|
|
99
99
|
|
100
100
|
def env_filters
|
101
101
|
[ 'date', 'nickname', 'from', 'to', 'client', 'project' ].inject({}) do |filters, key|
|
102
|
-
|
102
|
+
if env_variable(key).present?
|
103
|
+
value = if key == 'date' || key == 'from' || key == 'to'
|
104
|
+
Date.parse(env_variable(key))
|
105
|
+
else
|
106
|
+
env_variable(key)
|
107
|
+
end
|
108
|
+
filters[key.to_sym] = value
|
109
|
+
end
|
103
110
|
filters
|
104
111
|
end
|
105
112
|
end
|
@@ -152,7 +159,8 @@ module Rtt
|
|
152
159
|
when ConfigureCommand
|
153
160
|
case cmd.name.downcase
|
154
161
|
when 'task'
|
155
|
-
|
162
|
+
name = cmd.next_optional
|
163
|
+
update_task(name, env_filters)
|
156
164
|
when 'project'
|
157
165
|
name = cmd.next_optional
|
158
166
|
client = cmd.next_optional
|
@@ -6,7 +6,7 @@ module Rtt
|
|
6
6
|
say "Please fill in your Client information"
|
7
7
|
say "======================================"
|
8
8
|
client = if name.blank?
|
9
|
-
if (active_client = Client.
|
9
|
+
if (active_client = Client.where(:active => true).first) && agree_or_enter("Want to modify current")
|
10
10
|
active_client
|
11
11
|
else
|
12
12
|
modify_name_or_create_model(:client, name)
|
@@ -29,7 +29,7 @@ module Rtt
|
|
29
29
|
say "======================================="
|
30
30
|
project = if name.blank?
|
31
31
|
project_name = ask_or_default('Project name', "Project name:", name, /^\w+$/)
|
32
|
-
Project.
|
32
|
+
Project.find_or_create_by_name(project_name)
|
33
33
|
else
|
34
34
|
modify_name_or_create_model(:project, name)
|
35
35
|
end
|
@@ -37,7 +37,7 @@ module Rtt
|
|
37
37
|
client_found = false
|
38
38
|
while !client_found
|
39
39
|
client_name=(ask("Client name:") { |q| q.validate = /^\w+$/ }) if client_name.blank?
|
40
|
-
client = Client.
|
40
|
+
client = Client.where(:name => client_name).first
|
41
41
|
if client.blank?
|
42
42
|
say "A Client with this name is not registered."
|
43
43
|
create_client = agree_or_enter("Want to created a Client with that name")
|
@@ -69,7 +69,7 @@ module Rtt
|
|
69
69
|
if !skip_name || nickname.blank? || nickname == User::DEFAULT_NICK
|
70
70
|
nickname = ask_or_default('nickname', 'Nickname (Required):', nickname, /^\w+$/)
|
71
71
|
end
|
72
|
-
existing = User.
|
72
|
+
existing = User.where(:nickname => nickname).first
|
73
73
|
first_name = ask_or_default('first name', "First name:", (existing.first_name if existing.present?))
|
74
74
|
last_name = ask_or_default('last name', 'Last name:', (existing.last_name if existing.present?))
|
75
75
|
company = ask_or_default('company', 'Company:', (existing.company if existing.present?))
|
@@ -91,7 +91,11 @@ module Rtt
|
|
91
91
|
|
92
92
|
def configure_task(name = nil, conditions = {})
|
93
93
|
conditions.merge!(name.blank? ? { :active => true } : { :name => name })
|
94
|
-
task = name.blank?
|
94
|
+
task = if name.blank?
|
95
|
+
Task.where(conditions).first
|
96
|
+
else
|
97
|
+
Task.where(conditions).first || Task.create(conditions)
|
98
|
+
end
|
95
99
|
if task.present?
|
96
100
|
say "Modify the task information (with name: #{task.name})"
|
97
101
|
say "================================"
|
@@ -152,8 +156,8 @@ module Rtt
|
|
152
156
|
|
153
157
|
def modify_name_or_create_model(model_name, name)
|
154
158
|
class_name = model_name.to_s.capitalize
|
155
|
-
klazz =
|
156
|
-
instance = klazz.
|
159
|
+
klazz = class_name.constantize
|
160
|
+
instance = klazz.where(:name => name).first
|
157
161
|
if instance.present?
|
158
162
|
instance.name=(ask("#{class_name} name:") { |q| q.validate = /^\w+$/ }) unless agree_or_enter('Want to keep current name')
|
159
163
|
instance.save
|
data/lib/rtt/query_builder.rb
CHANGED
@@ -5,17 +5,22 @@ module Rtt
|
|
5
5
|
#
|
6
6
|
#
|
7
7
|
def query options = {}
|
8
|
-
Task.
|
8
|
+
relation = Task.where(rtt_build_conditions(options))
|
9
|
+
relation = relation.where(table[:date].gt(Date.parse(options.delete(:from)))) if options[:from]
|
10
|
+
relation = relation.where(table[:date].lt(Date.parse(options.delete(:to)))) if options[:to]
|
11
|
+
relation
|
9
12
|
end
|
10
13
|
|
11
14
|
private
|
12
15
|
|
16
|
+
def table
|
17
|
+
@table ||= Task.arel_table
|
18
|
+
end
|
19
|
+
|
13
20
|
def rtt_build_conditions options
|
14
21
|
# default filter for today unless a date range is specified
|
15
22
|
options[:date] = Date.today.strftime('%d-%m-%Y') if options[:to].blank? and options[:from].blank? and options[:date].blank?
|
16
|
-
conditions = options
|
17
|
-
conditions[:date.gte] = Date.parse(options.delete(:from)) if options[:from]
|
18
|
-
conditions[:date.lte] = Date.parse(options.delete(:to)) if options[:to]
|
23
|
+
conditions = options.reject { |k,_| k.to_s == 'from' || k.to_s == 'to' }
|
19
24
|
conditions[:date] = Date.parse(options.delete(:date)) if options[:date]
|
20
25
|
conditions[:user] = { :nickname => options.delete(:nickname) } if options[:nickname]
|
21
26
|
conditions[:project] = { :name => options.delete(:project) } if options[:project]
|
data/lib/rtt/report_generator.rb
CHANGED
@@ -32,7 +32,7 @@ module Rtt
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def custom_user_is_defined?
|
35
|
-
current_user.present? && current_user.nickname !=
|
35
|
+
current_user.present? && current_user.nickname != User::DEFAULT_NICK
|
36
36
|
end
|
37
37
|
|
38
38
|
def fill_user_information(pdf)
|
@@ -89,7 +89,7 @@ module Rtt
|
|
89
89
|
task = self.data[:rows].first
|
90
90
|
return true if task.nil?
|
91
91
|
return false if !(field == 'Client' || field == 'Project' || field == 'User')
|
92
|
-
(REPORT_FIELD_OUTPUT[field].call(task) if task.present?) == eval("
|
92
|
+
(REPORT_FIELD_OUTPUT[field].call(task) if task.present?) == eval("#{field}::DEFAULT_NAME")
|
93
93
|
end
|
94
94
|
|
95
95
|
#
|
@@ -101,8 +101,7 @@ module Rtt
|
|
101
101
|
path = options.delete(extension)
|
102
102
|
fixed_fields = extract_fixed_fields(options)
|
103
103
|
fixed_fields_and_values = fixed_fields.inject({}) { |hash, key| hash[key] = options[key.downcase.to_sym]; hash }
|
104
|
-
|
105
|
-
@data = { :fixed_fields => fixed_fields_and_values, :rows => query(filter_options) }
|
104
|
+
@data = { :fixed_fields => fixed_fields_and_values, :rows => query(options).order('date desc') }
|
106
105
|
filename_path = full_path(path)
|
107
106
|
case extension
|
108
107
|
when :pdf
|
data/lib/rtt/storage.rb
CHANGED
@@ -1,31 +1,38 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
require 'rubygems'
|
3
|
+
require 'active_record'
|
4
|
+
require 'logger'
|
2
5
|
module Rtt
|
3
6
|
module Storage
|
4
7
|
|
5
|
-
|
8
|
+
def database_file
|
9
|
+
File.expand_path(File.join(File.dirname(__FILE__), '..', '..') + config[:production][:database])
|
10
|
+
end
|
6
11
|
|
7
12
|
def export filename
|
8
13
|
require 'fileutils'
|
9
|
-
FileUtils.cp(
|
14
|
+
FileUtils.cp(database_file, filename)
|
10
15
|
end
|
11
16
|
|
12
17
|
def import filename
|
13
18
|
require 'fileutils'
|
14
|
-
FileUtils.cp(filename,
|
19
|
+
FileUtils.cp(filename, database_file)
|
15
20
|
end
|
16
21
|
|
17
|
-
def
|
18
|
-
|
19
|
-
migrate unless missing_tables
|
20
|
-
#DataObjects::Sqlite3.logger = DataMapper::Logger.new(File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'log', 'sqlite3.log')), 0)
|
22
|
+
def config(env)
|
23
|
+
@config ||= YAML::load_file(File.join(File.dirname(__FILE__), '..', '..', 'db', 'config.yml'))[env.to_s]
|
21
24
|
end
|
22
25
|
|
23
|
-
def
|
24
|
-
|
26
|
+
def init(env = :production)
|
27
|
+
ActiveRecord::Base.establish_connection(config(env))
|
28
|
+
ActiveRecord::Base.logger = Logger.new(File.open(File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'log', 'database.log')), 'a'))
|
29
|
+
silence_stream(STDOUT) do
|
30
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'db', 'schema.rb')) unless tables_exists?
|
31
|
+
end
|
25
32
|
end
|
26
33
|
|
27
|
-
def
|
28
|
-
%
|
34
|
+
def tables_exists?
|
35
|
+
%w(projects clients tasks users).any? { |t| ActiveRecord::Base.connection.tables.include?(t) }
|
29
36
|
end
|
30
37
|
end
|
31
38
|
end
|
data/rtt.gemspec
CHANGED
@@ -1,40 +1,34 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
|
-
s.name =
|
5
|
-
s.version = "0.0.0.
|
4
|
+
s.name = "rtt"
|
5
|
+
s.version = "0.0.0.48"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Marcelo Giorgi"]
|
9
|
-
s.date =
|
10
|
-
s.
|
11
|
-
s.
|
12
|
-
s.email = %q{marklazz.uy@gmail.com}
|
9
|
+
s.date = "2012-07-30"
|
10
|
+
s.description = "RTT is a tool for tracking time"
|
11
|
+
s.email = "marklazz.uy@gmail.com"
|
13
12
|
s.executables = ["rtt"]
|
14
|
-
s.extra_rdoc_files = ["LICENSE", "README.rdoc", "bin/rtt", "lib/
|
15
|
-
s.files = ["Gemfile", "Gemfile.lock", "LICENSE", "
|
16
|
-
s.homepage =
|
13
|
+
s.extra_rdoc_files = ["LICENSE", "README.rdoc", "bin/rtt", "lib/extensions/array.rb", "lib/extensions/date.rb", "lib/extensions/hash.rb", "lib/extensions/kernel.rb", "lib/models/client.rb", "lib/models/project.rb", "lib/models/task.rb", "lib/models/user.rb", "lib/rtt.rb", "lib/rtt/boot.rb", "lib/rtt/cmd_line_parser.rb", "lib/rtt/interactive_configurator.rb", "lib/rtt/query_builder.rb", "lib/rtt/report_generator.rb", "lib/rtt/storage.rb", "tasks/rtt.rake"]
|
14
|
+
s.files = ["Gemfile", "Gemfile.lock", "LICENSE", "README.rdoc", "Rakefile", "USAGE.txt", "bin/rtt", "db/config.yml", "db/schema.rb", "db/test.sqlite3", "lib/extensions/array.rb", "lib/extensions/date.rb", "lib/extensions/hash.rb", "lib/extensions/kernel.rb", "lib/models/client.rb", "lib/models/project.rb", "lib/models/task.rb", "lib/models/user.rb", "lib/rtt.rb", "lib/rtt/boot.rb", "lib/rtt/cmd_line_parser.rb", "lib/rtt/interactive_configurator.rb", "lib/rtt/query_builder.rb", "lib/rtt/report_generator.rb", "lib/rtt/storage.rb", "spec/ar_spec_helper.rb", "spec/lib/models/task_spec.rb", "spec/lib/rtt_spec.rb", "tasks/rtt.rake", "Manifest", "rtt.gemspec"]
|
15
|
+
s.homepage = "http://github.com/marklazz/rtt"
|
17
16
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Rtt", "--main", "README.rdoc"]
|
18
17
|
s.require_paths = ["lib"]
|
19
|
-
s.rubyforge_project =
|
20
|
-
s.rubygems_version =
|
21
|
-
s.summary =
|
18
|
+
s.rubyforge_project = "rtt"
|
19
|
+
s.rubygems_version = "1.8.23"
|
20
|
+
s.summary = "RTT is a tool for tracking time"
|
22
21
|
|
23
22
|
if s.respond_to? :specification_version then
|
24
23
|
s.specification_version = 3
|
25
24
|
|
26
25
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
27
26
|
s.add_runtime_dependency(%q<highline>, ["= 1.5.2"])
|
28
|
-
s.add_runtime_dependency(%q<
|
27
|
+
s.add_runtime_dependency(%q<activerecord>, ["= 3.2.6"])
|
28
|
+
s.add_runtime_dependency(%q<activesupport>, ["= 3.2.6"])
|
29
29
|
s.add_runtime_dependency(%q<prawn>, ["= 0.8.4"])
|
30
|
-
s.add_runtime_dependency(%q<dm-core>, ["= 1.0.0"])
|
31
|
-
s.add_runtime_dependency(%q<dm-validations>, ["= 1.0.0"])
|
32
|
-
s.add_runtime_dependency(%q<dm-migrations>, ["= 1.0.0"])
|
33
|
-
s.add_runtime_dependency(%q<dm-sqlite-adapter>, ["= 1.0.0"])
|
34
30
|
s.add_runtime_dependency(%q<rake>, ["= 0.8.2"])
|
35
|
-
s.add_runtime_dependency(%q<addressable>, ["= 2.2.7"])
|
36
31
|
s.add_runtime_dependency(%q<allison>, ["= 2.0.3"])
|
37
|
-
s.add_runtime_dependency(%q<data_objects>, ["= 0.10.2"])
|
38
32
|
s.add_runtime_dependency(%q<extlib>, ["= 0.9.15"])
|
39
33
|
s.add_runtime_dependency(%q<json_pure>, ["= 1.6.5"])
|
40
34
|
s.add_runtime_dependency(%q<prawn-core>, ["= 0.8.4"])
|
@@ -51,16 +45,11 @@ Gem::Specification.new do |s|
|
|
51
45
|
s.add_runtime_dependency(%q<echoe>, ["= 4.5.6"])
|
52
46
|
else
|
53
47
|
s.add_dependency(%q<highline>, ["= 1.5.2"])
|
54
|
-
s.add_dependency(%q<
|
48
|
+
s.add_dependency(%q<activerecord>, ["= 3.2.6"])
|
49
|
+
s.add_dependency(%q<activesupport>, ["= 3.2.6"])
|
55
50
|
s.add_dependency(%q<prawn>, ["= 0.8.4"])
|
56
|
-
s.add_dependency(%q<dm-core>, ["= 1.0.0"])
|
57
|
-
s.add_dependency(%q<dm-validations>, ["= 1.0.0"])
|
58
|
-
s.add_dependency(%q<dm-migrations>, ["= 1.0.0"])
|
59
|
-
s.add_dependency(%q<dm-sqlite-adapter>, ["= 1.0.0"])
|
60
51
|
s.add_dependency(%q<rake>, ["= 0.8.2"])
|
61
|
-
s.add_dependency(%q<addressable>, ["= 2.2.7"])
|
62
52
|
s.add_dependency(%q<allison>, ["= 2.0.3"])
|
63
|
-
s.add_dependency(%q<data_objects>, ["= 0.10.2"])
|
64
53
|
s.add_dependency(%q<extlib>, ["= 0.9.15"])
|
65
54
|
s.add_dependency(%q<json_pure>, ["= 1.6.5"])
|
66
55
|
s.add_dependency(%q<prawn-core>, ["= 0.8.4"])
|
@@ -78,16 +67,11 @@ Gem::Specification.new do |s|
|
|
78
67
|
end
|
79
68
|
else
|
80
69
|
s.add_dependency(%q<highline>, ["= 1.5.2"])
|
81
|
-
s.add_dependency(%q<
|
70
|
+
s.add_dependency(%q<activerecord>, ["= 3.2.6"])
|
71
|
+
s.add_dependency(%q<activesupport>, ["= 3.2.6"])
|
82
72
|
s.add_dependency(%q<prawn>, ["= 0.8.4"])
|
83
|
-
s.add_dependency(%q<dm-core>, ["= 1.0.0"])
|
84
|
-
s.add_dependency(%q<dm-validations>, ["= 1.0.0"])
|
85
|
-
s.add_dependency(%q<dm-migrations>, ["= 1.0.0"])
|
86
|
-
s.add_dependency(%q<dm-sqlite-adapter>, ["= 1.0.0"])
|
87
73
|
s.add_dependency(%q<rake>, ["= 0.8.2"])
|
88
|
-
s.add_dependency(%q<addressable>, ["= 2.2.7"])
|
89
74
|
s.add_dependency(%q<allison>, ["= 2.0.3"])
|
90
|
-
s.add_dependency(%q<data_objects>, ["= 0.10.2"])
|
91
75
|
s.add_dependency(%q<extlib>, ["= 0.9.15"])
|
92
76
|
s.add_dependency(%q<json_pure>, ["= 1.6.5"])
|
93
77
|
s.add_dependency(%q<prawn-core>, ["= 0.8.4"])
|
@@ -1,11 +1,10 @@
|
|
1
1
|
require 'mocha'
|
2
|
-
require File.join( File.dirname(__FILE__), '..', '..', '
|
2
|
+
require File.expand_path(File.join( File.dirname(__FILE__), '..', '..', 'ar_spec_helper'))
|
3
3
|
|
4
|
-
describe
|
4
|
+
describe Task do
|
5
5
|
|
6
6
|
before do
|
7
|
-
|
8
|
-
Rtt.migrate
|
7
|
+
setup_testing_env
|
9
8
|
@task_name = 'a_name'
|
10
9
|
@now = Time.now
|
11
10
|
end
|
@@ -16,7 +15,7 @@ describe Rtt::Task do
|
|
16
15
|
|
17
16
|
before do
|
18
17
|
start_at = Time.parse('May 10 13:45:00 2010', @now)
|
19
|
-
@task =
|
18
|
+
@task = Task.create :name => @task_name, :start_at => start_at.to_datetime, :date => start_at.to_date
|
20
19
|
end
|
21
20
|
|
22
21
|
context 'task has end_at: 2010-05-10 14:15:01' do
|
@@ -58,12 +57,12 @@ describe Rtt::Task do
|
|
58
57
|
end
|
59
58
|
|
60
59
|
it 'should have 2 tasks with the same name' do
|
61
|
-
|
60
|
+
Task.where(:name => @task_name).count.should == 2
|
62
61
|
end
|
63
62
|
|
64
63
|
it 'should return 11h15m for 2010-05-10' do
|
65
64
|
date = Time.parse('2010-05-10', @now).to_date
|
66
|
-
task =
|
65
|
+
task = Task.where(:name => @task_name, :date => date).first
|
67
66
|
task.duration.should == '10h14m'
|
68
67
|
end
|
69
68
|
|
@@ -82,18 +81,18 @@ describe Rtt::Task do
|
|
82
81
|
end
|
83
82
|
|
84
83
|
it 'should have 3 tasks with the same name' do
|
85
|
-
|
84
|
+
Task.where(:name => @task_name).count.should == 3
|
86
85
|
end
|
87
86
|
|
88
87
|
it 'should return 11h15m for 2010-05-11' do
|
89
88
|
date = Time.parse('2010-05-11', @now).to_date
|
90
|
-
task =
|
89
|
+
task = Task.where(:name => @task_name, :date => date).first
|
91
90
|
task.duration.should == '23h59m'
|
92
91
|
end
|
93
92
|
|
94
93
|
it 'should return 11h15m for 2010-05-10' do
|
95
94
|
date = Time.parse('2010-05-10', @now).to_date
|
96
|
-
task =
|
95
|
+
task = Task.where(:name => @task_name, :date => date).first
|
97
96
|
task.duration.should == '10h14m'
|
98
97
|
end
|
99
98
|
|