dbagile 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.
- data/LICENCE.textile +12 -0
- data/README.textile +89 -0
- data/bin/dba +22 -0
- data/lib/dbagile/adapter/sequel/class_methods.rb +18 -0
- data/lib/dbagile/adapter/sequel/connection.rb +38 -0
- data/lib/dbagile/adapter/sequel/data/table_driven.rb +30 -0
- data/lib/dbagile/adapter/sequel/data/transaction_driven.rb +43 -0
- data/lib/dbagile/adapter/sequel/schema/concrete_script.rb +135 -0
- data/lib/dbagile/adapter/sequel/schema/physical_dump.rb +106 -0
- data/lib/dbagile/adapter/sequel/schema/schema2sequel_args.rb +71 -0
- data/lib/dbagile/adapter/sequel/schema/table_driven.rb +52 -0
- data/lib/dbagile/adapter/sequel/schema/transaction_driven.rb +46 -0
- data/lib/dbagile/adapter/sequel/sequel_tracer.rb +144 -0
- data/lib/dbagile/adapter/sequel.rb +46 -0
- data/lib/dbagile/adapter.rb +15 -0
- data/lib/dbagile/command/api.rb +49 -0
- data/lib/dbagile/command/bulk/commons.rb +130 -0
- data/lib/dbagile/command/bulk/export.rb +99 -0
- data/lib/dbagile/command/bulk/import.rb +147 -0
- data/lib/dbagile/command/bulk.rb +3 -0
- data/lib/dbagile/command/class_methods.rb +103 -0
- data/lib/dbagile/command/db/add.rb +94 -0
- data/lib/dbagile/command/db/list.rb +40 -0
- data/lib/dbagile/command/db/ping.rb +49 -0
- data/lib/dbagile/command/db/rm.rb +52 -0
- data/lib/dbagile/command/db/stage.rb +81 -0
- data/lib/dbagile/command/db/use.rb +48 -0
- data/lib/dbagile/command/db.rb +6 -0
- data/lib/dbagile/command/dba.rb +121 -0
- data/lib/dbagile/command/help.rb +50 -0
- data/lib/dbagile/command/repo/create.rb +54 -0
- data/lib/dbagile/command/repo.rb +1 -0
- data/lib/dbagile/command/robust.rb +86 -0
- data/lib/dbagile/command/schema/check.rb +59 -0
- data/lib/dbagile/command/schema/commons.rb +118 -0
- data/lib/dbagile/command/schema/diff.rb +101 -0
- data/lib/dbagile/command/schema/dump.rb +48 -0
- data/lib/dbagile/command/schema/merge.rb +55 -0
- data/lib/dbagile/command/schema/sql_script.rb +124 -0
- data/lib/dbagile/command/schema.rb +6 -0
- data/lib/dbagile/command/sql/drop.rb +40 -0
- data/lib/dbagile/command/sql/heading.rb +34 -0
- data/lib/dbagile/command/sql/send.rb +67 -0
- data/lib/dbagile/command/sql/show.rb +42 -0
- data/lib/dbagile/command/sql.rb +4 -0
- data/lib/dbagile/command/web/tools.rb +23 -0
- data/lib/dbagile/command/web.rb +1 -0
- data/lib/dbagile/command.rb +158 -0
- data/lib/dbagile/contract/connection.rb +66 -0
- data/lib/dbagile/contract/data/dataset.rb +69 -0
- data/lib/dbagile/contract/data/table_driven.rb +49 -0
- data/lib/dbagile/contract/data/transaction_driven.rb +74 -0
- data/lib/dbagile/contract/data.rb +3 -0
- data/lib/dbagile/contract/robust/helpers.rb +19 -0
- data/lib/dbagile/contract/robust/optimistic/data/table_driven.rb +31 -0
- data/lib/dbagile/contract/robust/optimistic/data/transaction_driven.rb +45 -0
- data/lib/dbagile/contract/robust/optimistic/schema/table_driven.rb +53 -0
- data/lib/dbagile/contract/robust/optimistic/schema/transaction_driven.rb +45 -0
- data/lib/dbagile/contract/robust/optimistic.rb +18 -0
- data/lib/dbagile/contract/robust.rb +20 -0
- data/lib/dbagile/contract/schema/table_driven.rb +89 -0
- data/lib/dbagile/contract/schema/transaction_driven.rb +68 -0
- data/lib/dbagile/contract/schema.rb +2 -0
- data/lib/dbagile/contract/utils/delegate.rb +17 -0
- data/lib/dbagile/contract/utils/full.rb +13 -0
- data/lib/dbagile/contract/utils.rb +2 -0
- data/lib/dbagile/contract.rb +5 -0
- data/lib/dbagile/core/chain.rb +92 -0
- data/lib/dbagile/core/connection.rb +51 -0
- data/lib/dbagile/core/database.rb +221 -0
- data/lib/dbagile/core/io/dsl.rb +95 -0
- data/lib/dbagile/core/io/robustness.rb +82 -0
- data/lib/dbagile/core/io.rb +2 -0
- data/lib/dbagile/core/repository/builder.rb +67 -0
- data/lib/dbagile/core/repository/yaml_methods.rb +82 -0
- data/lib/dbagile/core/repository.rb +211 -0
- data/lib/dbagile/core/schema/builder/coercion.rb +210 -0
- data/lib/dbagile/core/schema/builder/concept_factory.rb +61 -0
- data/lib/dbagile/core/schema/builder.rb +187 -0
- data/lib/dbagile/core/schema/composite.rb +239 -0
- data/lib/dbagile/core/schema/computations/filter.rb +40 -0
- data/lib/dbagile/core/schema/computations/merge.rb +55 -0
- data/lib/dbagile/core/schema/computations/minus.rb +44 -0
- data/lib/dbagile/core/schema/computations/split.rb +37 -0
- data/lib/dbagile/core/schema/computations.rb +4 -0
- data/lib/dbagile/core/schema/database_schema.rb +129 -0
- data/lib/dbagile/core/schema/errors.rb +173 -0
- data/lib/dbagile/core/schema/logical/attribute.rb +68 -0
- data/lib/dbagile/core/schema/logical/constraint/candidate_key.rb +70 -0
- data/lib/dbagile/core/schema/logical/constraint/foreign_key.rb +121 -0
- data/lib/dbagile/core/schema/logical/constraint.rb +58 -0
- data/lib/dbagile/core/schema/logical/constraints.rb +28 -0
- data/lib/dbagile/core/schema/logical/heading.rb +47 -0
- data/lib/dbagile/core/schema/logical/relvar.rb +81 -0
- data/lib/dbagile/core/schema/logical.rb +24 -0
- data/lib/dbagile/core/schema/migrate/abstract_script.rb +35 -0
- data/lib/dbagile/core/schema/migrate/collapse_table.rb +15 -0
- data/lib/dbagile/core/schema/migrate/create_table.rb +15 -0
- data/lib/dbagile/core/schema/migrate/drop_table.rb +15 -0
- data/lib/dbagile/core/schema/migrate/expand_table.rb +15 -0
- data/lib/dbagile/core/schema/migrate/operation.rb +141 -0
- data/lib/dbagile/core/schema/migrate/stager.rb +282 -0
- data/lib/dbagile/core/schema/migrate.rb +2 -0
- data/lib/dbagile/core/schema/part.rb +114 -0
- data/lib/dbagile/core/schema/physical/index.rb +64 -0
- data/lib/dbagile/core/schema/physical/indexes.rb +12 -0
- data/lib/dbagile/core/schema/physical.rb +26 -0
- data/lib/dbagile/core/schema/robustness.rb +39 -0
- data/lib/dbagile/core/schema/schema_object.rb +94 -0
- data/lib/dbagile/core/schema.rb +254 -0
- data/lib/dbagile/core/transaction.rb +74 -0
- data/lib/dbagile/core.rb +7 -0
- data/lib/dbagile/environment/buffering.rb +45 -0
- data/lib/dbagile/environment/delegator.rb +59 -0
- data/lib/dbagile/environment/interactions.rb +208 -0
- data/lib/dbagile/environment/on_error.rb +47 -0
- data/lib/dbagile/environment/repository.rb +161 -0
- data/lib/dbagile/environment/robustness.rb +7 -0
- data/lib/dbagile/environment/testing.rb +23 -0
- data/lib/dbagile/environment.rb +122 -0
- data/lib/dbagile/errors.rb +30 -0
- data/lib/dbagile/io/csv.rb +99 -0
- data/lib/dbagile/io/json.rb +41 -0
- data/lib/dbagile/io/pretty_table.rb +128 -0
- data/lib/dbagile/io/ruby.rb +62 -0
- data/lib/dbagile/io/text.rb +18 -0
- data/lib/dbagile/io/type_safe.rb +65 -0
- data/lib/dbagile/io/xml.rb +35 -0
- data/lib/dbagile/io/yaml.rb +30 -0
- data/lib/dbagile/io.rb +94 -0
- data/lib/dbagile/loader.rb +16 -0
- data/lib/dbagile/plugin.rb +29 -0
- data/lib/dbagile/restful/client/delete.rb +22 -0
- data/lib/dbagile/restful/client/get.rb +24 -0
- data/lib/dbagile/restful/client/post.rb +22 -0
- data/lib/dbagile/restful/client/utils.rb +16 -0
- data/lib/dbagile/restful/client.rb +41 -0
- data/lib/dbagile/restful/middleware/delete.rb +22 -0
- data/lib/dbagile/restful/middleware/get.rb +27 -0
- data/lib/dbagile/restful/middleware/one_database.rb +82 -0
- data/lib/dbagile/restful/middleware/post.rb +23 -0
- data/lib/dbagile/restful/middleware/utils.rb +65 -0
- data/lib/dbagile/restful/middleware.rb +54 -0
- data/lib/dbagile/restful/server.rb +65 -0
- data/lib/dbagile/restful.rb +9 -0
- data/lib/dbagile/robustness/dependencies.rb +36 -0
- data/lib/dbagile/robustness/file_system.rb +53 -0
- data/lib/dbagile/robustness.rb +14 -0
- data/lib/dbagile/tools/file_system.rb +24 -0
- data/lib/dbagile/tools/math.rb +11 -0
- data/lib/dbagile/tools/ordered_hash.rb +39 -0
- data/lib/dbagile/tools/ruby.rb +78 -0
- data/lib/dbagile/tools/string.rb +6 -0
- data/lib/dbagile/tools/tuple.rb +49 -0
- data/lib/dbagile/tools.rb +6 -0
- data/lib/dbagile.rb +66 -0
- data/test/assumptions/equality.spec +11 -0
- data/test/assumptions/fixtures.rb +39 -0
- data/test/assumptions/inheritance.spec +17 -0
- data/test/assumptions/sequel/autonumber.spec +19 -0
- data/test/assumptions/sequel/connect.spec +29 -0
- data/test/assumptions/sequel/test.db +0 -0
- data/test/assumptions/stdlib/pathname.spec +13 -0
- data/test/assumptions/yaml/fixtures.rb +25 -0
- data/test/assumptions/yaml/to_yaml.spec +10 -0
- data/test/assumptions.spec +2 -0
- data/test/commands/bulk/export.spec +100 -0
- data/test/commands/bulk/import.spec +49 -0
- data/test/commands/db/add.spec +31 -0
- data/test/commands/db/list.spec +29 -0
- data/test/commands/db/ping.spec +21 -0
- data/test/commands/db/rm.spec +18 -0
- data/test/commands/db/use.spec +18 -0
- data/test/commands/dba.spec +54 -0
- data/test/commands/repo/create.spec +30 -0
- data/test/commands/schema/check.spec +25 -0
- data/test/commands/schema/diff.spec +30 -0
- data/test/commands/schema/dump.spec +23 -0
- data/test/commands/schema/fixtures/add_constraint.yaml +30 -0
- data/test/commands/schema/fixtures/announced.yaml +28 -0
- data/test/commands/schema/fixtures/effective.yaml +20 -0
- data/test/commands/schema/fixtures/invalid.yaml +6 -0
- data/test/commands/schema/sql_script.spec +56 -0
- data/test/commands/sql/drop.spec +25 -0
- data/test/commands/sql/heading.spec +7 -0
- data/test/commands/sql/scripts/delete.sql +1 -0
- data/test/commands/sql/scripts/insert.sql +2 -0
- data/test/commands/sql/send.spec +29 -0
- data/test/commands/sql/show.spec +17 -0
- data/test/commands.spec +138 -0
- data/test/contract/connection/transaction.ex +11 -0
- data/test/contract/connection.spec +9 -0
- data/test/contract/data/dataset/columns.ex +5 -0
- data/test/contract/data/dataset/count.ex +5 -0
- data/test/contract/data/dataset.spec +9 -0
- data/test/contract/data/table_driven/dataset.ex +31 -0
- data/test/contract/data/table_driven/exists_q.ex +27 -0
- data/test/contract/data/table_driven.spec +9 -0
- data/test/contract/data/transaction_driven/delete.ex +29 -0
- data/test/contract/data/transaction_driven/direct_sql.ex +19 -0
- data/test/contract/data/transaction_driven/insert.ex +8 -0
- data/test/contract/data/transaction_driven/update.ex +19 -0
- data/test/contract/data/transaction_driven.spec +18 -0
- data/test/contract/robust/data/table_driven.spec +15 -0
- data/test/contract/robust/data/transaction_driven.spec +21 -0
- data/test/contract/robust/schema/table_driven.spec +21 -0
- data/test/contract/robust/schema/transaction_driven.spec +19 -0
- data/test/contract/schema/table_driven/column_names.ex +5 -0
- data/test/contract/schema/table_driven/has_column_q.ex +13 -0
- data/test/contract/schema/table_driven/has_table_q.ex +11 -0
- data/test/contract/schema/table_driven/heading.ex +5 -0
- data/test/contract/schema/table_driven.spec +9 -0
- data/test/contract/schema/transaction_driven/create_table.ex +10 -0
- data/test/contract/schema/transaction_driven/drop_table.ex +10 -0
- data/test/contract/schema/transaction_driven.spec +18 -0
- data/test/contract.spec +66 -0
- data/test/fixtures/basics/data/basic_values.rb +13 -0
- data/test/fixtures/basics/data/empty_table.rb +3 -0
- data/test/fixtures/basics/data/non_empty_table.rb +4 -0
- data/test/fixtures/basics/data/parts.rb +8 -0
- data/test/fixtures/basics/data/suppliers.rb +7 -0
- data/test/fixtures/basics/data/supplies.rb +14 -0
- data/test/fixtures/basics/dbagile.idx +20 -0
- data/test/fixtures/basics/fixtures.yaml +28 -0
- data/test/fixtures/basics/robust.db +0 -0
- data/test/fixtures/basics/suppliers.yaml +30 -0
- data/test/fixtures/basics/test.db +0 -0
- data/test/fixtures/empty/dbagile.idx +5 -0
- data/test/fixtures.rb +152 -0
- data/test/restful/delete/no_format.ex +32 -0
- data/test/restful/delete.spec +8 -0
- data/test/restful/get/csv_format.ex +12 -0
- data/test/restful/get/json_format.ex +19 -0
- data/test/restful/get/query_string.ex +11 -0
- data/test/restful/get/text_format.ex +12 -0
- data/test/restful/get/yaml_format.ex +14 -0
- data/test/restful/get.spec +5 -0
- data/test/restful/post/no_format.ex +22 -0
- data/test/restful/post.spec +8 -0
- data/test/restful.spec +32 -0
- data/test/run_all_suite.rb +51 -0
- data/test/spec_helper.rb +26 -0
- data/test/support/be_a_valid_json_string.rb +19 -0
- data/test/support/be_a_valid_yaml_string.rb +18 -0
- data/test/unit/adapter/factor.spec +13 -0
- data/test/unit/adapter/sequel/new.spec +19 -0
- data/test/unit/command/api.spec +12 -0
- data/test/unit/command/command_for.spec +36 -0
- data/test/unit/command/command_name_of.spec +21 -0
- data/test/unit/command/ruby_method_for.spec +21 -0
- data/test/unit/command/sanity.spec +34 -0
- data/test/unit/contract/utils/delegate/delegate.spec +23 -0
- data/test/unit/core/chain/chain.spec +57 -0
- data/test/unit/core/chain/connect.spec +22 -0
- data/test/unit/core/chain/delegate_chain.spec +16 -0
- data/test/unit/core/chain/initialize.spec +19 -0
- data/test/unit/core/chain/plug.spec +31 -0
- data/test/unit/core/io/dsl/scope.spec +9 -0
- data/test/unit/core/repository/create_bang.spec +31 -0
- data/test/unit/core/repository/current.spec +31 -0
- data/test/unit/core/repository/database.spec +47 -0
- data/test/unit/core/repository/fixtures/corrupted/dbagile.idx +1 -0
- data/test/unit/core/repository/fixtures/test_and_prod/dbagile.idx +21 -0
- data/test/unit/core/repository/fixtures.rb +25 -0
- data/test/unit/core/repository/has_database_q.spec +16 -0
- data/test/unit/core/repository/load.spec +51 -0
- data/test/unit/core/repository/to_yaml.spec +17 -0
- data/test/unit/core/schema/check.spec +32 -0
- data/test/unit/core/schema/empty_q.spec +18 -0
- data/test/unit/core/schema/filter.spec +42 -0
- data/test/unit/core/schema/fixtures/dbagile.yaml +7 -0
- data/test/unit/core/schema/fixtures/empty.yaml +11 -0
- data/test/unit/core/schema/fixtures/invalid.yaml +54 -0
- data/test/unit/core/schema/fixtures/left.yaml +46 -0
- data/test/unit/core/schema/fixtures/left_minus_right.yaml +31 -0
- data/test/unit/core/schema/fixtures/right.yaml +46 -0
- data/test/unit/core/schema/fixtures/right_minus_left.yaml +31 -0
- data/test/unit/core/schema/fixtures/suppliers_and_parts.yaml +30 -0
- data/test/unit/core/schema/fixtures.rb +32 -0
- data/test/unit/core/schema/merge.spec +72 -0
- data/test/unit/core/schema/minus.spec +26 -0
- data/test/unit/core/schema/sanity.spec +39 -0
- data/test/unit/core/schema/split.spec +58 -0
- data/test/unit/core/schema/stage_script.spec +26 -0
- data/test/unit/core/schema/to_yaml.spec +13 -0
- data/test/unit/core/schema/yaml_display.spec +14 -0
- data/test/unit/core/schema/yaml_load.spec +20 -0
- data/test/unit/core/transaction/transaction.spec +10 -0
- data/test/unit/fixtures.rb +67 -0
- data/test/unit/io/to_xxx.spec +52 -0
- data/test/unit/plugin/options.spec +21 -0
- data/test/unit/plugin/tuple_heading.spec +11 -0
- data/test/unit/plugin/with_options.spec +12 -0
- data/test/unit/tools/ruby/class_unqualified_name.spec +26 -0
- data/test/unit/tools/ruby/extract_file_rdoc.spec +10 -0
- data/test/unit/tools/ruby/fixtures/rdoc.txt +12 -0
- data/test/unit/tools/ruby/fixtures.rb +19 -0
- data/test/unit/tools/ruby/optional_args_block_call.spec +35 -0
- data/test/unit/tools/ruby/parent_module.spec +21 -0
- data/test/unit/tools/ruby/rdoc_file_paragraphs.spec +13 -0
- data/test/unit/tools/tuple/tuple_heading.spec +11 -0
- data/test/unit/tools/tuple/tuple_key.spec +27 -0
- data/test/unit/tools/tuple/tuple_project.spec +23 -0
- data/test/unit.spec +3 -0
- metadata +422 -0
data/test/restful.spec
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require File.expand_path('../spec_helper', __FILE__)
|
|
2
|
+
require 'dbagile/restful/server'
|
|
3
|
+
require 'dbagile/restful/client'
|
|
4
|
+
dbagile_load_all_subspecs(__FILE__)
|
|
5
|
+
|
|
6
|
+
describe "DbAgile::Restful feature" do
|
|
7
|
+
|
|
8
|
+
let(:environment){ DbAgile::Fixtures::environment }
|
|
9
|
+
let(:database_name){ :sqlite }
|
|
10
|
+
let(:database) { environment.repository.database(database_name) }
|
|
11
|
+
let(:server) { DbAgile::Restful::Server.new(environment) }
|
|
12
|
+
let(:client) { DbAgile::Restful::Client.new(server.uri) }
|
|
13
|
+
before(:all) { server.start }
|
|
14
|
+
after(:all) { server.stop }
|
|
15
|
+
|
|
16
|
+
def basic_values_uri(extension = "")
|
|
17
|
+
"#{database_name}/basic_values#{extension}"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe "the GET interface" do
|
|
21
|
+
it_should_behave_like "The Restful GET interface"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
describe "the POST interface" do
|
|
25
|
+
it_should_behave_like "The Restful POST interface"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe "the DELETE interface" do
|
|
29
|
+
it_should_behave_like "The Restful DELETE interface"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
$silent = (ARGV[0] == "--silent")
|
|
2
|
+
begin
|
|
3
|
+
require 'rubygems'
|
|
4
|
+
require 'highline'
|
|
5
|
+
$highline = HighLine.new
|
|
6
|
+
rescue LoadError
|
|
7
|
+
puts "Better test suite summary with highline. Try 'gem install highline'"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# Say something
|
|
11
|
+
def color(message, color)
|
|
12
|
+
if $highline
|
|
13
|
+
$highline.color(message, color)
|
|
14
|
+
else
|
|
15
|
+
message
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Test suite in order
|
|
20
|
+
tests = [ :assumptions, :unit, :contract, :commands, :restful ]
|
|
21
|
+
|
|
22
|
+
# Will contain interesting lines
|
|
23
|
+
summary = []
|
|
24
|
+
|
|
25
|
+
# Let's go
|
|
26
|
+
tests.each do |kind|
|
|
27
|
+
file = File.expand_path("../#{kind}.spec", __FILE__)
|
|
28
|
+
|
|
29
|
+
puts "Running #{kind} (#{kind}.spec)"
|
|
30
|
+
summary << "\nSummary for #{kind}_test (#{kind}.spec)\n"
|
|
31
|
+
|
|
32
|
+
# Executes it in a subprocess
|
|
33
|
+
IO.popen("ruby #{file} 2>&1"){|io|
|
|
34
|
+
while l = io.gets
|
|
35
|
+
puts l unless $silent
|
|
36
|
+
unless l =~ /^\s*\.*\s*$|\(in /
|
|
37
|
+
if l =~ /0 failures/
|
|
38
|
+
summary << " " << color(l, :green)
|
|
39
|
+
elsif l =~ /failures/
|
|
40
|
+
summary << " " << color(l, :red)
|
|
41
|
+
elsif l =~ /Finished/
|
|
42
|
+
summary << " " << color(l, :blue)
|
|
43
|
+
else
|
|
44
|
+
summary << " " << l
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
}
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
puts summary.join("")
|
data/test/spec_helper.rb
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
$LOAD_PATH.unshift(File.expand_path('../', __FILE__))
|
|
2
|
+
$LOAD_PATH.unshift(File.expand_path('../../lib', __FILE__))
|
|
3
|
+
|
|
4
|
+
require 'dbagile'
|
|
5
|
+
require 'rubygems'
|
|
6
|
+
require 'fixtures'
|
|
7
|
+
require 'spec'
|
|
8
|
+
require 'spec/autorun'
|
|
9
|
+
require 'fileutils'
|
|
10
|
+
|
|
11
|
+
def dbagile_load_all_subfiles(requester_file, match)
|
|
12
|
+
Dir[File.expand_path("../#{match}", requester_file)].each{|f| load(f)}
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def dbagile_load_all_subspecs(requester_file, name = File.basename(requester_file, ".spec"))
|
|
16
|
+
dbagile_load_all_subfiles(requester_file, "#{name}/**/*.spec")
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def dbagile_install_examples(requester_file, requester)
|
|
20
|
+
match = "../#{File.basename(requester_file, '.spec')}/**/*.ex"
|
|
21
|
+
Dir[File.expand_path(match, requester_file)].each do |file|
|
|
22
|
+
requester.instance_eval File.read(file)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
dbagile_load_all_subfiles(__FILE__, "support/*.rb")
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Spec::Matchers.define :be_a_valid_json_string do
|
|
2
|
+
match do |actual|
|
|
3
|
+
begin
|
|
4
|
+
JSON::parse(actual)
|
|
5
|
+
true
|
|
6
|
+
rescue JSON::JSONError
|
|
7
|
+
false
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
failure_message_for_should do |actual|
|
|
11
|
+
"expected that #{actual.inspect} would be a valid JSON string"
|
|
12
|
+
end
|
|
13
|
+
failure_message_for_should_not do |actual|
|
|
14
|
+
"expected that #{actual.inspect} would not be a valid JSON string"
|
|
15
|
+
end
|
|
16
|
+
description do
|
|
17
|
+
"a valid JSON string"
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
Spec::Matchers.define :be_a_valid_yaml_string do
|
|
2
|
+
match do |actual|
|
|
3
|
+
begin
|
|
4
|
+
!YAML::load(actual).nil?
|
|
5
|
+
rescue StandardError
|
|
6
|
+
false
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
failure_message_for_should do |actual|
|
|
10
|
+
"expected that #{actual.inspect} would be a valid YAML string"
|
|
11
|
+
end
|
|
12
|
+
failure_message_for_should_not do |actual|
|
|
13
|
+
"expected that #{actual.inspect} would not be a valid YAML string"
|
|
14
|
+
end
|
|
15
|
+
description do
|
|
16
|
+
"a valid YAML string"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require File.expand_path('../../fixtures', __FILE__)
|
|
2
|
+
describe "::DbAgile::Adapter.factor" do
|
|
3
|
+
|
|
4
|
+
let(:options){ Hash.new }
|
|
5
|
+
subject{ ::DbAgile::Adapter.factor(uri, options) }
|
|
6
|
+
|
|
7
|
+
describe "when called with sqlite scheme" do
|
|
8
|
+
let(:uri){ "sqlite://test.db" }
|
|
9
|
+
it{ should be_kind_of(::DbAgile::SequelAdapter) }
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require File.expand_path('../../../fixtures', __FILE__)
|
|
2
|
+
describe "::DbAgile::SequelAdapter.new" do
|
|
3
|
+
|
|
4
|
+
context "when called without options at all" do
|
|
5
|
+
subject{ DbAgile::SequelAdapter.new("sqlite://test.db") }
|
|
6
|
+
it{ should be_kind_of(DbAgile::SequelAdapter) }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
context "when called without options but no tracing" do
|
|
10
|
+
subject{ DbAgile::SequelAdapter.new("sqlite://test.db", :trace_sql => false) }
|
|
11
|
+
it{ should be_kind_of(DbAgile::SequelAdapter) }
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
context "when called without options but no tracing" do
|
|
15
|
+
subject{ DbAgile::SequelAdapter.new("sqlite://test.db", :trace_sql => true) }
|
|
16
|
+
it{ should be_kind_of(DbAgile::SequelAdapter::SequelTracer) }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
describe "::DbAgile::Command::API" do
|
|
2
|
+
|
|
3
|
+
let(:api){ ::DbAgile::Command::API.new(DbAgile::default_environment) }
|
|
4
|
+
|
|
5
|
+
it "should have instance methods for each command" do
|
|
6
|
+
::DbAgile::Command::each_subclass do |subclass|
|
|
7
|
+
command_name = DbAgile::Command::ruby_method_for(subclass)
|
|
8
|
+
api.should respond_to(command_name)
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require File.expand_path('../../fixtures', __FILE__)
|
|
2
|
+
describe "::DbAgile::Command::command_for /" do
|
|
3
|
+
|
|
4
|
+
subject{ ::DbAgile::Command::command_for(arg, nil) }
|
|
5
|
+
|
|
6
|
+
describe "when called with a class" do
|
|
7
|
+
let(:arg){ ::DbAgile::Command::Db::List }
|
|
8
|
+
it{ should be_kind_of(::DbAgile::Command::Db::List) }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe "when called with a string on a root command" do
|
|
12
|
+
let(:arg){ "help" }
|
|
13
|
+
it{ should be_kind_of(::DbAgile::Command::Help) }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe "when called with a string on a non root command" do
|
|
17
|
+
let(:arg){ "sql:heading" }
|
|
18
|
+
it{ should be_kind_of(::DbAgile::Command::SQL::Heading) }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe "when called with a symbol on a root command" do
|
|
22
|
+
let(:arg){ :help }
|
|
23
|
+
it{ should be_kind_of(::DbAgile::Command::Help) }
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe "when called with a symbol on a non root command" do
|
|
27
|
+
let(:arg){ :sql_heading }
|
|
28
|
+
it{ should be_kind_of(::DbAgile::Command::SQL::Heading) }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
describe "when called with a symbol on a non root command" do
|
|
32
|
+
let(:arg){ :schema_sql_script }
|
|
33
|
+
it{ should be_kind_of(::DbAgile::Command::Schema::SqlScript) }
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require File.expand_path('../../fixtures', __FILE__)
|
|
2
|
+
describe "::DbAgile::Command::command_name_of /" do
|
|
3
|
+
|
|
4
|
+
subject{ ::DbAgile::Command::command_name_of(command) }
|
|
5
|
+
|
|
6
|
+
describe "when called on a root command" do
|
|
7
|
+
let(:command){ DbAgile::Command::Help }
|
|
8
|
+
it{ should == "help" }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe "when called on a non root command" do
|
|
12
|
+
let(:command){ DbAgile::Command::SQL::Heading }
|
|
13
|
+
it{ should == "sql:heading" }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe "when called on a complex name command" do
|
|
17
|
+
let(:command){ DbAgile::Command::Schema::SqlScript }
|
|
18
|
+
it{ should == "schema:sql-script" }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require File.expand_path('../../fixtures', __FILE__)
|
|
2
|
+
describe "::DbAgile::Command::ruby_method_for /" do
|
|
3
|
+
|
|
4
|
+
subject{ ::DbAgile::Command::ruby_method_for(command) }
|
|
5
|
+
|
|
6
|
+
describe "when called on a root command" do
|
|
7
|
+
let(:command){ DbAgile::Command::Help }
|
|
8
|
+
it{ should == :help }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe "when called on a non root command" do
|
|
12
|
+
let(:command){ DbAgile::Command::SQL::Heading }
|
|
13
|
+
it{ should == :sql_heading }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe "when called on a complex name command" do
|
|
17
|
+
let(:command){ DbAgile::Command::Schema::SqlScript }
|
|
18
|
+
it{ should == :schema_sql_script }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require File.expand_path('../../fixtures', __FILE__)
|
|
2
|
+
describe "command sanity /" do
|
|
3
|
+
|
|
4
|
+
DbAgile::Command::each_subclass{|cmd|
|
|
5
|
+
describe "#{cmd.command_name}" do
|
|
6
|
+
|
|
7
|
+
it "should have a summary" do
|
|
8
|
+
cmd.summary.should_not be_nil
|
|
9
|
+
cmd.summary.strip.should_not be_empty
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should have a category" do
|
|
13
|
+
cmd.category.should_not be_nil
|
|
14
|
+
cmd.category.should be_kind_of(Symbol)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
unless cmd.command_name == "dba"
|
|
18
|
+
|
|
19
|
+
it "should have a usage" do
|
|
20
|
+
cmd.usage.should =~ /^Usage: dba #{cmd.command_name}/
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
else
|
|
24
|
+
|
|
25
|
+
it "should have the description" do
|
|
26
|
+
cmd.description.should =~ /blambeau.github.com/
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
describe "::DbAgile::Contract::Utils::Delegate" do
|
|
2
|
+
|
|
3
|
+
describe "methods should correctly be installed" do
|
|
4
|
+
subject{ Object.new.extend(::DbAgile::Contract::Utils::Delegate) }
|
|
5
|
+
it{ should respond_to(:dataset) }
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
describe "method should pass parameters correctly" do
|
|
9
|
+
subject{
|
|
10
|
+
subject = Object.new.extend(::DbAgile::Contract::Utils::Delegate)
|
|
11
|
+
def subject.delegate
|
|
12
|
+
o = Object.new
|
|
13
|
+
def o.dataset(name)
|
|
14
|
+
"Hello #{name}"
|
|
15
|
+
end
|
|
16
|
+
o
|
|
17
|
+
end
|
|
18
|
+
subject
|
|
19
|
+
}
|
|
20
|
+
specify { subject.dataset(:world).should == "Hello world" }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
require File.expand_path('../../../fixtures', __FILE__)
|
|
2
|
+
describe "DbAgile::Core::Chain" do
|
|
3
|
+
|
|
4
|
+
context "When created with only one instance member" do
|
|
5
|
+
let(:chain){ DbAgile::Core::Chain.new(DbAgile::Fixtures::SayHello.new) }
|
|
6
|
+
specify{ chain.say_hello("dbagile").should == "dbagile" }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
context "When created with only one class member" do
|
|
10
|
+
let(:chain){ DbAgile::Core::Chain.new(DbAgile::Fixtures::SayHello) }
|
|
11
|
+
specify{ chain.say_hello("dbagile").should == "dbagile" }
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
context "When created with only two members" do
|
|
15
|
+
let(:chain){ DbAgile::Core::Chain.new(DbAgile::Fixtures::Capitalize.new, DbAgile::Fixtures::SayHello.new) }
|
|
16
|
+
specify{ chain.say_hello("dbagile").should == "Dbagile" }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
context "When creaed with two members as classes" do
|
|
20
|
+
let(:chain){ DbAgile::Core::Chain.new(DbAgile::Fixtures::Capitalize, DbAgile::Fixtures::SayHello) }
|
|
21
|
+
specify{ chain.say_hello("dbagile").should == "Dbagile" }
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
context "When created with two members with options as classes" do
|
|
25
|
+
let(:chain){ DbAgile::Core::Chain.new(DbAgile::Fixtures::Capitalize, :upcase, DbAgile::Fixtures::SayHello) }
|
|
26
|
+
specify{ chain.say_hello("dbagile").should == "DBAGILE" }
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
context "When created with two members through shortcut" do
|
|
30
|
+
let(:chain){ DbAgile::Core::Chain[DbAgile::Fixtures::Capitalize, :upcase, DbAgile::Fixtures::SayHello] }
|
|
31
|
+
specify{ chain.say_hello("dbagile").should == "DBAGILE" }
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
context "When plugged with only one instance member" do
|
|
35
|
+
let(:chain){ DbAgile::Core::Chain.new }
|
|
36
|
+
specify{
|
|
37
|
+
chain.plug(DbAgile::Fixtures::SayHello.new)
|
|
38
|
+
chain.say_hello("dbagile").should == "dbagile"
|
|
39
|
+
}
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
context "When plugged different way" do
|
|
43
|
+
let(:chain){ DbAgile::Core::Chain.new(DbAgile::Fixtures::SayHello) }
|
|
44
|
+
specify{
|
|
45
|
+
chain.plug(DbAgile::Fixtures::Capitalize, :upcase)
|
|
46
|
+
chain.say_hello("dbagile").should == "DBAGILE"
|
|
47
|
+
}
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
context "When blocks are used" do
|
|
51
|
+
let(:chain){ DbAgile::Core::Chain.new(DbAgile::Fixtures::SayHello.new) }
|
|
52
|
+
specify{
|
|
53
|
+
chain.del_to_block{ "hello" }.should == "hello"
|
|
54
|
+
}
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require File.expand_path('../../../fixtures', __FILE__)
|
|
2
|
+
describe "DbAgile::Core::Chain#connect" do
|
|
3
|
+
|
|
4
|
+
subject{ chain.connect(DbAgile::Fixtures::SayHello) }
|
|
5
|
+
|
|
6
|
+
context("when reverse then capitalize") do
|
|
7
|
+
let(:chain){ DbAgile::Core::Chain[DbAgile::Fixtures::Reverse, DbAgile::Fixtures::Capitalize] }
|
|
8
|
+
specify{
|
|
9
|
+
subject.should be_kind_of(DbAgile::Core::Chain)
|
|
10
|
+
subject.say_hello("dbagile").should == "Eligabd"
|
|
11
|
+
}
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
context("when capitalize then reverse") do
|
|
15
|
+
let(:chain){ DbAgile::Core::Chain[DbAgile::Fixtures::Capitalize, DbAgile::Fixtures::Reverse] }
|
|
16
|
+
specify{
|
|
17
|
+
subject.should be_kind_of(DbAgile::Core::Chain)
|
|
18
|
+
subject.say_hello("dbagile").should == "eligabD"
|
|
19
|
+
}
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require File.expand_path('../../../fixtures', __FILE__)
|
|
2
|
+
describe "DbAgile::Core::Chain#delegate_chain" do
|
|
3
|
+
|
|
4
|
+
subject{ chain.delegate_chain }
|
|
5
|
+
|
|
6
|
+
context "when called on an emtpy chain" do
|
|
7
|
+
let(:chain){ DbAgile::Core::Chain.new }
|
|
8
|
+
it{ should == [] }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
context "when called on a non emtpy chain" do
|
|
12
|
+
let(:chain){ DbAgile::Core::Chain.new("hello") }
|
|
13
|
+
it{ should == ["hello"] }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require File.expand_path('../../../fixtures', __FILE__)
|
|
2
|
+
describe "DbAgile::Core::Chain#initialize" do
|
|
3
|
+
|
|
4
|
+
context "when called with no args" do
|
|
5
|
+
let(:chain){ DbAgile::Core::Chain.new }
|
|
6
|
+
specify{ chain.delegate_chain.should == [] }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
context "when called one argument" do
|
|
10
|
+
let(:chain){ DbAgile::Core::Chain.new("hello") }
|
|
11
|
+
specify{ chain.delegate_chain.should == ["hello"] }
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
context "when called many arguments" do
|
|
15
|
+
let(:chain){ DbAgile::Core::Chain.new("hello 1", "hello 2") }
|
|
16
|
+
specify{ chain.delegate_chain.should == ["hello 1", "hello 2"] }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require File.expand_path('../../../fixtures', __FILE__)
|
|
2
|
+
describe "DbAgile::Core::Chain#plug" do
|
|
3
|
+
|
|
4
|
+
context "when called on an empty chain" do
|
|
5
|
+
let(:chain){ DbAgile::Core::Chain.new }
|
|
6
|
+
subject{ chain.plug("hello") }
|
|
7
|
+
specify{
|
|
8
|
+
subject.should == chain
|
|
9
|
+
chain.delegate_chain.should == ["hello"]
|
|
10
|
+
}
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
context "when called on a non empty chain" do
|
|
14
|
+
let(:chain){ DbAgile::Core::Chain.new("hello 1") }
|
|
15
|
+
subject{ chain.plug("hello 2") }
|
|
16
|
+
specify{
|
|
17
|
+
subject.should == chain
|
|
18
|
+
chain.delegate_chain.should == ["hello 2", "hello 1"]
|
|
19
|
+
}
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
context "when called with multiple arguments" do
|
|
23
|
+
let(:chain){ DbAgile::Core::Chain.new() }
|
|
24
|
+
subject{ chain.plug("hello 1", "hello 2") }
|
|
25
|
+
specify{
|
|
26
|
+
subject.should == chain
|
|
27
|
+
chain.delegate_chain.should == ["hello 1", "hello 2"]
|
|
28
|
+
}
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
require File.expand_path('../../../../fixtures', __FILE__)
|
|
2
|
+
describe "DbAgile::Core::IO::DSL's scope" do
|
|
3
|
+
|
|
4
|
+
it "should resolve File correctly" do
|
|
5
|
+
DbAgile::Core::IO::DSL.instance_eval{ File }.should == ::File
|
|
6
|
+
DbAgile::Core::IO::DSL.new.instance_eval{ File }.should == ::File
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require File.expand_path('../fixtures', __FILE__)
|
|
2
|
+
describe "DbAgile::Core::Repository::create! /" do
|
|
3
|
+
|
|
4
|
+
describe "on an unexisting folder" do
|
|
5
|
+
before{ FileUtils.rm_rf(path) }
|
|
6
|
+
after { FileUtils.rm_rf(path) }
|
|
7
|
+
let(:path){ DbAgile::Fixtures::Core::Repository::repository_path(:unexisting) }
|
|
8
|
+
|
|
9
|
+
it "should not raise any error" do
|
|
10
|
+
lambda{ DbAgile::Core::Repository::create!(path) }.should_not raise_error
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should return a repository instance with correct version number" do
|
|
14
|
+
repo = DbAgile::Core::Repository::create!(path)
|
|
15
|
+
repo.should be_kind_of(DbAgile::Core::Repository)
|
|
16
|
+
repo.version.should == DbAgile::VERSION
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should create a reloadable repository with correct version number" do
|
|
20
|
+
created = DbAgile::Core::Repository::create!(path)
|
|
21
|
+
created.send(:version=, "0.99.0")
|
|
22
|
+
created.save!
|
|
23
|
+
reloaded = DbAgile::Core::Repository::load(path)
|
|
24
|
+
reloaded.version.should == "0.99.0"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require File.expand_path('../fixtures', __FILE__)
|
|
2
|
+
describe "DbAgile::Core::Repository#current?" do
|
|
3
|
+
|
|
4
|
+
let(:database){ DbAgile::Fixtures::Core::Repository::repository(:test_and_prod) }
|
|
5
|
+
|
|
6
|
+
describe("When called with an existing but not current database (name)") do
|
|
7
|
+
subject{ database.current?(:test) }
|
|
8
|
+
it{ should == false }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe("When called with an existing and current database (name)") do
|
|
12
|
+
subject{ database.current?(:production) }
|
|
13
|
+
it{ should == true }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe("When called with an existing but not current database (instance)") do
|
|
17
|
+
subject{ database.current?(database.database(:test)) }
|
|
18
|
+
it{ should == false }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe("When called with an existing and current database (instance)") do
|
|
22
|
+
subject{ database.current?(database.database(:production)) }
|
|
23
|
+
it{ should == true }
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe("When called with an missing database (name)") do
|
|
27
|
+
subject{ database.current?(:nosuchone) }
|
|
28
|
+
it{ should be_nil }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require File.expand_path('../fixtures', __FILE__)
|
|
2
|
+
describe "DbAgile::Core::Repository#database" do
|
|
3
|
+
|
|
4
|
+
let(:repository){ DbAgile::Fixtures::Core::Repository::repository(:test_and_prod) }
|
|
5
|
+
|
|
6
|
+
describe("When called with an unexisting database name") do
|
|
7
|
+
subject{ repository.database(:test) }
|
|
8
|
+
specify{
|
|
9
|
+
subject.should be_kind_of(::DbAgile::Core::Database)
|
|
10
|
+
subject.name.should == :test
|
|
11
|
+
subject.uri.should == "test.db"
|
|
12
|
+
}
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe("When called with an unexisting database instance") do
|
|
16
|
+
subject{ repository.database(repository.database(:test)) }
|
|
17
|
+
specify{
|
|
18
|
+
subject.should be_kind_of(::DbAgile::Core::Database)
|
|
19
|
+
subject.name.should == :test
|
|
20
|
+
subject.uri.should == "test.db"
|
|
21
|
+
}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
describe("When called with a String for uri") do
|
|
25
|
+
subject{ repository.database("test.db") }
|
|
26
|
+
specify{
|
|
27
|
+
subject.should be_kind_of(::DbAgile::Core::Database)
|
|
28
|
+
subject.name.should == :test
|
|
29
|
+
subject.uri.should == "test.db"
|
|
30
|
+
}
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe("When called with a Regexp for uri") do
|
|
34
|
+
subject{ repository.database(/postgres/) }
|
|
35
|
+
specify{
|
|
36
|
+
subject.should be_kind_of(::DbAgile::Core::Database)
|
|
37
|
+
subject.name.should == :production
|
|
38
|
+
subject.uri.should == "postgres://postgres@localhost/test"
|
|
39
|
+
}
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe("When called with an missing database") do
|
|
43
|
+
subject{ repository.database(:nosuchone) }
|
|
44
|
+
it{ should be_nil }
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
sdkjqhkj
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 0.0.1
|
|
3
|
+
databases:
|
|
4
|
+
production:
|
|
5
|
+
uri: postgres://postgres@localhost/test
|
|
6
|
+
announced_schema:
|
|
7
|
+
- schema.yaml
|
|
8
|
+
effective_schema:
|
|
9
|
+
- production.yaml
|
|
10
|
+
test:
|
|
11
|
+
uri: test.db
|
|
12
|
+
announced_schema:
|
|
13
|
+
- schema.yaml
|
|
14
|
+
effective_schema:
|
|
15
|
+
- effective.yaml
|
|
16
|
+
- unsupported.yaml
|
|
17
|
+
robust:
|
|
18
|
+
uri: robust.db
|
|
19
|
+
plugins:
|
|
20
|
+
- DbAgile::Contract::Robust::Optimistic
|
|
21
|
+
current: production
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require File.expand_path('../../../fixtures', __FILE__)
|
|
2
|
+
module DbAgile
|
|
3
|
+
module Fixtures
|
|
4
|
+
module Core
|
|
5
|
+
module Repository
|
|
6
|
+
include Fixtures::Utils
|
|
7
|
+
|
|
8
|
+
def repository_path(name_or_file)
|
|
9
|
+
find_file(name_or_file, __FILE__)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def each_repository_path(&block)
|
|
13
|
+
each_dir(__FILE__, &block)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Returns a Schema instance for a given name
|
|
17
|
+
def repository(name_or_file)
|
|
18
|
+
DbAgile::Core::Repository::load(repository_path(name_or_file))
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
extend(Repository)
|
|
22
|
+
end
|
|
23
|
+
end # module Core
|
|
24
|
+
end # module Fixtures
|
|
25
|
+
end # module DbAgile
|