composite_primary_keys 1.0.8 → 1.0.10

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.
@@ -1,108 +1,108 @@
1
- CREATE TABLE reference_types (
2
- reference_type_id INTEGER PRIMARY KEY,
3
- type_label varchar(50) default NULL,
4
- abbreviation varchar(50) default NULL,
5
- description varchar(50) default NULL
1
+ create table reference_types (
2
+ reference_type_id integer primary key,
3
+ type_label varchar(50) default null,
4
+ abbreviation varchar(50) default null,
5
+ description varchar(50) default null
6
6
  );
7
7
 
8
- CREATE TABLE reference_codes (
9
- reference_type_id int(11) NOT NULL,
10
- reference_code int(11) NOT NULL,
11
- code_label varchar(50) default NULL,
12
- abbreviation varchar(50) default NULL,
13
- description varchar(50) default NULL,
14
- PRIMARY KEY (reference_type_id,reference_code)
8
+ create table reference_codes (
9
+ reference_type_id int(11),
10
+ reference_code int(11) not null,
11
+ code_label varchar(50) default null,
12
+ abbreviation varchar(50) default null,
13
+ description varchar(50) default null,
14
+ primary key (reference_type_id, reference_code)
15
15
  );
16
16
 
17
- CREATE TABLE products (
18
- id int(11) NOT NULL PRIMARY KEY,
19
- name varchar(50) default NULL
17
+ create table products (
18
+ id int(11) not null primary key,
19
+ name varchar(50) default null
20
20
  );
21
21
 
22
- CREATE TABLE tariffs (
23
- tariff_id int(11) NOT NULL,
24
- start_date date NOT NULL,
25
- amount integer(11) default NULL,
26
- PRIMARY KEY (tariff_id,start_date)
22
+ create table tariffs (
23
+ tariff_id int(11) not null,
24
+ start_date date not null,
25
+ amount integer(11) default null,
26
+ primary key (tariff_id, start_date)
27
27
  );
28
28
 
29
- CREATE TABLE product_tariffs (
30
- product_id int(11) NOT NULL,
31
- tariff_id int(11) NOT NULL,
32
- tariff_start_date date NOT NULL,
33
- PRIMARY KEY (product_id,tariff_id,tariff_start_date)
29
+ create table product_tariffs (
30
+ product_id int(11) not null,
31
+ tariff_id int(11) not null,
32
+ tariff_start_date date not null,
33
+ primary key (product_id, tariff_id, tariff_start_date)
34
34
  );
35
35
 
36
- CREATE TABLE suburbs (
37
- city_id int(11) NOT NULL,
38
- suburb_id int(11) NOT NULL,
39
- name varchar(50) NOT NULL,
40
- PRIMARY KEY (city_id,suburb_id)
36
+ create table suburbs (
37
+ city_id int(11) not null,
38
+ suburb_id int(11) not null,
39
+ name varchar(50) not null,
40
+ primary key (city_id, suburb_id)
41
41
  );
42
42
 
43
- CREATE TABLE streets (
44
- id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
45
- city_id int(11) NOT NULL,
46
- suburb_id int(11) NOT NULL,
47
- name varchar(50) NOT NULL
43
+ create table streets (
44
+ id integer not null primary key autoincrement,
45
+ city_id int(11) not null,
46
+ suburb_id int(11) not null,
47
+ name varchar(50) not null
48
48
  );
49
49
 
50
- CREATE TABLE users (
51
- id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
52
- name varchar(50) NOT NULL
50
+ create table users (
51
+ id integer not null primary key autoincrement,
52
+ name varchar(50) not null
53
53
  );
54
54
 
55
- CREATE TABLE articles (
56
- id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
57
- name varchar(50) NOT NULL
55
+ create table articles (
56
+ id integer not null primary key autoincrement,
57
+ name varchar(50) not null
58
58
  );
59
59
 
60
- CREATE TABLE readings (
61
- id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
62
- user_id int(11) NOT NULL,
63
- article_id int(11) NOT NULL,
64
- rating int(11) NOT NULL
60
+ create table readings (
61
+ id integer not null primary key autoincrement,
62
+ user_id int(11) not null,
63
+ article_id int(11) not null,
64
+ rating int(11) not null
65
65
  );
66
66
 
67
- CREATE TABLE groups (
68
- id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
69
- name varchar(50) NOT NULL
67
+ create table groups (
68
+ id integer not null primary key autoincrement,
69
+ name varchar(50) not null
70
70
  );
71
71
 
72
- CREATE TABLE memberships (
73
- user_id int NOT NULL,
74
- group_id int NOT NULL,
75
- PRIMARY KEY (user_id,group_id)
72
+ create table memberships (
73
+ user_id int not null,
74
+ group_id int not null,
75
+ primary key (user_id, group_id)
76
76
  );
77
77
 
78
- CREATE TABLE membership_statuses (
79
- id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
80
- user_id int NOT NULL,
81
- group_id int NOT NULL,
82
- status varchar(50) NOT NULL
78
+ create table membership_statuses (
79
+ id integer not null primary key autoincrement,
80
+ user_id int not null,
81
+ group_id int not null,
82
+ status varchar(50) not null
83
83
  );
84
84
 
85
- CREATE TABLE departments (
86
- department_id INTEGER NOT NULL,
87
- location_id INTEGER NOT NULL,
88
- PRIMARY KEY (department_id, location_id)
85
+ create table departments (
86
+ department_id integer not null,
87
+ location_id integer not null,
88
+ primary key (department_id, location_id)
89
89
  );
90
90
 
91
- CREATE TABLE employees (
92
- id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
93
- department_id INTEGER NULL,
94
- location_id INTEGER NULL
91
+ create table employees (
92
+ id integer not null primary key autoincrement,
93
+ department_id integer null,
94
+ location_id integer null
95
95
  );
96
96
 
97
- CREATE TABLE comments (
98
- id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
99
- person_id varchar(100) NULL,
100
- person_type varchar(100) NULL,
101
- hack_id varchar(100) NULL
97
+ create table comments (
98
+ id integer not null primary key autoincrement,
99
+ person_id varchar(100) null,
100
+ person_type varchar(100) null,
101
+ hack_id varchar(100) null
102
102
  );
103
103
 
104
- CREATE TABLE hacks (
105
- name varchar(50) NOT NULL PRIMARY KEY
104
+ create table hacks (
105
+ name varchar(50) not null primary key
106
106
  );
107
107
 
108
108
  create table kitchen_sinks (
@@ -157,3 +157,4 @@ create table room_assignments (
157
157
  dorm_id integer not null,
158
158
  room_id integer not null
159
159
  );
160
+
@@ -1,3 +1,3 @@
1
- class Street < ActiveRecord::Base
2
- belongs_to :suburb, :foreign_key => [:city_id, :suburb_id]
1
+ class Street < ActiveRecord::Base
2
+ belongs_to :suburb, :foreign_key => [:city_id, :suburb_id]
3
3
  end
@@ -1,15 +1,15 @@
1
- first:
2
- id: 1
3
- city_id: 1
4
- suburb_id: 1
5
- name: First Street
6
- second1:
7
- id: 2
8
- city_id: 2
9
- suburb_id: 1
10
- name: First Street
11
- second2:
12
- id: 3
13
- city_id: 2
14
- suburb_id: 1
1
+ first:
2
+ id: 1
3
+ city_id: 1
4
+ suburb_id: 1
5
+ name: First Street
6
+ second1:
7
+ id: 2
8
+ city_id: 2
9
+ suburb_id: 1
10
+ name: First Street
11
+ second2:
12
+ id: 3
13
+ city_id: 2
14
+ suburb_id: 1
15
15
  name: Second Street
@@ -19,11 +19,6 @@ class TestAssociations < Test::Unit::TestCase
19
19
  fixtures :articles, :products, :tariffs, :product_tariffs, :suburbs, :streets, :restaurants, :restaurants_suburbs,
20
20
  :dorms, :rooms, :room_attributes, :room_attribute_assignments, :students, :room_assignments, :users, :readings
21
21
 
22
- def test_quoted_table_columns
23
- assert_equal "product_tariffs.product_id,product_tariffs.tariff_id,product_tariffs.tariff_start_date",
24
- ProductTariff.send(:quoted_table_columns, ProductTariff.primary_key)
25
- end
26
-
27
22
  def test_has_many_through_with_conditions_when_through_association_is_not_composite
28
23
  user = User.find(:first)
29
24
  assert_equal 1, user.articles.find(:all, :conditions => ["articles.name = ?", "Article One"]).size
@@ -16,7 +16,7 @@ class TestAttributeMethods < Test::Unit::TestCase
16
16
  sink = KitchenSink.find(1,2)
17
17
  assert_equal(1, sink.id_1)
18
18
  assert_equal(2, sink.id_2)
19
- assert_equal(Date.today, sink.a_date)
19
+ assert_equal(Date.today, sink.a_date.to_date)
20
20
  assert_equal('string', sink.a_string)
21
21
  end
22
- end
22
+ end
@@ -1,68 +1,68 @@
1
- require 'abstract_unit'
2
- require 'fixtures/reference_type'
3
- require 'fixtures/reference_code'
4
- require 'fixtures/street'
5
- require 'fixtures/suburb'
6
-
7
- class TestCreate < Test::Unit::TestCase
8
- fixtures :reference_types, :reference_codes, :streets, :suburbs
9
-
10
- CLASSES = {
11
- :single => {
12
- :class => ReferenceType,
13
- :primary_keys => :reference_type_id,
14
- :create => {:reference_type_id => 10, :type_label => 'NEW_TYPE', :abbreviation => 'New Type'}
15
- },
16
- :dual => {
17
- :class => ReferenceCode,
18
- :primary_keys => [:reference_type_id, :reference_code],
19
- :create => {:reference_type_id => 1, :reference_code => 20, :code_label => 'NEW_CODE', :abbreviation => 'New Code'}
20
- },
21
- }
22
-
23
- def setup
24
- self.class.classes = CLASSES
25
- end
26
-
27
- def test_setup
28
- testing_with do
29
- assert_not_nil @klass_info[:create]
30
- end
31
- end
32
-
33
- def test_create
34
- testing_with do
35
- assert new_obj = @klass.create(@klass_info[:create])
36
- assert !new_obj.new_record?
37
- end
38
- end
39
-
40
- def test_create_no_id
41
- testing_with do
42
- begin
43
- @obj = @klass.create(@klass_info[:create].block(@klass.primary_key))
44
- @successful = !composite?
45
- rescue CompositePrimaryKeys::ActiveRecord::CompositeKeyError
46
- @successful = false
47
- rescue
48
- flunk "Incorrect exception raised: #{$!}, #{$!.class}"
49
- end
50
- assert_equal composite?, !@successful, "Create should have failed for composites; #{@obj.inspect}"
51
- end
52
- end
53
-
54
- def test_create_on_association
55
- suburb = Suburb.find(:first)
56
- suburb.streets.create(:city_id => suburb.city_id, :suburb_id => suburb.suburb_id, :name => "my street")
57
- street = Street.find_by_name('my street')
58
- assert_equal(suburb.city_id, street.city_id)
59
- assert_equal(suburb.suburb_id, street.suburb_id)
60
- end
61
-
62
- def test_create_on_association_when_belongs_to_is_single_key
63
- rt = ReferenceType.find(:first)
64
- rt.reference_codes.create(:reference_type_id => 1234, :reference_code => 4321, :code_label => 'foo', :abbreviation => 'bar')
65
- rc = ReferenceCode.find_by_reference_code(4321)
66
- assert_equal(rc.reference_type_id, rt.reference_type_id)
67
- end
68
- end
1
+ require 'abstract_unit'
2
+ require 'fixtures/reference_type'
3
+ require 'fixtures/reference_code'
4
+ require 'fixtures/street'
5
+ require 'fixtures/suburb'
6
+
7
+ class TestCreate < Test::Unit::TestCase
8
+ fixtures :reference_types, :reference_codes, :streets, :suburbs
9
+
10
+ CLASSES = {
11
+ :single => {
12
+ :class => ReferenceType,
13
+ :primary_keys => :reference_type_id,
14
+ :create => {:reference_type_id => 10, :type_label => 'NEW_TYPE', :abbreviation => 'New Type'}
15
+ },
16
+ :dual => {
17
+ :class => ReferenceCode,
18
+ :primary_keys => [:reference_type_id, :reference_code],
19
+ :create => {:reference_type_id => 1, :reference_code => 20, :code_label => 'NEW_CODE', :abbreviation => 'New Code'}
20
+ },
21
+ }
22
+
23
+ def setup
24
+ self.class.classes = CLASSES
25
+ end
26
+
27
+ def test_setup
28
+ testing_with do
29
+ assert_not_nil @klass_info[:create]
30
+ end
31
+ end
32
+
33
+ def test_create
34
+ testing_with do
35
+ assert new_obj = @klass.create(@klass_info[:create])
36
+ assert !new_obj.new_record?
37
+ end
38
+ end
39
+
40
+ def test_create_no_id
41
+ testing_with do
42
+ begin
43
+ @obj = @klass.create(@klass_info[:create].block(@klass.primary_key))
44
+ @successful = !composite?
45
+ rescue CompositePrimaryKeys::ActiveRecord::CompositeKeyError
46
+ @successful = false
47
+ rescue
48
+ flunk "Incorrect exception raised: #{$!}, #{$!.class}"
49
+ end
50
+ assert_equal composite?, !@successful, "Create should have failed for composites; #{@obj.inspect}"
51
+ end
52
+ end
53
+
54
+ def test_create_on_association
55
+ suburb = Suburb.find(:first)
56
+ suburb.streets.create(:name => "my street")
57
+ street = Street.find_by_name('my street')
58
+ assert_equal(suburb.city_id, street.city_id)
59
+ assert_equal(suburb.suburb_id, street.suburb_id)
60
+ end
61
+
62
+ def test_create_on_association_when_belongs_to_is_single_key
63
+ rt = ReferenceType.find(:first)
64
+ rt.reference_codes.create(:reference_code => 4321, :code_label => 'foo', :abbreviation => 'bar')
65
+ rc = ReferenceCode.find_by_reference_code(4321)
66
+ assert_equal(rc.reference_type_id, rt.reference_type_id)
67
+ end
68
+ end
@@ -65,23 +65,32 @@ class TestDelete < Test::Unit::TestCase
65
65
  @klass.delete_all
66
66
  end
67
67
  end
68
-
68
+
69
69
  def test_clear_association
70
70
  department = Department.find(1,1)
71
- assert_equal 2, department.employees.size, "Employee count for department should be 2 before clear"
71
+ assert_equal 2, department.employees.size, "Before clear employee count should be 2."
72
72
  department.employees.clear
73
- assert_equal 0, department.employees.size, "After clear size should 0"
73
+ assert_equal 0, department.employees.size, "After clear employee count should be 0."
74
74
  department.reload
75
- assert_equal 0, department.employees.size, "After clear count in database should have been 0"
75
+ assert_equal 0, department.employees.size, "After clear and a reload from DB employee count should be 0."
76
76
  end
77
-
77
+
78
78
  def test_delete_association
79
79
  department = Department.find(1,1)
80
- assert_equal 2, department.employees.size , "Employee count for department should be 2 before delete"
81
- first_employee = department.employees[0]
82
- department.employees.delete(first_employee)
83
- assert_equal 1, department.employees.size, "After delete employees count should be 1."
80
+ assert_equal 2, department.employees.size , "Before delete employee count should be 2."
81
+ first_employee = department.employees[0]
82
+ department.employees.delete(first_employee)
83
+ assert_equal 1, department.employees.size, "After delete employee count should be 1."
84
84
  department.reload
85
- assert_equal 1, department.employees.size, "After delete employees count should be 1 after reload from DB."
85
+ assert_equal 1, department.employees.size, "After delete and a reload from DB employee count should be 1."
86
+ end
87
+
88
+ def test_delete_records_for_has_many_association_with_composite_primary_key
89
+ reference_type = ReferenceType.find(1)
90
+ codes_to_delete = reference_type.reference_codes[0..1]
91
+ assert_equal 3, reference_type.reference_codes.size, "Before deleting records reference_code count should be 3."
92
+ reference_type.reference_codes.delete_records(codes_to_delete)
93
+ reference_type.reload
94
+ assert_equal 1, reference_type.reference_codes.size, "After deleting 2 records and a reload from DB reference_code count should be 1."
86
95
  end
87
96
  end
@@ -46,6 +46,13 @@ class TestIds < Test::Unit::TestCase
46
46
  end
47
47
  end
48
48
 
49
+ def test_composite_where_clause
50
+ testing_with do
51
+ where = 'reference_codes.reference_type_id=1 AND reference_codes.reference_code=2) OR (reference_codes.reference_type_id=2 AND reference_codes.reference_code=2'
52
+ assert_equal(where, @klass.composite_where_clause([[1, 2], [2, 2]])) if @key_test == :dual
53
+ end
54
+ end
55
+
49
56
  def test_set_ids_string
50
57
  testing_with do
51
58
  array = @primary_keys.collect {|key| 5}
Binary file
@@ -1,3 +1,3 @@
1
- // <%= title %>
2
- var version = <%= version.to_json %>;
3
- <%= body %>
1
+ // <%= title %>
2
+ var version = <%= version.to_json %>;
3
+ <%= body %>