persist 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -2,6 +2,7 @@
2
2
  *.rbc
3
3
  .bundle
4
4
  .config
5
+ .db.pstore
5
6
  .yardoc
6
7
  Gemfile.lock
7
8
  InstalledFiles
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012 Shannon
1
+ Copyright (c) 2012 Shannon Skipper
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -48,7 +48,7 @@ Persist[:pie]
48
48
  #=> ["Key Lime", "Strawberry Rhubarb", "Blackberry Cobbler"]
49
49
  ```
50
50
 
51
- TODO: Document Persist.db's other public methods such as #transaction, #delete, and #keys. The best documentation in the meanwhile is in the code itself: https://github.com/Havenwood/persist/blob/master/lib/persist.rb
51
+ TODO: Document Persist.db's other public methods such as #transaction, #delete, #key? and #keys. The best documentation in the meanwhile is in the code itself: https://github.com/Havenwood/persist/blob/master/lib/persist.rb
52
52
 
53
53
  ## Contributing
54
54
 
@@ -1,3 +1,3 @@
1
1
  module Persist
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
data/lib/persist.rb CHANGED
@@ -56,7 +56,24 @@ module Persist
56
56
  end
57
57
  end
58
58
 
59
- alias tables keys
59
+ # Public: Determine whether a particular persistent store root table exists.
60
+ #
61
+ # Examples
62
+ #
63
+ # Persist.key? :author
64
+ # # => true
65
+ #
66
+ # Persist.key? :this_does_not_exist
67
+ # # => false
68
+ #
69
+ # Returns true or false.
70
+ def key? table
71
+ # Open a read-only transaction.
72
+ @store.transaction(true) do
73
+ #Return a list of all tables in the persistent store.
74
+ @store.root? table
75
+ end
76
+ end
60
77
 
61
78
  # Public: Fetch a particular table from the persistent store.
62
79
  #
data/persist.gemspec CHANGED
@@ -2,16 +2,16 @@
2
2
  require File.expand_path('../lib/persist/version', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
- gem.authors = ["Shannon"]
6
- gem.email = ["shannonskipper@gmail.com"]
5
+ gem.authors = ['Shannon']
6
+ gem.email = ['shannonskipper@gmail.com']
7
7
  gem.description = %q{A DSL for storing Ruby Objects transactionally in a persistent NoSQL database}
8
8
  gem.summary = %q{Persist.db is a DSL implemented around Ruby Standard Library's PStore to facilitate simple file-persistant storage of Ruby objects in a transactional NoSQL database.}
9
- gem.homepage = "https://github.com/Havenwood/persist"
9
+ gem.homepage = 'https://github.com/Havenwood/persist'
10
10
 
11
11
  gem.files = `git ls-files`.split($\)
12
12
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
13
  gem.test_files = gem.files.grep(%r{^test/})
14
- gem.name = "persist"
15
- gem.require_paths = ["lib"]
14
+ gem.name = 'persist'
15
+ gem.require_paths = ['lib', 'test']
16
16
  gem.version = Persist::VERSION
17
17
  end
data/test/helper.rb ADDED
@@ -0,0 +1,3 @@
1
+ require 'minitest/autorun'
2
+ require 'minitest/pride'
3
+ require_relative '../lib/persist.rb'
@@ -0,0 +1,70 @@
1
+ require_relative 'helper'
2
+
3
+ describe Persist do
4
+ before do
5
+ @db = Persist.db
6
+ Persist[:author] = {first_name: 'Shannon', last_name: 'Skipper'}
7
+ end
8
+
9
+ describe "initializing the persistent store with Persist.db" do
10
+ it "returns a PStore object" do
11
+ assert_equal PStore, @db.class
12
+ end
13
+ end
14
+
15
+ describe "getting a list of root keys with Persist.keys" do
16
+ it "returns an Array" do
17
+ assert_kind_of Array, Persist.keys
18
+ end
19
+ end
20
+
21
+ describe "getting true or false if key exists with Persist.key?(:key)" do
22
+ it "returns true if key exists" do
23
+ assert Persist.key?(:author)
24
+ end
25
+
26
+ it "returns false if the key does't exist" do
27
+ refute Persist.key?(:this_does_not_exist)
28
+ end
29
+ end
30
+
31
+ describe "getting a particular key's value with Persist[:key]" do
32
+ it "returns a value if the key exists" do
33
+ assert_equal "Shannon", Persist[:author][:first_name]
34
+ end
35
+
36
+ it "returns nil if the key doesn't exist" do
37
+ assert_nil Persist[:this_does_not_exist]
38
+ end
39
+ end
40
+
41
+ describe "setting a perticular key's value with Persist[:key] = value" do
42
+ before do
43
+ Persist[:trees] = ['oak', 'pine', 'cedar']
44
+ end
45
+
46
+ it "should add the key to the persistent store" do
47
+ assert Persist.key?(:trees)
48
+ end
49
+
50
+ it "should be set to the expected value" do
51
+ assert_equal ["oak", "pine", "cedar"], Persist[:trees]
52
+ end
53
+ end
54
+
55
+ describe "setting multiple key's values with Persist.transaction do ..." do
56
+ it "blends" do
57
+ assert true #TODO: test.
58
+ end
59
+ end
60
+
61
+ describe "deleting a root key" do
62
+ before do
63
+ Persist.delete :author
64
+ end
65
+
66
+ it "returns nil because the key no longer exists" do
67
+ assert_nil Persist[:author]
68
+ end
69
+ end
70
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: persist
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-21 00:00:00.000000000 Z
12
+ date: 2012-05-22 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: A DSL for storing Ruby Objects transactionally in a persistent NoSQL
15
15
  database
@@ -23,16 +23,18 @@ files:
23
23
  - Gemfile
24
24
  - LICENSE
25
25
  - README.md
26
- - Rakefile
27
26
  - lib/persist.rb
28
27
  - lib/persist/version.rb
29
28
  - persist.gemspec
29
+ - test/helper.rb
30
+ - test/test_persist.rb
30
31
  homepage: https://github.com/Havenwood/persist
31
32
  licenses: []
32
33
  post_install_message:
33
34
  rdoc_options: []
34
35
  require_paths:
35
36
  - lib
37
+ - test
36
38
  required_ruby_version: !ruby/object:Gem::Requirement
37
39
  none: false
38
40
  requirements:
@@ -53,5 +55,7 @@ specification_version: 3
53
55
  summary: Persist.db is a DSL implemented around Ruby Standard Library's PStore to
54
56
  facilitate simple file-persistant storage of Ruby objects in a transactional NoSQL
55
57
  database.
56
- test_files: []
58
+ test_files:
59
+ - test/helper.rb
60
+ - test/test_persist.rb
57
61
  has_rdoc:
data/Rakefile DELETED
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env rake
2
- require "bundler/gem_tasks"