jaysus 0.1.3 → 0.1.4

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.1.4
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{jaysus}
8
- s.version = "0.1.3"
8
+ s.version = "0.1.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Paul Campbell"]
12
- s.date = %q{2011-01-25}
12
+ s.date = %q{2011-01-26}
13
13
  s.description = %q{Persist remote JSON APIs locally and vice versa}
14
14
  s.email = %q{paul@rslw.com}
15
15
  s.extra_rdoc_files = [
@@ -48,7 +48,7 @@ Gem::Specification.new do |s|
48
48
  s.homepage = %q{http://github.com/paulca/jaysus}
49
49
  s.licenses = ["MIT"]
50
50
  s.require_paths = ["lib"]
51
- s.rubygems_version = %q{1.3.7}
51
+ s.rubygems_version = %q{1.4.2}
52
52
  s.summary = %q{A Ruby library for managing local / remote JSON store}
53
53
  s.test_files = [
54
54
  "spec/local_spec.rb",
@@ -62,7 +62,6 @@ Gem::Specification.new do |s|
62
62
  ]
63
63
 
64
64
  if s.respond_to? :specification_version then
65
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
66
65
  s.specification_version = 3
67
66
 
68
67
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
@@ -128,7 +128,7 @@ module Jaysus
128
128
 
129
129
  def attributes
130
130
  out = {}
131
- self.class.model_base.attributes.each do |attribute|
131
+ (self.class.model_base.attributes + self.class.attributes).each do |attribute|
132
132
  out[attribute.to_s] = send(attribute)
133
133
  end
134
134
  out
@@ -173,7 +173,7 @@ module Jaysus
173
173
  def to_json
174
174
  {}.tap do |outer_hash|
175
175
  outer_hash[self.class.store_file_dir_name.singularize] = {}.tap do |inner_hash|
176
- self.class.model_base.attributes.each do |attribute|
176
+ (self.class.model_base.attributes + self.class.attributes).each do |attribute|
177
177
  if self.send(attribute).present?
178
178
  inner_hash[attribute] = self.send(attribute)
179
179
  end
@@ -30,7 +30,6 @@ module Jaysus
30
30
 
31
31
  module ClassMethods
32
32
  def all
33
- # debugger if self.model_name == 'Kalipso::Site'
34
33
  records = []
35
34
  Dir[store_file_dir.join('*')].each do |id|
36
35
  records << find(id)
@@ -24,16 +24,18 @@ module Jaysus
24
24
  super do
25
25
  response = if pk = self.send(self.class.model_base.primary_key)
26
26
  RestClient.put("#{self.class.model_url}/#{pk}", self.to_json, {
27
- 'Content-Type' => 'application/json'
27
+ 'Content-Type' => 'application/json',
28
+ 'Accept' => 'application/json'
28
29
  })
29
30
  else
30
31
  RestClient.post(self.class.model_url, self.to_json, {
31
- 'Content-Type' => 'application/json'
32
+ 'Content-Type' => 'application/json',
33
+ 'Accept' => 'application/json'
32
34
  })
33
35
  end
34
36
  decoded_response = ActiveSupport::JSON.decode(
35
37
  response
36
- )[self.class.singular_name]
38
+ )[self.class.singular_object_name]
37
39
  self.set_attributes(decoded_response)
38
40
  self
39
41
  end
@@ -31,7 +31,7 @@ describe Jaysus::Local do
31
31
  end
32
32
  context "within a module" do
33
33
  subject { Kalipso::Site::Local.all }
34
- its(:length) { should == 1}
34
+ its(:length) { should == 1 }
35
35
  its(:first) { should be_a_kind_of(Kalipso::Site::Local) }
36
36
  end
37
37
  end
@@ -82,8 +82,12 @@ describe Jaysus::Local do
82
82
  end
83
83
 
84
84
  describe "#update_attributes" do
85
- subject { site.update_attributes(:title => "Newer Site")}
86
- its(:title) { should == "Newer Site" }
85
+ before do
86
+ site.save
87
+ site.update_attributes(:title => "Newer Site", :path => "nice")
88
+ end
89
+ subject { File.read("#{Site::Local.store_file_dir}/#{site.id}")}
90
+ it { should match(/nice/) }
87
91
  end
88
92
 
89
93
  describe "#destroy" do
@@ -3,6 +3,7 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
3
  describe Jaysus::Remote do
4
4
 
5
5
  let(:site) { Site::Remote.new({ :title => "New Site" }) }
6
+ let(:module_site) { Kalipso::Site::Remote.new({ :title => "New Site" }) }
6
7
 
7
8
  describe ".all" do
8
9
  before do
@@ -47,15 +48,25 @@ describe Jaysus::Remote do
47
48
  'http://testapi/sites',
48
49
  site.to_json,
49
50
  {
50
- 'Content-Type' => 'application/json'
51
+ 'Content-Type' => 'application/json',
52
+ 'Accept' => 'application/json'
51
53
  }
52
54
  ).and_return(File.read('spec/fixtures/new_site.json'))
53
- site.save
54
55
  end
55
56
 
56
- subject { site }
57
- its(:id) { should == 2 }
58
- its(:title) { should == "New Site" }
57
+ context "normal" do
58
+ before { site.save }
59
+ subject { site }
60
+ its(:id) { should == 2 }
61
+ its(:title) { should == "New Site" }
62
+ end
63
+
64
+ context "within a module" do
65
+ before { module_site.save }
66
+ subject { module_site }
67
+ its(:id) { should == 2 }
68
+ its(:title) { should == "New Site" }
69
+ end
59
70
  end
60
71
 
61
72
  describe "#update_attributes" do
@@ -63,7 +74,7 @@ describe Jaysus::Remote do
63
74
  RestClient.should_receive(:get).with(
64
75
  'http://testapi/sites/42',
65
76
  {
66
- 'Accept' => 'application/json'
77
+ 'Accept' => 'application/json',
67
78
  }
68
79
  ).and_return(File.read('spec/fixtures/find_site.json'))
69
80
 
@@ -71,7 +82,8 @@ describe Jaysus::Remote do
71
82
  'http://testapi/sites/42',
72
83
  "{\"site\":{\"title\":\"Monster!\",\"id\":42,\"user_id\":42}}",
73
84
  {
74
- 'Content-Type' => 'application/json'
85
+ 'Content-Type' => 'application/json',
86
+ 'Accept' => 'application/json'
75
87
  }
76
88
  ).and_return(File.read('spec/fixtures/update_site.json'))
77
89
  end
@@ -8,6 +8,7 @@ module Site
8
8
 
9
9
  class Local < Base
10
10
  include Jaysus::Local
11
+ attribute :path
11
12
  end
12
13
 
13
14
  class Remote < Base
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jaysus
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
5
- prerelease: false
4
+ hash: 19
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 3
10
- version: 0.1.3
9
+ - 4
10
+ version: 0.1.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Paul Campbell
@@ -15,13 +15,13 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-25 00:00:00 +00:00
18
+ date: 2011-01-26 00:00:00 +00:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- type: :runtime
23
22
  prerelease: false
24
23
  name: activemodel
24
+ type: :runtime
25
25
  version_requirements: &id001 !ruby/object:Gem::Requirement
26
26
  none: false
27
27
  requirements:
@@ -35,9 +35,9 @@ dependencies:
35
35
  version: 3.0.0
36
36
  requirement: *id001
37
37
  - !ruby/object:Gem::Dependency
38
- type: :runtime
39
38
  prerelease: false
40
39
  name: activesupport
40
+ type: :runtime
41
41
  version_requirements: &id002 !ruby/object:Gem::Requirement
42
42
  none: false
43
43
  requirements:
@@ -51,9 +51,9 @@ dependencies:
51
51
  version: 3.0.0
52
52
  requirement: *id002
53
53
  - !ruby/object:Gem::Dependency
54
- type: :runtime
55
54
  prerelease: false
56
55
  name: rest-client
56
+ type: :runtime
57
57
  version_requirements: &id003 !ruby/object:Gem::Requirement
58
58
  none: false
59
59
  requirements:
@@ -67,9 +67,9 @@ dependencies:
67
67
  version: 1.6.1
68
68
  requirement: *id003
69
69
  - !ruby/object:Gem::Dependency
70
- type: :development
71
70
  prerelease: false
72
71
  name: bundler
72
+ type: :development
73
73
  version_requirements: &id004 !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
@@ -83,9 +83,9 @@ dependencies:
83
83
  version: 1.0.0
84
84
  requirement: *id004
85
85
  - !ruby/object:Gem::Dependency
86
- type: :development
87
86
  prerelease: false
88
87
  name: fakeweb
88
+ type: :development
89
89
  version_requirements: &id005 !ruby/object:Gem::Requirement
90
90
  none: false
91
91
  requirements:
@@ -99,9 +99,9 @@ dependencies:
99
99
  version: 1.3.0
100
100
  requirement: *id005
101
101
  - !ruby/object:Gem::Dependency
102
- type: :development
103
102
  prerelease: false
104
103
  name: jeweler
104
+ type: :development
105
105
  version_requirements: &id006 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
@@ -115,9 +115,9 @@ dependencies:
115
115
  version: 1.5.2
116
116
  requirement: *id006
117
117
  - !ruby/object:Gem::Dependency
118
- type: :development
119
118
  prerelease: false
120
119
  name: rcov
120
+ type: :development
121
121
  version_requirements: &id007 !ruby/object:Gem::Requirement
122
122
  none: false
123
123
  requirements:
@@ -129,9 +129,9 @@ dependencies:
129
129
  version: "0"
130
130
  requirement: *id007
131
131
  - !ruby/object:Gem::Dependency
132
- type: :development
133
132
  prerelease: false
134
133
  name: rspec
134
+ type: :development
135
135
  version_requirements: &id008 !ruby/object:Gem::Requirement
136
136
  none: false
137
137
  requirements:
@@ -145,9 +145,9 @@ dependencies:
145
145
  version: 2.0.0
146
146
  requirement: *id008
147
147
  - !ruby/object:Gem::Dependency
148
- type: :development
149
148
  prerelease: false
150
149
  name: ruby-debug
150
+ type: :development
151
151
  version_requirements: &id009 !ruby/object:Gem::Requirement
152
152
  none: false
153
153
  requirements:
@@ -225,7 +225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
225
225
  requirements: []
226
226
 
227
227
  rubyforge_project:
228
- rubygems_version: 1.3.7
228
+ rubygems_version: 1.4.2
229
229
  signing_key:
230
230
  specification_version: 3
231
231
  summary: A Ruby library for managing local / remote JSON store