jmoses-couchbase-model 0.5.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,76 @@
1
+ # Author:: Couchbase <info@couchbase.com>
2
+ # Copyright:: 2011, 2012 Couchbase, Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require File.join(File.dirname(__FILE__), 'setup')
19
+
20
+ class Program < Couchbase::Model
21
+ attribute :title
22
+ attribute :genres, :default => []
23
+ end
24
+
25
+ class Movie < Program
26
+ attribute :mpaa_rating
27
+ attribute :runtime
28
+ end
29
+
30
+ class Series < Program
31
+ attribute :vchip_rating
32
+ end
33
+
34
+ class Episode < Series
35
+ attribute :runtime
36
+ end
37
+
38
+ class TestModelRailsIntegration < MiniTest::Unit::TestCase
39
+
40
+ def test_class_attributes_are_inheritable
41
+ program_attributes = [:title, :genres]
42
+ movie_attributes = [:mpaa_rating, :runtime]
43
+ series_attributes = [:vchip_rating]
44
+ episode_attributes = [:runtime]
45
+
46
+ assert_equal program_attributes, Program.attributes.keys
47
+ assert_equal program_attributes + movie_attributes, Movie.attributes.keys
48
+ assert_equal program_attributes + series_attributes, Series.attributes.keys
49
+ assert_equal program_attributes + series_attributes + episode_attributes, Episode.attributes.keys
50
+ end
51
+
52
+ def test_default_attributes_are_inheritable
53
+ assert_equal nil, Movie.attributes[:title]
54
+ assert_equal [], Movie.attributes[:genres]
55
+ end
56
+
57
+ def test_instance_attributes_are_inheritable
58
+ episode = Episode.new(:title => 'Family Guy', :genres => ['Comedy'], :vchip_rating => 'TVPG', :runtime => 30)
59
+
60
+ assert_equal [:title, :genres, :vchip_rating, :runtime], episode.attributes.keys
61
+ assert_equal 'Family Guy', episode.title
62
+ assert_equal ['Comedy'], episode.genres
63
+ assert_equal 30, episode.runtime
64
+ assert_equal 'TVPG', episode.vchip_rating
65
+ end
66
+
67
+ def test_class_attributes_from_subclasses_do_not_propogate_up_ancestor_chain
68
+ assert_equal [:title, :genres, :vchip_rating], Series.attributes.keys
69
+ end
70
+
71
+ def test_instance_attributes_from_subclasses_do_not_propogate_up_ancestor_chain
72
+ series = Series.new(:title => 'Family Guy', :genres => ['Comedy'], :vchip_rating => 'TVPG')
73
+ assert_equal [:title, :genres, :vchip_rating], series.attributes.keys
74
+ end
75
+
76
+ end
@@ -0,0 +1,32 @@
1
+ require File.join(File.dirname(__FILE__), 'setup')
2
+
3
+ class TestUUID < MiniTest::Unit::TestCase
4
+
5
+ def test_it_can_generate_10k_unique_ids
6
+ random = Couchbase::Model::UUID.new.next(10_000, :random)
7
+ assert_equal 10_000, random.uniq.size
8
+
9
+ utc_random = Couchbase::Model::UUID.new.next(10_000, :utc_random)
10
+ assert_equal 10_000, utc_random.uniq.size
11
+
12
+ sequential = Couchbase::Model::UUID.new.next(10_000, :sequential)
13
+ assert_equal 10_000, sequential.uniq.size
14
+ end
15
+
16
+ def test_it_produces_monotonically_increasing_ids
17
+ utc_random = Couchbase::Model::UUID.new
18
+ assert utc_random.next(1, :utc_random) < utc_random.next(1, :utc_random)
19
+
20
+ sequential = Couchbase::Model::UUID.new
21
+ assert sequential.next(1, :sequential) < sequential.next(1, :sequential)
22
+ end
23
+
24
+ def test_it_roll_over
25
+ generator = Couchbase::Model::UUID.new
26
+ prefix = generator.next[0, 26]
27
+ n = 0
28
+ n += 1 while prefix == generator.next[0, 26]
29
+ assert(n >= 5000 && n <= 11000)
30
+ end
31
+
32
+ end
metadata ADDED
@@ -0,0 +1,148 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jmoses-couchbase-model
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.3
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Couchbase
9
+ - Jon Moses
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2014-04-25 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: jmoses-couchbase
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: 1.3.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: 1.3.0
31
+ - !ruby/object:Gem::Dependency
32
+ name: rake
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :development
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: minitest
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: activesupport
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ description: ORM-like interface allows you to persist your models to Couchbase. This
80
+ fork requires my forked couchbase client, which uses connection-pool 2.0 instead
81
+ of 1.0
82
+ email:
83
+ - support@couchbase.com
84
+ - jon@burningbush.us
85
+ executables: []
86
+ extensions: []
87
+ extra_rdoc_files: []
88
+ files:
89
+ - .gitignore
90
+ - .travis.yml
91
+ - .yardopts
92
+ - CONTRIBUTING.markdown
93
+ - Gemfile
94
+ - HISTORY.markdown
95
+ - README.markdown
96
+ - Rakefile
97
+ - couchbase-model.gemspec
98
+ - lib/couchbase-model.rb
99
+ - lib/couchbase/model.rb
100
+ - lib/couchbase/model/configuration.rb
101
+ - lib/couchbase/model/ext/camelize.rb
102
+ - lib/couchbase/model/ext/constantize.rb
103
+ - lib/couchbase/model/ext/singleton_class.rb
104
+ - lib/couchbase/model/uuid.rb
105
+ - lib/couchbase/model/version.rb
106
+ - lib/couchbase/railtie.rb
107
+ - lib/rails/generators/couchbase/config/config_generator.rb
108
+ - lib/rails/generators/couchbase/config/templates/couchbase.yml
109
+ - lib/rails/generators/couchbase/view/templates/map.js
110
+ - lib/rails/generators/couchbase/view/templates/reduce.js
111
+ - lib/rails/generators/couchbase/view/view_generator.rb
112
+ - lib/rails/generators/couchbase_generator.rb
113
+ - tasks/package.rake
114
+ - tasks/test.rake
115
+ - tasks/util.rake
116
+ - test/setup.rb
117
+ - test/test_model.rb
118
+ - test/test_model_rails_integration.rb
119
+ - test/test_uuid.rb
120
+ homepage: https://github.com/couchbase/couchbase-ruby-model
121
+ licenses: []
122
+ post_install_message:
123
+ rdoc_options: []
124
+ require_paths:
125
+ - lib
126
+ required_ruby_version: !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ required_rubygems_version: !ruby/object:Gem::Requirement
133
+ none: false
134
+ requirements:
135
+ - - ! '>='
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ requirements: []
139
+ rubyforge_project:
140
+ rubygems_version: 1.8.24
141
+ signing_key:
142
+ specification_version: 3
143
+ summary: Declarative interface to Couchbase. (Fork for connection-pool 2.0)
144
+ test_files:
145
+ - test/setup.rb
146
+ - test/test_model.rb
147
+ - test/test_model_rails_integration.rb
148
+ - test/test_uuid.rb