addywaddy-couch_surfer 0.0.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.
@@ -0,0 +1,93 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper.rb'
2
+
3
+
4
+ class User
5
+ include CouchSurfer::Model
6
+ include CouchSurfer::Validations
7
+
8
+
9
+ key_accessor :name, :email, :postcode, :account_id
10
+
11
+ view_by :account_id, :email
12
+ view_by :name
13
+
14
+ validates_presence_of :name
15
+ validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
16
+ validates_length_of :postcode, :is => 7, :message => "not the correct length"
17
+ validates_uniqueness_of :name, :message => "No two Beatles have the same name"
18
+ validates_uniqueness_of :email, :view => {:name => :by_account_id_and_email, :query => lambda{ {:key => [account_id, email]} }}, :message => "Already taken!"
19
+ end
20
+
21
+
22
+ describe CouchSurfer::Validations do
23
+ before(:all) do
24
+ db = CouchRest.database!('couch_surfer-test')
25
+ db.delete!
26
+ CouchSurfer::Model.default_database = CouchRest.database!('http://127.0.0.1:5984/couch_surfer-test')
27
+ end
28
+ before(:each) do
29
+ @user = User.new(:name => nil, :email => "foo.bar.com", :postcode => "WD2", :account_id => 1)
30
+ end
31
+ describe "Validations" do
32
+ before(:each) do
33
+ @user.save.should be_false
34
+ end
35
+ describe "presence_of" do
36
+ it "should display relevant error messages" do
37
+ @user.errors.on(:name).should == "can't be empty"
38
+ end
39
+ end
40
+ describe "format_of" do
41
+ it "should display relevant errors messages" do
42
+ @user.errors.on(:email).should == "is invalid"
43
+ end
44
+ end
45
+ describe "length_of" do
46
+ it "should check the length of the field" do
47
+ @user.errors.on(:postcode).should == "not the correct length"
48
+ end
49
+ end
50
+ describe "uniqueness_of" do
51
+ before(:all) do
52
+ paul = User.new(:name => "Paul", :email => "paul@beatles.com", :postcode => "WD2 4WF", :account_id => 1)
53
+ paul.save.should be_true
54
+ @user_with_invalid_email = User.new(:name => "John", :email => "paul@beatles.com", :postcode => "WD2 4WF", :account_id => 1)
55
+ @user_with_invalid_name = User.new(:name => "Paul", :email => "george@beatles.com", :postcode => "WD2 4WF", :account_id => 1)
56
+ end
57
+
58
+ describe "basic" do
59
+ it "should display relevant errors messages" do
60
+ @user_with_invalid_name.save.should be_false
61
+ @user_with_invalid_name.errors.on(:name).should == "No two Beatles have the same name"
62
+ end
63
+
64
+ it "should save if the user is unique within the scope" do
65
+ @user_with_invalid_name.name = "George"
66
+ @user_with_invalid_name.save.should be_true
67
+ end
68
+ end
69
+
70
+ describe "with scope" do
71
+ it "should display relevant error messages" do
72
+ @user_with_invalid_email.save.should be_false
73
+ @user_with_invalid_email.errors.on(:email).should == "Already taken!"
74
+ end
75
+
76
+ it "should save if the user is unique within the scope" do
77
+ @user_with_invalid_email.email = "george@beatles.com"
78
+ @user_with_invalid_email.save.should be_true
79
+ end
80
+ end
81
+
82
+ end
83
+ describe "when valid" do
84
+ it "should save the document" do
85
+ @user.name = "Foo"
86
+ @user.postcode = "WD2 3AX"
87
+ @user.email = "foo2@bar.com"
88
+ @user.save.should be_true
89
+ end
90
+ end
91
+ end
92
+
93
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1 @@
1
+ --colour
@@ -0,0 +1,27 @@
1
+ begin
2
+ require 'spec'
3
+ rescue LoadError
4
+ require 'rubygems'
5
+ gem 'rspec'
6
+ require 'spec'
7
+ end
8
+
9
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
10
+ require 'couch_surfer'
11
+
12
+ unless defined?(FIXTURE_PATH)
13
+ FIXTURE_PATH = File.dirname(__FILE__) + '/fixtures'
14
+ SCRATCH_PATH = File.dirname(__FILE__) + '/tmp'
15
+
16
+ COUCHHOST = "http://127.0.0.1:5984"
17
+ TESTDB = 'couch_surfer-test'
18
+ end
19
+
20
+ def reset_test_db!
21
+ cr = CouchRest.new(COUCHHOST)
22
+ db = cr.database(TESTDB)
23
+ db.delete! rescue nil
24
+ db = cr.create_db(TESTDB) rescue nin
25
+ db
26
+ end
27
+ #CouchSurfer::Model.default_database = CouchRest.database!('http://127.0.0.1:5984/couch_surfer-test')
metadata ADDED
@@ -0,0 +1,105 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: addywaddy-couch_surfer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Adam Groves
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-01-22 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: json
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.1.2
23
+ version:
24
+ - !ruby/object:Gem::Dependency
25
+ name: rest-client
26
+ version_requirement:
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: "0.5"
32
+ version:
33
+ - !ruby/object:Gem::Dependency
34
+ name: jchris-couchrest
35
+ version_requirement:
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 0.12.2
41
+ version:
42
+ description: CouchSurfer provides an ORM for CouchDB, as well as supporting association and validation declarations.
43
+ email: jchris@apache.org
44
+ executables: []
45
+
46
+ extensions: []
47
+
48
+ extra_rdoc_files:
49
+ - README.md
50
+ - LICENSE
51
+ files:
52
+ - LICENSE
53
+ - README.md
54
+ - Rakefile
55
+ - lib/couch_surfer
56
+ - lib/couch_surfer/associations.rb
57
+ - lib/couch_surfer/model.rb
58
+ - lib/couch_surfer/validations.rb
59
+ - lib/couch_surfer.rb
60
+ - spec/fixtures
61
+ - spec/fixtures/attachments
62
+ - spec/fixtures/attachments/couchdb.png
63
+ - spec/fixtures/attachments/README
64
+ - spec/fixtures/attachments/test.html
65
+ - spec/fixtures/views
66
+ - spec/fixtures/views/lib.js
67
+ - spec/fixtures/views/test_view
68
+ - spec/fixtures/views/test_view/lib.js
69
+ - spec/fixtures/views/test_view/only-map.js
70
+ - spec/fixtures/views/test_view/test-map.js
71
+ - spec/fixtures/views/test_view/test-reduce.js
72
+ - spec/lib
73
+ - spec/lib/associations_spec.rb
74
+ - spec/lib/model_spec.rb
75
+ - spec/lib/validations_spec.rb
76
+ - spec/spec.opts
77
+ - spec/spec_helper.rb
78
+ has_rdoc: true
79
+ homepage: http://github.com/addywaddy/couchsurfer
80
+ post_install_message:
81
+ rdoc_options: []
82
+
83
+ require_paths:
84
+ - lib
85
+ required_ruby_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: "0"
90
+ version:
91
+ required_rubygems_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: "0"
96
+ version:
97
+ requirements: []
98
+
99
+ rubyforge_project:
100
+ rubygems_version: 1.2.0
101
+ signing_key:
102
+ specification_version: 2
103
+ summary: ORM based on CouchRest::Model
104
+ test_files: []
105
+