cerealizer 0.0.1 → 0.0.2
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/.rspec +2 -0
- data/Gemfile.lock +21 -0
- data/Guardfile +8 -0
- data/cerealizer.gemspec +2 -0
- data/lib/cerealizer/version.rb +1 -1
- data/lib/cerealizer.rb +13 -11
- data/spec/lib/cerealizer_spec.rb +48 -0
- data/spec/spec_helper.rb +19 -0
- metadata +41 -3
data/.rspec
ADDED
data/Gemfile.lock
CHANGED
@@ -6,7 +6,24 @@ PATH
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
+
coderay (1.0.8)
|
9
10
|
diff-lcs (1.1.3)
|
11
|
+
guard (1.5.4)
|
12
|
+
listen (>= 0.4.2)
|
13
|
+
lumberjack (>= 1.0.2)
|
14
|
+
pry (>= 0.9.10)
|
15
|
+
thor (>= 0.14.6)
|
16
|
+
guard-rspec (2.4.0)
|
17
|
+
guard (>= 1.1)
|
18
|
+
rspec (~> 2.11)
|
19
|
+
listen (0.6.0)
|
20
|
+
lumberjack (1.0.2)
|
21
|
+
method_source (0.8.1)
|
22
|
+
pry (0.9.11.4)
|
23
|
+
coderay (~> 1.0.5)
|
24
|
+
method_source (~> 0.8)
|
25
|
+
slop (~> 3.4)
|
26
|
+
rb-fsevent (0.9.3)
|
10
27
|
rspec (2.12.0)
|
11
28
|
rspec-core (~> 2.12.0)
|
12
29
|
rspec-expectations (~> 2.12.0)
|
@@ -15,10 +32,14 @@ GEM
|
|
15
32
|
rspec-expectations (2.12.1)
|
16
33
|
diff-lcs (~> 1.1.3)
|
17
34
|
rspec-mocks (2.12.2)
|
35
|
+
slop (3.4.3)
|
36
|
+
thor (0.17.0)
|
18
37
|
|
19
38
|
PLATFORMS
|
20
39
|
ruby
|
21
40
|
|
22
41
|
DEPENDENCIES
|
23
42
|
cerealizer!
|
43
|
+
guard-rspec
|
44
|
+
rb-fsevent (~> 0.9.1)
|
24
45
|
rspec (>= 2.9.0)
|
data/Guardfile
ADDED
data/cerealizer.gemspec
CHANGED
data/lib/cerealizer/version.rb
CHANGED
data/lib/cerealizer.rb
CHANGED
@@ -19,17 +19,9 @@ module Cerealizer
|
|
19
19
|
self
|
20
20
|
end
|
21
21
|
|
22
|
-
def self.key(key)
|
23
|
-
keys.push Key.new(key)
|
24
|
-
end
|
25
|
-
|
26
|
-
def self.keys
|
27
|
-
@keys ||= []
|
28
|
-
end
|
29
|
-
|
30
22
|
# Call methods on the object that's being presented and create a flat
|
31
23
|
# hash for these mofos.
|
32
|
-
def
|
24
|
+
def read_keys
|
33
25
|
self.class.keys.inject Hash.new do |hash, key|
|
34
26
|
hash[key.name] = proxy_reader(key.name) if readable?(key.name)
|
35
27
|
hash
|
@@ -37,11 +29,21 @@ module Cerealizer
|
|
37
29
|
end
|
38
30
|
|
39
31
|
# Update the attrs on zie model.
|
40
|
-
def
|
41
|
-
attrs.each { |key, value| proxy_writer(key, value) if writeable?(key
|
32
|
+
def write_keys(attrs)
|
33
|
+
attrs.each { |key, value| proxy_writer(key, value) if writeable?(key) }
|
42
34
|
self
|
43
35
|
end
|
44
36
|
|
37
|
+
# Registers a key with the class.
|
38
|
+
def self.key(key)
|
39
|
+
keys.push Key.new(key)
|
40
|
+
end
|
41
|
+
|
42
|
+
# Keys that are registered with the class.
|
43
|
+
def self.keys
|
44
|
+
@keys ||= []
|
45
|
+
end
|
46
|
+
|
45
47
|
private
|
46
48
|
# TODO - Should the default be writable?
|
47
49
|
def writeable?(key)
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Cerealizer do
|
4
|
+
|
5
|
+
# Anonomous classes we use to test cerealizer
|
6
|
+
let(:cereal_klass) { Struct.new(:name, :sugar_content, :private_notes, :owner_id) }
|
7
|
+
let(:user_klass) { Struct.new(:name, :role, :id) }
|
8
|
+
let(:serializer_klass) do
|
9
|
+
# Weird eh? Its an anonymous class. Don't want to litter the Global namespace with
|
10
|
+
# constants that don't make sense.
|
11
|
+
Class.new Cerealizer::Base do
|
12
|
+
key :name
|
13
|
+
key :private_notes
|
14
|
+
key :sugar_content
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# We're gonna use these instances for the test cases.
|
19
|
+
let(:brad){ user_klass.new('Brad Gessler', :admin, 1) }
|
20
|
+
let(:joe){ user_klass.new('Joe Shmoe', :anon, 2) }
|
21
|
+
let(:cheerios){ cereal_klass.new('Cheerios', '1 gram', 'Tastes like cardboard', brad.id) }
|
22
|
+
let(:cheerios_serializer){ serializer_klass.new(cheerios, brad) }
|
23
|
+
|
24
|
+
describe "#read_keys" do
|
25
|
+
it "should serialize keys" do
|
26
|
+
cheerios_serializer.read_keys.keys.should include(:name, :private_notes, :sugar_content)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should serializer values" do
|
30
|
+
cheerios_serializer.read_keys.values.should include('Cheerios', '1 gram', 'Tastes like cardboard')
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "#write_keys" do
|
35
|
+
it "should update object attributes" do
|
36
|
+
cheerios_serializer.write_keys(:name => 'Captain Crunch').object.name.should == 'Captain Crunch'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe ".href" do
|
41
|
+
let(:serializer_klass) do
|
42
|
+
Class.new Cerealizer::Base do
|
43
|
+
href "/users/:owner_id"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'cerealizer'
|
2
|
+
|
3
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
4
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
5
|
+
# Require this file using `require "spec_helper"` to ensure that it is only
|
6
|
+
# loaded once.
|
7
|
+
#
|
8
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
9
|
+
RSpec.configure do |config|
|
10
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
11
|
+
config.run_all_when_everything_filtered = true
|
12
|
+
config.filter_run :focus
|
13
|
+
|
14
|
+
# Run specs in random order to surface order dependencies. If you find an
|
15
|
+
# order dependency and want to debug it, you can fix the order by providing
|
16
|
+
# the seed, which is printed after each run.
|
17
|
+
# --seed 1234
|
18
|
+
config.order = 'random'
|
19
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cerealizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
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: 2013-02-
|
12
|
+
date: 2013-02-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -27,6 +27,38 @@ dependencies:
|
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: 2.9.0
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: guard-rspec
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rb-fsevent
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.9.1
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.9.1
|
30
62
|
description: Serialize and deserialize classes and JSON.
|
31
63
|
email:
|
32
64
|
- brad@polleverywhere.com
|
@@ -35,14 +67,18 @@ extensions: []
|
|
35
67
|
extra_rdoc_files: []
|
36
68
|
files:
|
37
69
|
- .gitignore
|
70
|
+
- .rspec
|
38
71
|
- Gemfile
|
39
72
|
- Gemfile.lock
|
73
|
+
- Guardfile
|
40
74
|
- LICENSE.txt
|
41
75
|
- README.md
|
42
76
|
- Rakefile
|
43
77
|
- cerealizer.gemspec
|
44
78
|
- lib/cerealizer.rb
|
45
79
|
- lib/cerealizer/version.rb
|
80
|
+
- spec/lib/cerealizer_spec.rb
|
81
|
+
- spec/spec_helper.rb
|
46
82
|
homepage: http://github.com/polleverywhere/cerealizer
|
47
83
|
licenses: []
|
48
84
|
post_install_message:
|
@@ -68,5 +104,7 @@ signing_key:
|
|
68
104
|
specification_version: 3
|
69
105
|
summary: Dive into the nitty gritty details of serializing and deserializing between
|
70
106
|
objects and a hash.
|
71
|
-
test_files:
|
107
|
+
test_files:
|
108
|
+
- spec/lib/cerealizer_spec.rb
|
109
|
+
- spec/spec_helper.rb
|
72
110
|
has_rdoc:
|