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.
@@ -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
+