addywaddy-couch_surfer 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
+