data_depo 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +2 -0
- data/MIT-LICENSE +20 -0
- data/README.md +100 -0
- data/Rakefile +7 -0
- data/data_depo.gemspec +17 -0
- data/lib/data_depo/array_data.rb +23 -0
- data/lib/data_depo/loader.rb +18 -0
- data/lib/data_depo/query.rb +41 -0
- data/lib/data_depo/yaml_loader.rb +35 -0
- data/lib/data_depo.rb +33 -0
- data/lib/data_pitcher/category.rb +20 -0
- data/lib/data_pitcher/holder.rb +45 -0
- data/lib/data_pitcher/loader.rb +23 -0
- data/lib/data_pitcher.rb +25 -0
- data/spec/data_depo/query_spec.rb +42 -0
- data/spec/data_depo_spec.rb +126 -0
- data/spec/samples/capitals/1.yml +12 -0
- data/spec/samples/capitals/2.yml +9 -0
- data/spec/samples/users.yml +6 -0
- data/spec/spec_helper.rb +6 -0
- metadata +84 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 40075cd33feb0c2bd83eeacebacc019a0258960a
|
4
|
+
data.tar.gz: bdd519dfd952ea9686ea83364675a6749ccce72c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 32f923b8ee6ae7392a19eb5a95a9a575049fbfe0859d4c29a5a33b9f6a0f846d026a154477e566a7a19957564bb875304341c33f6f64a705f36ff6563e7bcffb
|
7
|
+
data.tar.gz: afd550417815024a44c548a2bdb97b903e66b4f634f3ad1f69b5f002a8aa71d414463e3d2870925378eb27e594836418322b378af96af46741e47c181e84359f
|
data/Gemfile
ADDED
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2014 hosim <github.hosim@gmail.com>
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
# DataDepo
|
2
|
+
|
3
|
+
`DataDepo` is data depository utility for testing, etc.
|
4
|
+
|
5
|
+
## Basic Usage
|
6
|
+
|
7
|
+
When you write the following data file in YAML file
|
8
|
+
as `deops/users.yml`...
|
9
|
+
|
10
|
+
```
|
11
|
+
- name: John Doe
|
12
|
+
email: john.doe@xxx.xx
|
13
|
+
password: password
|
14
|
+
- name: Jane Doe
|
15
|
+
email: jane.doe@xxx.xx
|
16
|
+
password: drowssap
|
17
|
+
- name: John Smith
|
18
|
+
email: john.smith@xxx.xx
|
19
|
+
password: bassworq
|
20
|
+
```
|
21
|
+
|
22
|
+
you can access the contents the following manner:
|
23
|
+
|
24
|
+
```ruby
|
25
|
+
require 'data_depo'
|
26
|
+
|
27
|
+
DataDepo.definition_path = 'depos'
|
28
|
+
DataDepo.users.each do |u|
|
29
|
+
puts u["name"]
|
30
|
+
end
|
31
|
+
|
32
|
+
=> John Doe
|
33
|
+
Jane Doe
|
34
|
+
John Smith
|
35
|
+
```
|
36
|
+
|
37
|
+
You can have multiple data files as one group.
|
38
|
+
In case you have the following two YAML files:
|
39
|
+
|
40
|
+
(`depos/users/foo.yml`)
|
41
|
+
```
|
42
|
+
- name: John Doe
|
43
|
+
email: john.doe@xxx.xx
|
44
|
+
password: password
|
45
|
+
- name: Jane Doe
|
46
|
+
email: jane.doe@xxx.xx
|
47
|
+
password: drowssap
|
48
|
+
```
|
49
|
+
|
50
|
+
(`depos/users/baa.yml`)
|
51
|
+
```
|
52
|
+
- name: John Roe
|
53
|
+
email: john.roe@xxx.xx
|
54
|
+
password: bassworq
|
55
|
+
- name: Jane Roe
|
56
|
+
email: jane.roe@xxx.xx
|
57
|
+
password: dassworp
|
58
|
+
```
|
59
|
+
|
60
|
+
You can access contents of the both files in the same manner.
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
require 'data_depo'
|
64
|
+
|
65
|
+
DataDepo.definition_path = 'depos'
|
66
|
+
DataDepo.users.each do |u|
|
67
|
+
puts u["name"]
|
68
|
+
end
|
69
|
+
```
|
70
|
+
|
71
|
+
When `DataDepo` receives a method, it searches a file or a directory
|
72
|
+
that has a name of the method in the path defined by `definition_path`
|
73
|
+
and tries to read data from there.
|
74
|
+
|
75
|
+
## Other usage
|
76
|
+
|
77
|
+
### Custom action
|
78
|
+
|
79
|
+
You can define some custom actions.
|
80
|
+
When you define the following module...
|
81
|
+
|
82
|
+
```ruby
|
83
|
+
module DataDepo
|
84
|
+
module UsersAction
|
85
|
+
def puts_all
|
86
|
+
self.each do |u|
|
87
|
+
puts u
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
```
|
93
|
+
|
94
|
+
you can do this.
|
95
|
+
|
96
|
+
```ruby
|
97
|
+
DataDepo.users.puts_all
|
98
|
+
=> {"name"=>"John Doe", "email"=>"john.doe@xxx.xx", "password"=>"password"}
|
99
|
+
...
|
100
|
+
```
|
data/Rakefile
ADDED
data/data_depo.gemspec
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "data_depo"
|
6
|
+
s.authors = ["hosim"]
|
7
|
+
s.email = ["github.hosim@gmail.com"]
|
8
|
+
s.description = "DataDepo is data depository utility for testing, etc."
|
9
|
+
s.summary = "Data depository utility for testing, etc."
|
10
|
+
s.homepage = "https://github.com/hosim/data_depo"
|
11
|
+
s.files = `git ls-files`.split("\n")
|
12
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
13
|
+
s.version = "0.0.1"
|
14
|
+
s.license = "MIT"
|
15
|
+
|
16
|
+
s.add_development_dependency 'rspec'
|
17
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module DataDepo
|
4
|
+
class ArrayData < Array
|
5
|
+
class << self
|
6
|
+
def gen(name, array)
|
7
|
+
a = self[*array]
|
8
|
+
nm = name.to_s.split('/').first
|
9
|
+
mod = if nm.respond_to?(:camelize)
|
10
|
+
nm.camelize
|
11
|
+
else
|
12
|
+
nm.split('_').map {|s| s.capitalize }.join
|
13
|
+
end
|
14
|
+
mod << 'Action'
|
15
|
+
if DataDepo.const_defined?(mod)
|
16
|
+
sig = class << a; self; end
|
17
|
+
sig.__send__(:include, DataDepo.const_get(mod))
|
18
|
+
end
|
19
|
+
a
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module DataDepo
|
4
|
+
class Loader
|
5
|
+
def initialize(paths)
|
6
|
+
roots = ::DataDepo.definition_path
|
7
|
+
@paths = roots.map {|root|
|
8
|
+
File.join(root, *paths.map {|path| path.to_s})
|
9
|
+
}
|
10
|
+
@paths = [File.join(*paths.map {|path| path.to_s})] if @paths.empty?
|
11
|
+
end
|
12
|
+
|
13
|
+
def load
|
14
|
+
end
|
15
|
+
|
16
|
+
attr_reader :paths
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require 'data_depo/array_data'
|
4
|
+
|
5
|
+
module DataDepo
|
6
|
+
class Query
|
7
|
+
include Enumerable
|
8
|
+
|
9
|
+
def initialize(name=nil, path=[])
|
10
|
+
@name = name
|
11
|
+
@path = path
|
12
|
+
end
|
13
|
+
|
14
|
+
def [](*keys)
|
15
|
+
raise if keys.empty?
|
16
|
+
|
17
|
+
@name ||= keys.first
|
18
|
+
path = (@path || []) | keys
|
19
|
+
self.class.new(@name, path)
|
20
|
+
end
|
21
|
+
|
22
|
+
def each(&block)
|
23
|
+
data = DataDepo.current_loader.new(@path).load
|
24
|
+
data.each(&block)
|
25
|
+
end
|
26
|
+
|
27
|
+
def files
|
28
|
+
loader = DataDepo.current_loader.new(@path)
|
29
|
+
loader.files
|
30
|
+
end
|
31
|
+
|
32
|
+
def method_missing(name, *args, &block)
|
33
|
+
loader = DataDepo.current_loader.new(@path)
|
34
|
+
unless loader.files.empty?
|
35
|
+
a = ArrayData.gen(@name, loader.load)
|
36
|
+
return a.respond_to?(name) ? a.__send__(name, *args, &block) : super
|
37
|
+
end
|
38
|
+
super
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'yaml'
|
3
|
+
require 'data_depo/loader'
|
4
|
+
|
5
|
+
module DataDepo
|
6
|
+
class YAMLLoader < Loader
|
7
|
+
def load
|
8
|
+
files.each.inject([]) {|a, file|
|
9
|
+
load_file_into_array(file, a); a
|
10
|
+
}
|
11
|
+
end
|
12
|
+
|
13
|
+
def files
|
14
|
+
@paths.each.inject([]) do |a, path|
|
15
|
+
Dir.glob(File.join(path, '**', '*.yml')) {|file|
|
16
|
+
a << file
|
17
|
+
} if File.directory?(path)
|
18
|
+
|
19
|
+
filename = path + '.yml'
|
20
|
+
a << filename if File.file?(filename)
|
21
|
+
a
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
def load_file_into_array(file, array)
|
27
|
+
yaml = YAML.load_file(file)
|
28
|
+
if yaml.is_a? Array
|
29
|
+
array.concat(yaml)
|
30
|
+
else
|
31
|
+
array << yaml
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/data_depo.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require 'data_depo/query'
|
4
|
+
require 'data_depo/yaml_loader'
|
5
|
+
|
6
|
+
module DataDepo
|
7
|
+
class << self
|
8
|
+
def definition_path=(paths)
|
9
|
+
@definition_paths = Array(paths)
|
10
|
+
end
|
11
|
+
|
12
|
+
def definition_path
|
13
|
+
@definition_paths
|
14
|
+
end
|
15
|
+
|
16
|
+
def current_loader
|
17
|
+
@loader = YAMLLoader
|
18
|
+
end
|
19
|
+
|
20
|
+
def method_missing(name, *args, &block)
|
21
|
+
return super if name.to_s[-1] == '='
|
22
|
+
|
23
|
+
query ||= Query.new
|
24
|
+
if name == :[]
|
25
|
+
query.__send__(name, *args, &block)
|
26
|
+
else
|
27
|
+
query = query.__send__(:[], name)
|
28
|
+
query = query[*args] unless args.empty?
|
29
|
+
query
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module DataPitcher
|
4
|
+
class Category
|
5
|
+
def initialize
|
6
|
+
@key_items = {}
|
7
|
+
@path_items = {}
|
8
|
+
end
|
9
|
+
|
10
|
+
def register(item, key)
|
11
|
+
hash = key.is_a?(Array) ? @path_items : @key_items
|
12
|
+
hash[key] = item
|
13
|
+
end
|
14
|
+
|
15
|
+
def has?(key)
|
16
|
+
hash = key.is_a?(Array) ? @path_items : @key_items
|
17
|
+
hash.has_key?(key)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
require 'data_pitcher/category'
|
5
|
+
require 'data_pitcher/loader'
|
6
|
+
|
7
|
+
module DataPitcher
|
8
|
+
class Holder
|
9
|
+
class << self
|
10
|
+
def add(path, root)
|
11
|
+
item = Loader.load(path, root)
|
12
|
+
category = (items[item.category] ||= Category.new)
|
13
|
+
category.register(item.data, item.name) unless category.has?(item.name)
|
14
|
+
category.register(item.data, item.pieces)
|
15
|
+
end
|
16
|
+
|
17
|
+
def keys
|
18
|
+
items.keys
|
19
|
+
end
|
20
|
+
|
21
|
+
def select(category)
|
22
|
+
items[category]
|
23
|
+
end
|
24
|
+
|
25
|
+
private :new
|
26
|
+
private
|
27
|
+
def items
|
28
|
+
@items ||= {}
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
attr_reader :category, :name, :pieces, :data
|
33
|
+
|
34
|
+
def initialize(path, root)
|
35
|
+
@path = path
|
36
|
+
pieces = path[root.length..-1].split('/')
|
37
|
+
@name = pieces.pop[0...-4]
|
38
|
+
@category = pieces.shift
|
39
|
+
@category = pieces.shift if @category and @category.empty?
|
40
|
+
@name ||= @name
|
41
|
+
@pieces = Array[*(pieces || []), @name]
|
42
|
+
@data = YAML.load_file(@path)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
module DataPitcher
|
6
|
+
module Loader
|
7
|
+
class << self
|
8
|
+
def load(path, root)
|
9
|
+
pieces = path[root.length..-1].split('/')
|
10
|
+
name = pieces.pop[0...((File.extname(path) + 1) * -1)]
|
11
|
+
category = pieces.shift
|
12
|
+
category = pieces.shift if category and category.empty?
|
13
|
+
category ||= name
|
14
|
+
breadcrumb = Array[*(pieces || []), name]
|
15
|
+
data = YAML.load_fie(path)
|
16
|
+
|
17
|
+
DataItem.new(category, name, breadcrumb, data)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
DataItem = Struct.new(:category, :name, :breadcrumb, :data)
|
22
|
+
end
|
23
|
+
end
|
data/lib/data_pitcher.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require "data_pitcher/holder"
|
4
|
+
|
5
|
+
module DataPitcher
|
6
|
+
class << self
|
7
|
+
def definiton_paths=(paths)
|
8
|
+
@definition_paths = Array(paths)
|
9
|
+
end
|
10
|
+
|
11
|
+
def load
|
12
|
+
(@definition_paths || []).uniq.each do |path|
|
13
|
+
if File.directory?(path)
|
14
|
+
Dir.glob(File.join(path, '**', '*.yml')).each do |file|
|
15
|
+
Holder.add(file, path)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def throw(name, key)
|
22
|
+
item = Holder.select(name.to_s)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'data_depo'
|
4
|
+
|
5
|
+
describe DataDepo::Query do
|
6
|
+
describe "#[]" do
|
7
|
+
context "when passing only one argument" do
|
8
|
+
it "returns a Query instance" do
|
9
|
+
query = described_class.new
|
10
|
+
expect(query[:foo]).to be_an_instance_of(DataDepo::Query)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "returns an object that has the argument's value as 'name'" do
|
14
|
+
query = described_class.new[:foo]
|
15
|
+
name = query.instance_variable_get(:@name)
|
16
|
+
expect(name).to be :foo
|
17
|
+
end
|
18
|
+
|
19
|
+
it "returns an object that has an array of the same one as 'path'" do
|
20
|
+
query = described_class.new[:foo]
|
21
|
+
path = query.instance_variable_get(:@path)
|
22
|
+
expect(path).to eq [:foo]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "each" do
|
28
|
+
context "when a file that is specified by 'path' exists" do
|
29
|
+
before do
|
30
|
+
DataDepo.definition_path = \
|
31
|
+
File.join(File.dirname(__FILE__), '..', 'samples')
|
32
|
+
end
|
33
|
+
|
34
|
+
context "when no block is passed" do
|
35
|
+
it "returns an Enumerator instance" do
|
36
|
+
query = described_class.new[:users]
|
37
|
+
expect(query.each).to be_an_instance_of(Enumerator)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,126 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'data_depo'
|
5
|
+
|
6
|
+
describe DataDepo do
|
7
|
+
describe ".[]" do
|
8
|
+
context "when passing only one argument" do
|
9
|
+
it "returns a Query instance" do
|
10
|
+
query = DataDepo[:key]
|
11
|
+
expect(query).to be_an_instance_of(DataDepo::Query)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "returns an object that has the argument's value as 'name'" do
|
15
|
+
query = DataDepo[:key]
|
16
|
+
name = query.instance_variable_get(:@name)
|
17
|
+
expect(name).to eq :key
|
18
|
+
end
|
19
|
+
|
20
|
+
it "returns an object that has an array of the same one as 'path'" do
|
21
|
+
query = DataDepo[:key]
|
22
|
+
path = query.instance_variable_get(:@path)
|
23
|
+
expect(path).to eq [:key]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context "when passing some arguments" do
|
28
|
+
it "returns a Query instance" do
|
29
|
+
query = DataDepo[:foo, :baa, :baz]
|
30
|
+
expect(query).to be_an_instance_of(DataDepo::Query)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "returns an object that has a first parameters as 'name'" do
|
34
|
+
query = DataDepo[:foo, :baa, :baz]
|
35
|
+
name = query.instance_variable_get(:@name)
|
36
|
+
expect(name).to be :foo
|
37
|
+
end
|
38
|
+
|
39
|
+
it "returns an object that has all of arguments as 'path'" do
|
40
|
+
query = DataDepo[:foo, :baa, :baz]
|
41
|
+
path = query.instance_variable_get(:@path)
|
42
|
+
expect(path).to eq [:foo, :baa, :baz]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context 'when chain call' do
|
47
|
+
context 'when passing only one argument' do
|
48
|
+
it "returns a Query instance" do
|
49
|
+
query = DataDepo[:key0][:key1]
|
50
|
+
expect(query).to be_an_instance_of(DataDepo::Query)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "returns an object that has first call's argument as 'name'" do
|
54
|
+
query = DataDepo[:key0][:key1]
|
55
|
+
name = query.instance_variable_get(:@name)
|
56
|
+
expect(name).to be :key0
|
57
|
+
end
|
58
|
+
|
59
|
+
it "returns an object that has all call's argument value as 'path'" do
|
60
|
+
query = DataDepo[:key0][:key1]
|
61
|
+
path = query.instance_variable_get(:@path)
|
62
|
+
expect(path).to eq [:key0, :key1]
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
context "when passing some arguments" do
|
67
|
+
it "returns a Query instance" do
|
68
|
+
query = DataDepo[:foo, :baa, :baz][:pee, :kaa, :boo]
|
69
|
+
expect(query).to be_an_instance_of(DataDepo::Query)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "returns an object that has first call's first argument value as 'name'" do
|
73
|
+
query = DataDepo[:foo, :baa, :baz][:pee, :kaa, :boo]
|
74
|
+
name = query.instance_variable_get(:@name)
|
75
|
+
expect(name).to be :foo
|
76
|
+
end
|
77
|
+
|
78
|
+
it "returns an object that has all of arguments values as 'path'" do
|
79
|
+
query = DataDepo[:foo, :baa, :baz][:pee, :kaa, :boo]
|
80
|
+
path = query.instance_variable_get(:@path)
|
81
|
+
expect(path).to eq [:foo, :baa, :baz, :pee, :kaa, :boo]
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
describe ".method_missing" do
|
88
|
+
context "when calling without any arguments" do
|
89
|
+
it "returns a Query instance" do
|
90
|
+
query = DataDepo.foo
|
91
|
+
expect(query).to be_an_instance_of(DataDepo::Query)
|
92
|
+
end
|
93
|
+
|
94
|
+
it "returns an object that has a method name as 'name'" do
|
95
|
+
query = DataDepo.foo
|
96
|
+
name = query.instance_variable_get(:@name)
|
97
|
+
expect(name).to be :foo
|
98
|
+
end
|
99
|
+
|
100
|
+
it "returns an object that has an array of the same value as 'path'" do
|
101
|
+
query = DataDepo.foo
|
102
|
+
path = query.instance_variable_get(:@path)
|
103
|
+
expect(path).to eq [:foo]
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
context "when calling with some arguments" do
|
108
|
+
it "returns a Query instance" do
|
109
|
+
query = DataDepo.foo(:baa, :baz)
|
110
|
+
expect(query).to be_an_instance_of(DataDepo::Query)
|
111
|
+
end
|
112
|
+
|
113
|
+
it "returns an object that has a first argument value as 'name'" do
|
114
|
+
query = DataDepo.foo(:baa, :baz)
|
115
|
+
name = query.instance_variable_get(:@name)
|
116
|
+
expect(name).to be :foo
|
117
|
+
end
|
118
|
+
|
119
|
+
it "returns an object that has an array of a method name and all of arguments as 'path'" do
|
120
|
+
query = DataDepo.foo(:baa, :baz)
|
121
|
+
path = query.instance_variable_get(:@path)
|
122
|
+
expect(path).to eq [:foo, :baa, :baz]
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: data_depo
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- hosim
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-06-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
description: DataDepo is data depository utility for testing, etc.
|
28
|
+
email:
|
29
|
+
- github.hosim@gmail.com
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- Gemfile
|
35
|
+
- MIT-LICENSE
|
36
|
+
- README.md
|
37
|
+
- Rakefile
|
38
|
+
- data_depo.gemspec
|
39
|
+
- lib/data_depo.rb
|
40
|
+
- lib/data_depo/array_data.rb
|
41
|
+
- lib/data_depo/loader.rb
|
42
|
+
- lib/data_depo/query.rb
|
43
|
+
- lib/data_depo/yaml_loader.rb
|
44
|
+
- lib/data_pitcher.rb
|
45
|
+
- lib/data_pitcher/category.rb
|
46
|
+
- lib/data_pitcher/holder.rb
|
47
|
+
- lib/data_pitcher/loader.rb
|
48
|
+
- spec/data_depo/query_spec.rb
|
49
|
+
- spec/data_depo_spec.rb
|
50
|
+
- spec/samples/capitals/1.yml
|
51
|
+
- spec/samples/capitals/2.yml
|
52
|
+
- spec/samples/users.yml
|
53
|
+
- spec/spec_helper.rb
|
54
|
+
homepage: https://github.com/hosim/data_depo
|
55
|
+
licenses:
|
56
|
+
- MIT
|
57
|
+
metadata: {}
|
58
|
+
post_install_message:
|
59
|
+
rdoc_options: []
|
60
|
+
require_paths:
|
61
|
+
- lib
|
62
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - '>='
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
67
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
requirements: []
|
73
|
+
rubyforge_project:
|
74
|
+
rubygems_version: 2.0.14
|
75
|
+
signing_key:
|
76
|
+
specification_version: 4
|
77
|
+
summary: Data depository utility for testing, etc.
|
78
|
+
test_files:
|
79
|
+
- spec/data_depo/query_spec.rb
|
80
|
+
- spec/data_depo_spec.rb
|
81
|
+
- spec/samples/capitals/1.yml
|
82
|
+
- spec/samples/capitals/2.yml
|
83
|
+
- spec/samples/users.yml
|
84
|
+
- spec/spec_helper.rb
|