boombera 0.1.0 → 0.1.1

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -5,15 +5,13 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{boombera}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["John Wilger"]
12
12
  s.date = %q{2011-05-30}
13
- s.default_executable = %q{boombera}
14
13
  s.description = %q{CouchDB-backed content repository for multi-tenant, multi-stage applications}
15
14
  s.email = %q{johnwilger@gmail.com}
16
- s.executables = ["boombera"]
17
15
  s.extra_rdoc_files = [
18
16
  "LICENSE.txt",
19
17
  "README.rdoc"
@@ -29,11 +27,10 @@ Gem::Specification.new do |s|
29
27
  "README.rdoc",
30
28
  "Rakefile",
31
29
  "VERSION",
32
- "bin/boombera",
33
30
  "boombera.gemspec",
34
31
  "lib/boombera.rb",
35
32
  "lib/boombera/content_item.rb",
36
- "spec/bin/boombera_spec.rb",
33
+ "spec/integration/boombera_spec.rb",
37
34
  "spec/lib/boombera/content_item_spec.rb",
38
35
  "spec/lib/boombera_spec.rb",
39
36
  "spec/spec_helper.rb"
@@ -0,0 +1,108 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
+
3
+ describe 'The Boombera library:' do
4
+ let(:db_name) { 'boombera_test' }
5
+ let(:db) { CouchRest.database!(db_name) }
6
+
7
+ let(:boombera) do
8
+ Boombera.install_design_doc!(db_name)
9
+ Boombera.new(db_name)
10
+ end
11
+
12
+ before(:each) do
13
+ db.delete!
14
+ db.create!
15
+ end
16
+
17
+ describe 'installing and updating the couchdb design document' do
18
+ context 'on a new boombera database' do
19
+ it 'publishes Boombera.design_doc to _design/boombera' do
20
+ Boombera.install_design_doc!(db_name)
21
+ design = db.get('_design/boombera')
22
+ %w(_id gem_version views).each do |key|
23
+ design[key].should == Boombera.design_doc[key]
24
+ end
25
+ end
26
+ end
27
+
28
+ context 'on an existing boombera database' do
29
+ it 'updates Boombera.design_doc to _design/boombera' do
30
+ db.save_doc({'_id' => '_design/boombera'})
31
+ Boombera.install_design_doc!(db_name)
32
+ design = db.get('_design/boombera')
33
+ %w(_id gem_version views).each do |key|
34
+ design[key].should == Boombera.design_doc[key]
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ describe 'connecting to the database' do
41
+ context 'when the design document does not exist' do
42
+ it 'raises a VersionMismatch exception' do
43
+ lambda { Boombera.new(db_name) }.should \
44
+ raise_error(Boombera::VersionMismatch, "Database does not specify a Boombera version")
45
+ end
46
+ end
47
+
48
+ context 'when the design document does not have a gem_version specified' do
49
+ it 'raises a VersionMismatch exception' do
50
+ db.save_doc({'_id' => '_design/boombera'})
51
+ lambda { Boombera.new(db_name) }.should \
52
+ raise_error(Boombera::VersionMismatch, "Database does not specify a Boombera version")
53
+ end
54
+ end
55
+
56
+ context 'when the design document does not match the version of the library being used' do
57
+ it 'raises a VersionMismatch exception' do
58
+ db.save_doc({'_id' => '_design/boombera', 'gem_version' => '0.0.0'})
59
+ lambda { Boombera.new(db_name) }.should \
60
+ raise_error(Boombera::VersionMismatch, "Database expects Boombera 0.0.0")
61
+ end
62
+ end
63
+ end
64
+
65
+ describe 'putting content in the database' do
66
+ it 'saves content to a new path' do
67
+ boombera.put('/foo', 'foo bar baz')
68
+ results = db.view('boombera/content_map', :key => '/foo')['rows']
69
+ results.length.should == 1
70
+ document = db.get(results.first['id'])
71
+ document['path'].should == '/foo'
72
+ document['body'].should == 'foo bar baz'
73
+ end
74
+
75
+ it 'saves content to an existing path' do
76
+ boombera.put('/foo', 'foo bar baz')
77
+ boombera.put('/foo', 'the new content')
78
+ results = db.view('boombera/content_map', :key => '/foo')['rows']
79
+ results.length.should == 1
80
+ document = db.get(results.first['id'])
81
+ document['path'].should == '/foo'
82
+ document['body'].should == 'the new content'
83
+ end
84
+ end
85
+
86
+ describe 'getting content from the database' do
87
+ it 'gives you nil if the content is not there' do
88
+ boombera.get('/not_there').should == nil
89
+ end
90
+
91
+ it 'gives you a ContentItem if the content is there' do
92
+ db.save_doc({'path' => '/index', 'body' => 'Hello, World!'})
93
+ result = boombera.get('/index')
94
+ result.path.should == '/index'
95
+ result.body.should == 'Hello, World!'
96
+ end
97
+ end
98
+
99
+ describe 'working with ContentItem' do
100
+ it 'lets you save changes' do
101
+ boombera.put('/foo', 'some content')
102
+ content = boombera.get('/foo')
103
+ content.body = 'new content'
104
+ content.save
105
+ boombera.get('/foo').body.should == 'new content'
106
+ end
107
+ end
108
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: boombera
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.0
5
+ version: 0.1.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - John Wilger
@@ -11,7 +11,7 @@ bindir: bin
11
11
  cert_chain: []
12
12
 
13
13
  date: 2011-05-30 00:00:00 -07:00
14
- default_executable: boombera
14
+ default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: couchrest
@@ -125,8 +125,8 @@ dependencies:
125
125
  version_requirements: *id010
126
126
  description: CouchDB-backed content repository for multi-tenant, multi-stage applications
127
127
  email: johnwilger@gmail.com
128
- executables:
129
- - boombera
128
+ executables: []
129
+
130
130
  extensions: []
131
131
 
132
132
  extra_rdoc_files:
@@ -143,11 +143,10 @@ files:
143
143
  - README.rdoc
144
144
  - Rakefile
145
145
  - VERSION
146
- - bin/boombera
147
146
  - boombera.gemspec
148
147
  - lib/boombera.rb
149
148
  - lib/boombera/content_item.rb
150
- - spec/bin/boombera_spec.rb
149
+ - spec/integration/boombera_spec.rb
151
150
  - spec/lib/boombera/content_item_spec.rb
152
151
  - spec/lib/boombera_spec.rb
153
152
  - spec/spec_helper.rb
@@ -165,7 +164,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
165
164
  requirements:
166
165
  - - ">="
167
166
  - !ruby/object:Gem::Version
168
- hash: -1122201151572776858
167
+ hash: -3756736400322567909
169
168
  segments:
170
169
  - 0
171
170
  version: "0"
@@ -1,26 +0,0 @@
1
- #!/usr/bin/env ruby
2
- $:.unshift(File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib')))
3
- require 'boombera'
4
-
5
- command, database, path, body = ARGV[0..3]
6
-
7
- begin
8
- case command
9
- when 'install'
10
- Boombera.install_design_doc!(database)
11
- puts "The CouchDB Boombera application has been updated to version #{Boombera.version}"
12
- when 'put'
13
- db = Boombera.new(database)
14
- result = db.put(path, body)
15
- puts "Content Saved: #{path}"
16
- when 'get'
17
- db = Boombera.new(database)
18
- result = db.get(path)
19
- puts result.body
20
- end
21
- rescue Boombera::VersionMismatch => e
22
- puts e.message
23
- puts "You may need to run 'boombera install #{database}' to update the"
24
- puts "CouchDB Boombera application."
25
- exit(1)
26
- end
@@ -1,121 +0,0 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
-
3
- describe "The boombera CLI" do
4
- BOOMBERA_CLI = File.join(File.dirname(__FILE__), '..', '..', 'bin', 'boombera')
5
-
6
- let(:db) { CouchRest.database!('boombera_test') }
7
-
8
- before(:each) do
9
- db.delete!
10
- Boombera.install_design_doc!('boombera_test')
11
- end
12
-
13
- describe "put command" do
14
- context "when putting a new content item via argument string" do
15
-
16
- before(:each) do
17
- @output = `#{BOOMBERA_CLI} put boombera_test /foo "some content"`
18
- @exit_status = $?.exitstatus
19
- end
20
-
21
- it 'exits with a status code of 0' do
22
- @exit_status.should == 0
23
- end
24
-
25
- it 'outputs a message indicating that the content was saved' do
26
- @output.should == "Content Saved: /foo\n"
27
- end
28
-
29
- it 'creates the content in the couchdb server' do
30
- result = db.view('boombera/content_map', :key => '/foo')['rows'].first
31
- result.should_not be_nil
32
- document = db.get(result['id'])
33
- document['path'].should == '/foo'
34
- document['body'].should == 'some content'
35
- end
36
- end
37
-
38
- context "when updating an existing content item via argument string" do
39
- before(:each) do
40
- db.save_doc({:path => '/bar', :body => 'original content'})
41
- @output = `#{BOOMBERA_CLI} put boombera_test /bar "new content"`
42
- @exit_status = $?.exitstatus
43
- end
44
-
45
- it 'exits with a status code of 0' do
46
- @exit_status.should == 0
47
- end
48
-
49
- it 'outputs a message indicating that the content was saved' do
50
- @output.should == "Content Saved: /bar\n"
51
- end
52
-
53
- it 'updates the content in the couchdb server' do
54
- rows = db.view('boombera/content_map', :key => '/bar')['rows']
55
- rows.length.should == 1
56
- result = rows.first
57
- result.should_not be_nil
58
- document = db.get(result['id'])
59
- document['path'].should == '/bar'
60
- document['body'].should == 'new content'
61
- end
62
- end
63
- end
64
-
65
- describe 'get command' do
66
- context 'the requested content exists' do
67
- before(:each) do
68
- `#{BOOMBERA_CLI} put boombera_test /foo "some content"`
69
- @output = `#{BOOMBERA_CLI} get boombera_test /foo`
70
- @exit_status = $?.exitstatus
71
- end
72
-
73
- it 'exits with a status code of 0' do
74
- @exit_status.should == 0
75
- end
76
-
77
- it 'outputs the document body to STDOUT' do
78
- @output.should == "some content\n"
79
- end
80
- end
81
- end
82
-
83
- describe "install command" do
84
- before(:each) do
85
- db.delete!
86
- @output = `#{BOOMBERA_CLI} install boombera_test`
87
- @exit_status = $?.exitstatus
88
- end
89
-
90
- shared_examples_for :a_successful_instalation do
91
- it 'exits with a status code of 0' do
92
- @exit_status.should == 0
93
- end
94
-
95
- it 'outputs a message indicating that the CouchDB portion of the Boombera application was installed' do
96
- @output.should == "The CouchDB Boombera application has been updated to " \
97
- + "version #{Boombera.version}\n"
98
- end
99
-
100
- it 'installs the boombera design document on the CouchDB instance' do
101
- design_doc = db.get('_design/boombera')
102
- expected = Boombera.design_doc
103
- design_doc['gem_version'].should == expected['gem_version']
104
- design_doc['views'].should == expected['views']
105
- end
106
- end
107
-
108
- context 'when run for the first time' do
109
- it_should_behave_like :a_successful_instalation
110
- end
111
-
112
- context 'when run more than once' do
113
- before(:each) do
114
- @output = `#{BOOMBERA_CLI} install boombera_test`
115
- @exit_status = $?.exitstatus
116
- end
117
-
118
- it_should_behave_like :a_successful_instalation
119
- end
120
- end
121
- end