calamity 0.0.2 → 0.0.3
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/lib/calamity_data_access.rb +46 -0
- data/lib/calamity_task.rb +7 -0
- data/lib/calamity_version.rb +3 -0
- data/test/tc_calamity.rb +36 -0
- data/test/tc_data_access.rb +63 -0
- metadata +83 -81
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'sqlite3'
|
2
|
+
|
3
|
+
module Calamity
|
4
|
+
class DataAccess
|
5
|
+
|
6
|
+
def initialize db_location
|
7
|
+
@db = SQLite3::Database.new db_location
|
8
|
+
begin
|
9
|
+
@db.execute <<-SQL
|
10
|
+
create table tasks (
|
11
|
+
name varchar(20),
|
12
|
+
context varchar(20),
|
13
|
+
project varchar(20),
|
14
|
+
status varchar(10)
|
15
|
+
);
|
16
|
+
SQL
|
17
|
+
rescue
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def add_task task
|
22
|
+
@db.execute("select * from tasks where name = ?", [task.name]) do |row|
|
23
|
+
@db.execute "update tasks set context = ?, project = ? where name = ?", [((task.context) ? task.context : row[1]), (task.project ? task.project : row[2]), task.name]
|
24
|
+
return
|
25
|
+
end
|
26
|
+
@db.execute "insert into tasks values (?,?,?,?)", [task.name, task.context, task.project, 'created']
|
27
|
+
end
|
28
|
+
|
29
|
+
def list_tasks
|
30
|
+
tasks = []
|
31
|
+
@db.execute("select * from tasks where status != 'finished'") do |row|
|
32
|
+
task = Task.new
|
33
|
+
task.name = row[0]
|
34
|
+
task.context = row[1]
|
35
|
+
task.project = row[2]
|
36
|
+
task.status = row[3]
|
37
|
+
tasks << task
|
38
|
+
end
|
39
|
+
tasks
|
40
|
+
end
|
41
|
+
|
42
|
+
def mark_finished task
|
43
|
+
@db.execute "update tasks set status = ? where name = ?", ['finished', task.name]
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/test/tc_calamity.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'date'
|
3
|
+
|
4
|
+
class TC_testCalamity < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
`rm ./test/calamity.db`
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
`rm ./test/calamity.db`
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_create_db
|
14
|
+
`./bin/calamity --database="./test/calamity.db" save foo`
|
15
|
+
assert File.exists?('./test/calamity.db')
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_add_task_adds_task
|
19
|
+
`./bin/calamity --database="./test/calamity.db" save foobar`
|
20
|
+
foo = `./bin/calamity --database="./test/calamity.db" list | grep foo | awk '{print $1}'`.strip
|
21
|
+
assert(foo.eql?("foobar"))
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_context_on_add
|
25
|
+
`./bin/calamity --database="./test/calamity.db" save foobar -c "online"`
|
26
|
+
context = `./bin/calamity --database="./test/calamity.db" list | grep foo | awk '{print $2}'`.strip
|
27
|
+
assert(context.eql?("online"))
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_project_on_add
|
31
|
+
`./bin/calamity --database="./test/calamity.db" save foobar -p "buildcalamity"`
|
32
|
+
project = `./bin/calamity --database="./test/calamity.db" list | grep foo | awk '{print $3}'`.strip
|
33
|
+
assert(project.eql?("buildcalamity"))
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'calamity_data_access'
|
3
|
+
require 'calamity_task'
|
4
|
+
|
5
|
+
class TC_testDataAccess < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def setup
|
8
|
+
`rm ./test/calamity.db`
|
9
|
+
end
|
10
|
+
|
11
|
+
def teardown
|
12
|
+
`rm ./test/calamity.db`
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_setting_db_location
|
16
|
+
Calamity::DataAccess.new './test/calamity.db'
|
17
|
+
assert File.exists?('./test/calamity.db')
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_added_task_can_be_read
|
21
|
+
da = Calamity::DataAccess.new './test/calamity.db'
|
22
|
+
task = Calamity::Task.new
|
23
|
+
task.name = 'foo'
|
24
|
+
da.add_task task
|
25
|
+
assert(da.list_tasks[0].name == 'foo')
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_update_task
|
29
|
+
da = Calamity::DataAccess.new './test/calamity.db'
|
30
|
+
task = Calamity::Task.new
|
31
|
+
task.name = 'foo'
|
32
|
+
task.context = 'inbox'
|
33
|
+
da.add_task task
|
34
|
+
assert(da.list_tasks[0].context == 'inbox')
|
35
|
+
task.context = 'bar'
|
36
|
+
da.add_task task
|
37
|
+
assert(da.list_tasks[0].context == 'bar')
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_task_can_not_be_inserted_if_one_with_same_name_already_exists
|
41
|
+
da = Calamity::DataAccess.new './test/calamity.db'
|
42
|
+
task = Calamity::Task.new
|
43
|
+
task.name = 'foo'
|
44
|
+
da.add_task task
|
45
|
+
task2 = Calamity::Task.new
|
46
|
+
task2.name = 'foo'
|
47
|
+
da.add_task task2
|
48
|
+
assert da.list_tasks.length == 1
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_list_unfinished_by_default
|
52
|
+
da = Calamity::DataAccess.new './test/calamity.db'
|
53
|
+
task = Calamity::Task.new
|
54
|
+
task.name = 'foo'
|
55
|
+
da.add_task task
|
56
|
+
da.mark_finished task
|
57
|
+
task2 = Calamity::Task.new
|
58
|
+
task2.name = 'goo'
|
59
|
+
da.add_task task2
|
60
|
+
assert da.list_tasks.size == 1
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
metadata
CHANGED
@@ -1,117 +1,119 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: calamity
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 3
|
9
|
+
version: 0.0.3
|
6
10
|
platform: ruby
|
7
|
-
authors:
|
11
|
+
authors:
|
8
12
|
- Kevin Beddingfield
|
9
13
|
autorequire:
|
10
14
|
bindir: bin
|
11
15
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
16
|
+
|
17
|
+
date: 2012-03-22 00:00:00 -07:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
15
21
|
name: rake
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ! '>='
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '0'
|
22
|
-
type: :development
|
23
22
|
prerelease: false
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
name: rdoc
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - ! '>='
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: '0'
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 0
|
29
|
+
version: "0"
|
38
30
|
type: :development
|
31
|
+
version_requirements: *id001
|
32
|
+
- !ruby/object:Gem::Dependency
|
33
|
+
name: rdoc
|
39
34
|
prerelease: false
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
35
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
segments:
|
40
|
+
- 0
|
41
|
+
version: "0"
|
42
|
+
type: :development
|
43
|
+
version_requirements: *id002
|
44
|
+
- !ruby/object:Gem::Dependency
|
47
45
|
name: gli
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ! '>='
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0'
|
54
|
-
type: :runtime
|
55
46
|
prerelease: false
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
name: sqlite3
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
|
-
requirements:
|
67
|
-
- - ! '>='
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '0'
|
47
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
segments:
|
52
|
+
- 0
|
53
|
+
version: "0"
|
70
54
|
type: :runtime
|
55
|
+
version_requirements: *id003
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: sqlite3
|
71
58
|
prerelease: false
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
59
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
segments:
|
64
|
+
- 0
|
65
|
+
version: "0"
|
66
|
+
type: :runtime
|
67
|
+
version_requirements: *id004
|
78
68
|
description:
|
79
69
|
email: kevin.beddingfield@gmail.com
|
80
|
-
executables:
|
70
|
+
executables:
|
81
71
|
- calamity
|
82
72
|
extensions: []
|
83
|
-
|
73
|
+
|
74
|
+
extra_rdoc_files:
|
84
75
|
- calamity.rdoc
|
85
|
-
files:
|
76
|
+
files:
|
77
|
+
- lib/calamity_data_access.rb
|
78
|
+
- lib/calamity_task.rb
|
79
|
+
- lib/calamity_version.rb
|
86
80
|
- bin/calamity
|
81
|
+
- test/tc_calamity.rb
|
82
|
+
- test/tc_data_access.rb
|
87
83
|
- calamity.rdoc
|
84
|
+
has_rdoc: true
|
88
85
|
homepage: http://github.com/chumpy/calamity
|
89
86
|
licenses: []
|
87
|
+
|
90
88
|
post_install_message:
|
91
|
-
rdoc_options:
|
89
|
+
rdoc_options:
|
92
90
|
- --title
|
93
91
|
- calamity
|
94
92
|
- --main
|
95
93
|
- -ri
|
96
|
-
require_paths:
|
94
|
+
require_paths:
|
97
95
|
- lib
|
98
96
|
- lib
|
99
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
requirements:
|
108
|
-
- -
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
|
97
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - ">="
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
segments:
|
102
|
+
- 0
|
103
|
+
version: "0"
|
104
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
segments:
|
109
|
+
- 0
|
110
|
+
version: "0"
|
111
111
|
requirements: []
|
112
|
+
|
112
113
|
rubyforge_project:
|
113
|
-
rubygems_version: 1.
|
114
|
+
rubygems_version: 1.3.6
|
114
115
|
signing_key:
|
115
116
|
specification_version: 3
|
116
117
|
summary: A life hacking tool
|
117
118
|
test_files: []
|
119
|
+
|