sexy_pg_constraints 0.1.2 → 0.2.0

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,28 @@
1
+ module AssertProhibitsAllows
2
+ def assert_prohibits(model, column, constraint, constraint_type = 'check')
3
+ column = column.join('_') if column.respond_to?(:join)
4
+
5
+ book = model.new
6
+ yield(book)
7
+ assert book.valid?
8
+ error = assert_raise ActiveRecord::StatementInvalid do
9
+ book.save
10
+ end
11
+ assert_match /PGError/, error.message
12
+ assert_match /violates #{constraint_type} constraint/, error.message
13
+ assert_match /"#{model.table_name}_#{column}_(#{Array(constraint).map {|c| c.to_s }.join('|')})"/, error.message if constraint_type == 'check'
14
+ end
15
+
16
+ def assert_allows(model)
17
+ first_count = model.count
18
+ book = model.new
19
+ yield(book)
20
+ assert book.valid?
21
+ assert_nothing_raised do
22
+ book.save
23
+ end
24
+ assert_equal first_count + 1, model.count
25
+ end
26
+ end
27
+
28
+ Test::Unit::TestCase.send(:include, AssertProhibitsAllows)
@@ -0,0 +1,6 @@
1
+ adapter: postgresql
2
+ host: localhost
3
+ port: 5432
4
+ username: postgres
5
+ database: spc_test
6
+ encoding: utf8
@@ -0,0 +1,6 @@
1
+ adapter: postgresql
2
+ host: localhost
3
+ port: 5432
4
+ username: postgres
5
+ database: spc_test
6
+ encoding: utf8
@@ -0,0 +1,36 @@
1
+ # Setting up sample migrations
2
+ class CreateBooks < ActiveRecord::Migration
3
+ def self.up
4
+ create_table :books do |t|
5
+ t.string :title
6
+ t.string :author
7
+ t.integer :author_id
8
+ t.integer :quantity
9
+ t.integer :from
10
+ t.string :isbn
11
+ t.string :as
12
+ t.integer :xor_col_1
13
+ t.integer :xor_col_2
14
+ end
15
+ end
16
+
17
+ def self.down
18
+ drop_table :books
19
+ end
20
+ end
21
+
22
+ class CreateAuthors < ActiveRecord::Migration
23
+ def self.up
24
+ create_table :authors do |t|
25
+ t.string :name
26
+ t.string :bio
27
+ end
28
+ end
29
+
30
+ def self.down
31
+ drop_table :authors
32
+ end
33
+ end
34
+
35
+ class Book < ActiveRecord::Base; end
36
+ class Author < ActiveRecord::Base; end
@@ -2,4 +2,9 @@ require 'rubygems'
2
2
  require 'test/unit'
3
3
  require 'active_record'
4
4
  require 'postgresql_adapter'
5
- require "sexy_pg_constraints"
5
+ require "sexy_pg_constraints"
6
+ require File.dirname(__FILE__) + '/support/models'
7
+ require File.dirname(__FILE__) + '/support/assert_prohibits_allows'
8
+
9
+ db_config_path = File.join(File.dirname(__FILE__), 'support', 'database.yml')
10
+ ActiveRecord::Base.establish_connection(YAML::load(open(db_config_path)))
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sexy_pg_constraints
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maxim Chernyak
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-04 00:00:00 -04:00
12
+ date: 2010-02-01 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -41,6 +41,10 @@ files:
41
41
  - sexy_pg_constraints.gemspec
42
42
  - test/postgresql_adapter.rb
43
43
  - test/sexy_pg_constraints_test.rb
44
+ - test/support/assert_prohibits_allows.rb
45
+ - test/support/database.yml
46
+ - test/support/database.yml.example
47
+ - test/support/models.rb
44
48
  - test/test_helper.rb
45
49
  has_rdoc: true
46
50
  homepage: http://github.com/maxim/sexy_pg_constraints