calamity 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -0,0 +1,7 @@
1
+ class Calamity::Task
2
+ attr_accessor :name
3
+ attr_accessor :context
4
+ attr_accessor :project
5
+ attr_accessor :status
6
+ attr_accessor :due_date
7
+ end
@@ -0,0 +1,3 @@
1
+ module Calamity
2
+ VERSION = '0.0.3'
3
+ end
@@ -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
- version: 0.0.2
5
- prerelease:
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
- date: 2012-03-23 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
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
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
30
- - !ruby/object:Gem::Dependency
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
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
- - !ruby/object:Gem::Dependency
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
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- - !ruby/object:Gem::Dependency
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
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
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
- extra_rdoc_files:
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
- none: false
101
- requirements:
102
- - - ! '>='
103
- - !ruby/object:Gem::Version
104
- version: '0'
105
- required_rubygems_version: !ruby/object:Gem::Requirement
106
- none: false
107
- requirements:
108
- - - ! '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
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.8.19
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
+