fides 0.0.11 → 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 92258eb65e77c3d3fd6881caa7fa5037e9a502d0
4
- data.tar.gz: 688bada85c59802fa3d7bb442389f6c3ff47009a
3
+ metadata.gz: 6730418f04d57da6e4cbd55988a3c508009ee881
4
+ data.tar.gz: 89a9e627c96a5c215351e9223265c5b249ad88b9
5
5
  SHA512:
6
- metadata.gz: 24558f5c56565abfe349078dab792678d820569b83430287f56408e159b544fd95ad423eaf71e5baa644dcd3b9885373049de7c4b31a2dc54358c460ff7f7cc8
7
- data.tar.gz: 8d0d5c243156a0bd7a3301260097351e0c6b77c215a15fba32dc45ff3009fd43b3a7c84097d114e2f04877be6d1d3c5f09d50fce6a2bdb34afd34cf09b5a852f
6
+ metadata.gz: 2cccbd5ab8741d65b6bc26540ad1b59f9b0d336ceccb48680041e793ffea21464218a82a22b7a0af74b75e3a0d8a734121f7de4a6fa9965678e16698937436f3
7
+ data.tar.gz: 2d1c481246449df7bde5418a3f47a980c3b228e887793f6939209dcb01b4806cb9542d6b602c79b674086a346faa6f181e517d96625730a58a10f722a9e3b52e
data/README.md CHANGED
@@ -71,7 +71,7 @@ If you're using Rails < version 3.1, then use Fides in your migration like this:
71
71
  Fides assumes the use of Rails conventions, so if you find a case for something that needs overriding,
72
72
  please feel free to submit a bug or send a pull request.
73
73
 
74
- Fides currently only functions with PostgreSQL. Please feel free to contribute other adapters as desired.
74
+ Fides currently only functions with PostgreSQL and SQLite3. Please feel free to contribute other adapters as desired.
75
75
 
76
76
  ## Contributing
77
77
 
@@ -3,7 +3,19 @@ module Fides
3
3
  class Postgresql
4
4
  include SqlWriter
5
5
 
6
- def self.get_create_function_sql(interface_name, models, polymorphic_model)
6
+ def self.executable_add_statements(interface_name, models, polymorphic_model)
7
+ sql = create_and_update_constraint_sql(interface_name, models, polymorphic_model)
8
+ sql << delete_constraint_sql(interface_name, models, polymorphic_model)
9
+ return [sql]
10
+ end
11
+
12
+ def self.executable_remove_statements(interface_name)
13
+ [drop_constraints_sql(interface_name)]
14
+ end
15
+
16
+ private
17
+
18
+ def self.create_and_update_constraint_sql(interface_name, models, polymorphic_model)
7
19
 
8
20
  sql = "DROP FUNCTION IF EXISTS check_#{interface_name}_create_integrity() CASCADE;"
9
21
 
@@ -34,12 +46,13 @@ module Fides
34
46
  CREATE TRIGGER check_#{interface_name}_create_integrity_trigger
35
47
  BEFORE INSERT OR UPDATE ON #{polymorphic_model.constantize.table_name}
36
48
  FOR EACH ROW EXECUTE PROCEDURE check_#{interface_name}_create_integrity();
49
+
37
50
  }
38
51
 
39
52
  return strip_non_essential_spaces(sql)
40
53
  end
41
54
 
42
- def self.get_delete_function_sql(interface_name, models, polymorphic_model)
55
+ def self.delete_constraint_sql(interface_name, models, polymorphic_model)
43
56
  polymorphic_model_table_name = polymorphic_model.constantize.table_name
44
57
 
45
58
  sql = ""
@@ -82,7 +95,7 @@ module Fides
82
95
  return strip_non_essential_spaces(sql)
83
96
  end
84
97
 
85
- def self.get_drop_function_sql(interface_name)
98
+ def self.drop_constraints_sql(interface_name)
86
99
  sql = %{
87
100
  DROP FUNCTION IF EXISTS check_#{interface_name}_create_integrity() CASCADE;
88
101
  DROP FUNCTION IF EXISTS check_#{interface_name}_delete_integrity() CASCADE;
data/lib/fides/sqlite3.rb CHANGED
@@ -5,12 +5,92 @@ module Fides
5
5
  class Sqlite3
6
6
  include SqlWriter
7
7
 
8
- def self.get_create_function_sql(interface_name, models, polymorphic_model)
9
- raise "Sqlite3 not yet implemented"
8
+ def self.executable_add_statements(interface_name, models, polymorphic_model)
9
+ statements = []
10
+ statements << drop_constraint_sql(interface_name, "create")
11
+ statements << create_constraint_sql(interface_name, models, polymorphic_model)
12
+ models.each do |model|
13
+ statements << drop_constraint_sql(model.constantize.table_name, "delete")
14
+ statements << delete_constraint_sql(interface_name, model, polymorphic_model)
15
+ end
16
+ statements << drop_constraint_sql(interface_name, "update")
17
+ statements << update_constraint_sql(interface_name, models, polymorphic_model)
18
+ return statements
10
19
  end
11
20
 
12
- def self.get_delete_function_sql(interface_name, models, polymorphic_model)
13
- raise "Sqlite3 not yet implemented"
21
+ def self.executable_remove_statements(interface_name)
22
+ statements = []
23
+ statements << drop_constraint_sql(interface_name, "create")
24
+ statements << drop_constraint_sql(interface_name, "delete")
25
+ return statements
26
+ end
27
+
28
+ private
29
+
30
+ def self.drop_constraint_sql(name, drop_type)
31
+ strip_non_essential_spaces "DROP TRIGGER IF EXISTS check_#{name}_#{drop_type}_integrity;"
32
+ end
33
+
34
+ def self.create_constraint_sql(interface_name, models, polymorphic_model)
35
+ sql = %{
36
+
37
+ CREATE TRIGGER check_#{interface_name}_create_integrity
38
+ BEFORE INSERT ON #{polymorphic_model.constantize.table_name}
39
+ BEGIN
40
+ SELECT CASE
41
+ }
42
+
43
+ models.each do |model|
44
+ sql << %{
45
+ WHEN ((NEW.#{interface_name}_type = '#{model}') AND (SELECT id
46
+ FROM #{model.constantize.table_name} WHERE id = NEW.#{interface_name}_id) ISNULL)
47
+ THEN RAISE(ABORT, 'There is no #{model} with that id.')
48
+ }
49
+ end
50
+
51
+ sql << "END; END;"
52
+
53
+ return strip_non_essential_spaces(sql)
54
+ end
55
+
56
+ def self.update_constraint_sql(interface_name, models, polymorphic_model)
57
+ sql = %{
58
+
59
+ CREATE TRIGGER check_#{interface_name}_update_integrity
60
+ BEFORE UPDATE ON #{polymorphic_model.constantize.table_name}
61
+ BEGIN
62
+ SELECT CASE
63
+ }
64
+
65
+ models.each do |model|
66
+ sql << %{
67
+ WHEN ((NEW.#{interface_name}_type = '#{model}') AND (SELECT id
68
+ FROM #{model.constantize.table_name} WHERE id = NEW.#{interface_name}_id) ISNULL)
69
+ THEN RAISE(ABORT, 'There is no #{model} with that id.')
70
+ }
71
+ end
72
+
73
+ sql << "END; END;"
74
+
75
+ return strip_non_essential_spaces(sql)
76
+ end
77
+
78
+ def self.delete_constraint_sql(interface_name, associated_model, polymorphic_model)
79
+ sql = %{
80
+
81
+ CREATE TRIGGER check_#{associated_model.constantize.table_name}_delete_integrity
82
+ BEFORE DELETE ON #{associated_model.constantize.table_name}
83
+ BEGIN
84
+ SELECT CASE
85
+ WHEN ((SELECT id FROM #{polymorphic_model.constantize.table_name}
86
+ WHERE #{interface_name}_type = '#{associated_model}' AND #{interface_name}_id = OLD.id) NOTNULL) THEN
87
+ RAISE(ABORT, 'There are records in the #{polymorphic_model.constantize.table_name} table that refer to the #{associated_model.constantize.table_name} record that is attempting to be deleted. Delete the dependent records in the #{polymorphic_model.constantize.table_name} table first.')
88
+ END;
89
+ END;
90
+
91
+ }
92
+
93
+ return strip_non_essential_spaces(sql)
14
94
  end
15
95
 
16
96
  end
data/lib/fides/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Fides
2
- VERSION = "0.0.11"
2
+ VERSION = "0.0.13"
3
3
  end
data/lib/fides.rb CHANGED
@@ -10,7 +10,7 @@ require 'fides/database_adapter_error'
10
10
 
11
11
  module Fides
12
12
 
13
- SUPPORTED_ADAPTERS = ["postgresql"]
13
+ SUPPORTED_ADAPTERS = ["postgresql", "sqlite3"]
14
14
 
15
15
  extend ActiveSupport::Concern
16
16
 
@@ -24,10 +24,9 @@ module Fides
24
24
 
25
25
  fides_sql_generator = get_sql_generator_class
26
26
 
27
- sql = fides_sql_generator.get_create_function_sql(interface, associated_models, polymorphic_model)
28
- sql << fides_sql_generator.get_delete_function_sql(interface, associated_models, polymorphic_model)
27
+ execution_statements = fides_sql_generator.executable_add_statements(interface, associated_models, polymorphic_model)
29
28
 
30
- execute sql
29
+ execution_statements.each { |statement| execute statement }
31
30
  end
32
31
 
33
32
  def remove_polymorphic_triggers(opts)
@@ -36,9 +35,9 @@ module Fides
36
35
  polymorphic_model = opts[:polymorphic_model]
37
36
  interface = opts.has_key?(:interface_name) ? opts[:interface_name] : interface_name(polymorphic_model)
38
37
 
39
- sql = get_sql_generator_class.get_drop_function_sql(interface)
38
+ execution_statements = get_sql_generator_class.executable_remove_statements(interface)
40
39
 
41
- execute sql
40
+ execution_statements.each { |statement| execute statement }
42
41
  end
43
42
 
44
43
  private
@@ -54,7 +53,6 @@ module Fides
54
53
  model_name.constantize.reflect_on_all_associations.select { |r| r if r.options[:polymorphic] }.first.name
55
54
  end
56
55
 
57
-
58
56
  end
59
57
 
60
58
  class ActiveRecord::Migration
@@ -4,75 +4,76 @@ describe Fides::Postgresql do
4
4
 
5
5
  let(:subject) { Fides::Postgresql }
6
6
 
7
- it 'responds to #get_create_function_sql' do
8
- assert_respond_to subject, :get_create_function_sql
7
+ it 'responds to #executable_add_statements' do
8
+ assert_respond_to subject, :executable_add_statements
9
9
  end
10
10
 
11
- it 'responds to #get_delete_function_sql' do
12
- assert_respond_to subject, :get_delete_function_sql
11
+ it 'responds to #executable_remove_statements' do
12
+ assert_respond_to subject, :executable_remove_statements
13
13
  end
14
14
 
15
- it 'returns an expected SQL string' do
16
- sql = subject.get_create_function_sql("imageable", ["Product", "Employee"], "Picture")
17
- assert_equal subject.strip_non_essential_spaces(CREATE_SQL), sql
15
+ it 'returns an expected add constraints SQL string' do
16
+ sql = subject.executable_add_statements("imageable", ["Product", "Employee"], "Picture")[0]
17
+ assert_equal subject.strip_non_essential_spaces(add_constraints_sql), sql
18
18
  end
19
19
 
20
- it 'returns an expected SQL string' do
21
- sql = subject.get_delete_function_sql("imageable", ["Product", "Employee"], "Picture")
22
- assert_equal subject.strip_non_essential_spaces(DELETE_SQL), sql
20
+ it 'returns an expected drop constraints SQL string' do
21
+ sql = subject.executable_remove_statements("imageable")[0]
22
+ assert_equal subject.strip_non_essential_spaces(drop_constraing_sql), sql
23
23
  end
24
24
 
25
- CREATE_SQL = %{
26
-
27
- DROP FUNCTION IF EXISTS check_imageable_create_integrity() CASCADE;
28
-
29
- CREATE FUNCTION check_imageable_create_integrity() RETURNS TRIGGER AS '
30
- BEGIN
31
- IF NEW.imageable_type = ''Product'' AND EXISTS (
32
- SELECT id FROM products WHERE id = NEW.imageable_id) THEN
33
- RETURN NEW;
34
- ELSEIF NEW.imageable_type = ''Employee'' AND EXISTS (
35
- SELECT id FROM employees WHERE id = NEW.imageable_id) THEN
36
- RETURN NEW;
37
- ELSE
38
- RAISE EXCEPTION ''No % model with id %.'', NEW.imageable_type, NEW.imageable_id;
39
- RETURN NULL;
40
- END IF;
41
- END'
42
- LANGUAGE plpgsql;
43
-
44
- CREATE TRIGGER check_imageable_create_integrity_trigger
45
- BEFORE INSERT OR UPDATE ON pictures
46
- FOR EACH ROW EXECUTE PROCEDURE check_imageable_create_integrity();
47
-
48
- }
49
-
50
- DELETE_SQL = %{
51
-
52
- CREATE FUNCTION check_imageable_delete_integrity() RETURNS TRIGGER AS '
53
- BEGIN
54
- IF TG_TABLE_NAME = ''products'' AND EXISTS (
55
- SELECT id FROM pictures
56
- WHERE imageable_type = ''Product'' AND imageable_id = OLD.id) THEN
57
- RAISE EXCEPTION ''There are records in pictures that refer to %. You must delete those records first.'', OLD;
58
- ELSEIF TG_TABLE_NAME = ''employees'' AND EXISTS (
59
- SELECT id FROM pictures
60
- WHERE imageable_type = ''Employee'' AND imageable_id = OLD.id) THEN
61
- RAISE EXCEPTION ''There are records in pictures that refer to %. You must delete those records first.'', OLD;
62
- ELSE
63
- RETURN NULL;
64
- END IF;
65
- END'
66
- LANGUAGE plpgsql;
67
-
68
- CREATE TRIGGER check_products_delete_integrity_trigger
69
- BEFORE DELETE ON products
70
- FOR EACH ROW EXECUTE PROCEDURE check_imageable_delete_integrity();
71
-
72
- CREATE TRIGGER check_employees_delete_integrity_trigger
73
- BEFORE DELETE ON employees
74
- FOR EACH ROW EXECUTE PROCEDURE check_imageable_delete_integrity();
25
+ let(:add_constraints_sql) do %{
26
+
27
+ DROP FUNCTION IF EXISTS check_imageable_create_integrity() CASCADE;
28
+
29
+ CREATE FUNCTION check_imageable_create_integrity() RETURNS TRIGGER AS '
30
+ BEGIN
31
+ IF NEW.imageable_type = ''Product'' AND EXISTS (
32
+ SELECT id FROM products WHERE id = NEW.imageable_id) THEN
33
+ RETURN NEW;
34
+ ELSEIF NEW.imageable_type = ''Employee'' AND EXISTS (
35
+ SELECT id FROM employees WHERE id = NEW.imageable_id) THEN
36
+ RETURN NEW;
37
+ ELSE
38
+ RAISE EXCEPTION ''No % model with id %.'', NEW.imageable_type, NEW.imageable_id;
39
+ RETURN NULL;
40
+ END IF;
41
+ END'
42
+ LANGUAGE plpgsql;
43
+
44
+ CREATE TRIGGER check_imageable_create_integrity_trigger
45
+ BEFORE INSERT OR UPDATE ON pictures
46
+ FOR EACH ROW EXECUTE PROCEDURE check_imageable_create_integrity();CREATE FUNCTION check_imageable_delete_integrity() RETURNS TRIGGER AS '
47
+ BEGIN
48
+ IF TG_TABLE_NAME = ''products'' AND EXISTS (
49
+ SELECT id FROM pictures
50
+ WHERE imageable_type = ''Product'' AND imageable_id = OLD.id) THEN
51
+ RAISE EXCEPTION ''There are records in pictures that refer to %. You must delete those records first.'', OLD;
52
+ ELSEIF TG_TABLE_NAME = ''employees'' AND EXISTS (
53
+ SELECT id FROM pictures
54
+ WHERE imageable_type = ''Employee'' AND imageable_id = OLD.id) THEN
55
+ RAISE EXCEPTION ''There are records in pictures that refer to %. You must delete those records first.'', OLD;
56
+ ELSE
57
+ RETURN NULL;
58
+ END IF;
59
+ END'
60
+ LANGUAGE plpgsql;
61
+
62
+ CREATE TRIGGER check_products_delete_integrity_trigger
63
+ BEFORE DELETE ON products
64
+ FOR EACH ROW EXECUTE PROCEDURE check_imageable_delete_integrity();
65
+
66
+ CREATE TRIGGER check_employees_delete_integrity_trigger
67
+ BEFORE DELETE ON employees
68
+ FOR EACH ROW EXECUTE PROCEDURE check_imageable_delete_integrity();
69
+
70
+ }
71
+ end
75
72
 
76
- }
73
+ let(:drop_constraing_sql) do %{
74
+ DROP FUNCTION IF EXISTS check_imageable_create_integrity() CASCADE;
75
+ DROP FUNCTION IF EXISTS check_imageable_delete_integrity() CASCADE;
76
+ }
77
+ end
77
78
 
78
79
  end
@@ -0,0 +1,36 @@
1
+ require_relative '../../test_helper'
2
+
3
+ describe Fides::SqlWriter do
4
+
5
+ before do
6
+ class MyTestClass
7
+ include Fides::SqlWriter
8
+ end
9
+ end
10
+
11
+ describe "#strip_non_essential_spaces" do
12
+ it 'removes newline characters' do
13
+ dirty_string = "asdjfkals;dfj\n\n\nasdfjkl;asdf\n\n\nasjfklas;fdj"
14
+ clean_string = "asdjfkals;dfj asdfjkl;asdf asjfklas;fdj"
15
+ assert_equal clean_string, MyTestClass.strip_non_essential_spaces(dirty_string)
16
+ end
17
+
18
+ it 'turns multiple spaces into 1 space' do
19
+ dirty_string = "a sdjfkals;dfj asdfjkl;a sdfasjfklas; fdj"
20
+ clean_string = "a sdjfkals;dfj asdfjkl;a sdfasjfklas; fdj"
21
+ assert_equal clean_string, MyTestClass.strip_non_essential_spaces(dirty_string)
22
+ end
23
+
24
+ it 'removes tabs' do
25
+ dirty_string = "hel\t\tlowor\t\t\t\tld\t"
26
+ clean_string = "hel lowor ld"
27
+ assert_equal clean_string, MyTestClass.strip_non_essential_spaces(dirty_string)
28
+ end
29
+
30
+ it 'trips the string' do
31
+ dirty_string = " abc 123 "
32
+ clean_string = "abc 123"
33
+ assert_equal clean_string, MyTestClass.strip_non_essential_spaces(dirty_string)
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,107 @@
1
+ require_relative '../../test_helper'
2
+
3
+ describe Fides::Sqlite3 do
4
+
5
+ let(:subject) { Fides::Sqlite3 }
6
+
7
+ it 'responds to #executable_add_statements' do
8
+ assert_respond_to subject, :executable_add_statements
9
+ end
10
+
11
+ it 'responds to #executable_remove_statements' do
12
+ assert_respond_to subject, :executable_remove_statements
13
+ end
14
+
15
+ it 'returns expected create constrains statements' do
16
+ statements = subject.executable_add_statements("imageable", ["Product", "Employee"], "Picture")
17
+ statements.each_with_index do |statement, index|
18
+ assert_equal subject.strip_non_essential_spaces( send("add_sql#{index + 1}") ), statement
19
+ end
20
+ end
21
+
22
+ it 'returns expected drop constrains statements' do
23
+ sql1 = subject.executable_remove_statements("imageable")[0]
24
+ sql2 = subject.executable_remove_statements("imageable")[1]
25
+ assert_equal subject.strip_non_essential_spaces(drop_sql1), sql1
26
+ assert_equal subject.strip_non_essential_spaces(drop_sql2), sql2
27
+ end
28
+
29
+ let(:add_sql1) do %{
30
+ DROP TRIGGER IF EXISTS check_imageable_create_integrity;
31
+ }
32
+ end
33
+
34
+ let(:add_sql2) do %{
35
+ CREATE TRIGGER check_imageable_create_integrity
36
+ BEFORE INSERT ON pictures
37
+ BEGIN
38
+ SELECT CASE
39
+ WHEN ((NEW.imageable_type = 'Product') AND (SELECT id FROM products WHERE id = NEW.imageable_id) ISNULL) THEN RAISE(ABORT, 'There is no Product with that id.')
40
+ WHEN ((NEW.imageable_type = 'Employee') AND (SELECT id FROM employees WHERE id = NEW.imageable_id) ISNULL) THEN RAISE(ABORT, 'There is no Employee with that id.')
41
+ END;
42
+ END;
43
+ }
44
+ end
45
+
46
+ let(:add_sql3) do %{
47
+ DROP TRIGGER IF EXISTS check_products_delete_integrity;
48
+ }
49
+ end
50
+
51
+ let(:add_sql4) do %{
52
+ CREATE TRIGGER check_products_delete_integrity
53
+ BEFORE DELETE ON products
54
+ BEGIN
55
+ SELECT CASE
56
+ WHEN ((SELECT id FROM pictures WHERE imageable_type = 'Product' AND imageable_id = OLD.id) NOTNULL) THEN
57
+ RAISE(ABORT, 'There are records in the pictures table that refer to the products record that is attempting to be deleted. Delete the dependent records in the pictures table first.')
58
+ END;
59
+ END;
60
+ }
61
+ end
62
+
63
+ let(:add_sql5) do %{
64
+ DROP TRIGGER IF EXISTS check_employees_delete_integrity;
65
+ }
66
+ end
67
+
68
+ let(:add_sql6) do %{
69
+ CREATE TRIGGER check_employees_delete_integrity
70
+ BEFORE DELETE ON employees
71
+ BEGIN
72
+ SELECT CASE
73
+ WHEN ((SELECT id FROM pictures WHERE imageable_type = 'Employee' AND imageable_id = OLD.id) NOTNULL) THEN
74
+ RAISE(ABORT, 'There are records in the pictures table that refer to the employees record that is attempting to be deleted. Delete the dependent records in the pictures table first.')
75
+ END;
76
+ END;
77
+ }
78
+ end
79
+
80
+ let(:add_sql7) do %{
81
+ DROP TRIGGER IF EXISTS check_imageable_update_integrity;
82
+ }
83
+ end
84
+
85
+ let(:add_sql8) do %{
86
+ CREATE TRIGGER check_imageable_update_integrity
87
+ BEFORE UPDATE ON pictures
88
+ BEGIN
89
+ SELECT CASE
90
+ WHEN ((NEW.imageable_type = 'Product') AND (SELECT id FROM products WHERE id = NEW.imageable_id) ISNULL) THEN RAISE(ABORT, 'There is no Product with that id.')
91
+ WHEN ((NEW.imageable_type = 'Employee') AND (SELECT id FROM employees WHERE id = NEW.imageable_id) ISNULL) THEN RAISE(ABORT, 'There is no Employee with that id.')
92
+ END;
93
+ END;
94
+ }
95
+ end
96
+
97
+ let(:drop_sql1) do %{
98
+ DROP TRIGGER IF EXISTS check_imageable_create_integrity;
99
+ }
100
+ end
101
+
102
+ let(:drop_sql2) do %{
103
+ DROP TRIGGER IF EXISTS check_imageable_delete_integrity;
104
+ }
105
+ end
106
+
107
+ end
File without changes
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fides
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Kraft
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-03-29 00:00:00.000000000 Z
11
+ date: 2013-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -128,10 +128,13 @@ files:
128
128
  - lib/fides/sql_writer.rb
129
129
  - lib/fides/sqlite3.rb
130
130
  - lib/fides/version.rb
131
- - test/lib/fides/database_adapter_test.rb
132
131
  - test/lib/fides/postgresql_test.rb
132
+ - test/lib/fides/sql_writer_test.rb
133
+ - test/lib/fides/sqlite3_test.rb
133
134
  - test/lib/fides/version_test.rb
134
135
  - test/lib/fides_test.rb
136
+ - test/lib/integration/postgresql_db_test.rb
137
+ - test/lib/integration/sqlite3_db_test.rb
135
138
  - test/test_helper.rb
136
139
  homepage: https://github.com/mkraft/fides
137
140
  licenses:
@@ -159,8 +162,11 @@ specification_version: 4
159
162
  summary: Creates SQL triggers from Rails migrations to enforce the integrity of polymorphic
160
163
  associations at the database level.
161
164
  test_files:
162
- - test/lib/fides/database_adapter_test.rb
163
165
  - test/lib/fides/postgresql_test.rb
166
+ - test/lib/fides/sql_writer_test.rb
167
+ - test/lib/fides/sqlite3_test.rb
164
168
  - test/lib/fides/version_test.rb
165
169
  - test/lib/fides_test.rb
170
+ - test/lib/integration/postgresql_db_test.rb
171
+ - test/lib/integration/sqlite3_db_test.rb
166
172
  - test/test_helper.rb
@@ -1,4 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- describe Fides::SqlWriter do
4
- end