general_store 0.0.2 → 0.0.3

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: e0fcdc610162d8cfc8ce79887f9a6b7e5dfbbf91
4
- data.tar.gz: 339c04790979665714fbf03160d46240d97e5959
3
+ metadata.gz: 6b1cb6e862360a5486c578fc2abc59d7d157e6e1
4
+ data.tar.gz: a745ea7bb14ae0700f6c855a8b28da384fea19fe
5
5
  SHA512:
6
- metadata.gz: 8df4f776ab2f006532a6d50eb183756fdf975edacfd52ee40cacb47470e55de89ec74622842c10474e8c18c76eda3f49933034e30de2f958904ee13903c57e8b
7
- data.tar.gz: 6b0441024dd5cec88771137b8e8da5645626e590cbd92b2b399133e744469e93a80b7566a446a453f7e5cc03344aafc8b70529c808015a38f497353e7b325a5d
6
+ metadata.gz: c70ca03dd249ba387b72d71f9e8ade89e40877fe01cba1bb3819d59b58ac5992c7eda63e3a922fd6dfec5a2a90db027aae6c9444d9636465c4809443292af5af
7
+ data.tar.gz: 59f7cf13980c65f028369bc58ddcb75b0e5fc66d341f34af641824881af2da9fef5181e6724afb7f04cec179c1d8abf0facb5521f263bed28d316546a5eecc26
data/lib/general_store.rb CHANGED
@@ -4,6 +4,24 @@ require "ostruct"
4
4
  class GeneralStore
5
5
  attr_accessor :config
6
6
 
7
+ def self.read dir_name
8
+ new YAML.load_file config_file dir_name
9
+ rescue Errno::ENOENT
10
+ puts 'You need to setup your General Store first!'
11
+ end
12
+
13
+ def self.create dir, ostruct = OpenStruct.new
14
+ @dir = dir
15
+ create_config_file
16
+ yield ostruct
17
+ new(ostruct.to_h).set dir
18
+ end
19
+
20
+ def set dir
21
+ klass = self.class
22
+ klass.write_file klass.config_file(dir), config
23
+ end
24
+
7
25
  def initialize config_contents
8
26
  self.config = config_contents
9
27
  config.each do |k,v|
@@ -14,12 +32,7 @@ class GeneralStore
14
32
  send("#{accessor}=", v)
15
33
  end
16
34
  end
17
-
18
- def self.read dir_name
19
- new YAML.load_file config_file dir_name
20
- rescue Errno::ENOENT
21
- puts 'You need to setup your General Store first!'
22
- end
35
+ private_class_method :new
23
36
 
24
37
  def self.config_file dir_name
25
38
  File.expand_path File.join dir_name, "config.yml"
@@ -29,19 +42,6 @@ class GeneralStore
29
42
  File.expand_path @dir
30
43
  end
31
44
 
32
- def self.create dir
33
- @dir = dir
34
- create_config_file
35
- ostruct = OpenStruct.new
36
- yield ostruct
37
- new(ostruct.to_h).set dir
38
- end
39
-
40
- def set dir
41
- klass = self.class
42
- klass.write_file klass.config_file(dir), config
43
- end
44
-
45
45
  def self.create_config_file
46
46
  check_dir_existence
47
47
  check_file_existence
@@ -1,3 +1,3 @@
1
- module GeneralStore
2
- VERSION = "0.0.2"
1
+ class GeneralStore
2
+ VERSION = "0.0.3"
3
3
  end
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+
3
+ describe GeneralStore do
4
+ subject { GeneralStore }
5
+
6
+ before :each do
7
+ subject.create project_path do |gs|
8
+ gs.test = 'test'
9
+ gs.token = 'token'
10
+ end
11
+ end
12
+
13
+ after :each do
14
+ File.delete(project_path + "/config.yml") if File.exist?(project_path + "/config.yml")
15
+ end
16
+
17
+ describe '.create' do
18
+ it 'yields to ostruct' do
19
+ expect {|probe| subject.create(project_path, &probe) }
20
+ .to yield_control
21
+ end
22
+ end
23
+
24
+ describe '.read' do
25
+ it 'reads the attributes' do
26
+ expect(subject.read(project_path).test)
27
+ .to eq('test')
28
+
29
+ expect(subject.read(project_path).token)
30
+ .to eq('token')
31
+ end
32
+ end
33
+
34
+ describe 'world access' do
35
+ it 'is not world readable' do
36
+ file = subject.config_file project_path
37
+ expect(File.world_writable? file).to be_nil
38
+ end
39
+
40
+ it 'is not world writable' do
41
+ file = subject.config_file project_path
42
+ expect(File.world_readable? file).to be_nil
43
+ end
44
+ end
45
+
46
+ describe 'private methods' do
47
+ let(:dir) { '~/.test-dir' }
48
+
49
+ describe 'class methods' do
50
+ it '.new' do
51
+ expect { subject.public_send :new }
52
+ .to raise_error NoMethodError, /private method/
53
+ end
54
+ end
55
+ end
56
+ end
data/spec/spec_helper.rb CHANGED
@@ -4,6 +4,12 @@
4
4
  # loaded once.
5
5
  #
6
6
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+ require 'general_store'
8
+
9
+ def project_path
10
+ File.expand_path("../..", __FILE__)
11
+ end
12
+
7
13
  RSpec.configure do |config|
8
14
  config.treat_symbols_as_metadata_keys_with_true_values = true
9
15
  config.run_all_when_everything_filtered = true
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: general_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stuart Nelson
@@ -68,6 +68,7 @@ files:
68
68
  - general_store.gemspec
69
69
  - lib/general_store.rb
70
70
  - lib/general_store/version.rb
71
+ - spec/general_store/general_store_spec.rb
71
72
  - spec/spec_helper.rb
72
73
  homepage: ''
73
74
  licenses:
@@ -89,9 +90,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
90
  version: '0'
90
91
  requirements: []
91
92
  rubyforge_project:
92
- rubygems_version: 2.0.7
93
+ rubygems_version: 2.1.5
93
94
  signing_key:
94
95
  specification_version: 4
95
96
  summary: Directory and attributes go in, attributes come out
96
97
  test_files:
98
+ - spec/general_store/general_store_spec.rb
97
99
  - spec/spec_helper.rb