djsun-mongomapper 0.3.1 → 0.3.1.1

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.
@@ -50,7 +50,17 @@ module MongoMapper #:nodoc:
50
50
  # "created_at": "2006/08/01", "awesome": true,
51
51
  # "permalink": "1-konata-izumi"}
52
52
  def to_json(options = {})
53
- options.merge!(:methods => :id) unless options[:only]
53
+ unless options[:only]
54
+ o = options[:methods]
55
+ if o && o.is_a?(Array)
56
+ o << :id
57
+ elsif o
58
+ o = [o, :id]
59
+ else
60
+ o = :id
61
+ end
62
+ options[:methods] = o
63
+ end
54
64
  options.reverse_merge!(:except => :_id)
55
65
  if include_root_in_json
56
66
  "{#{self.class.json_class_name}: #{JsonSerializer.new(self, options).to_s}}"
data/mongomapper.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{mongomapper}
5
- s.version = "0.3.1"
5
+ s.version = "0.3.1.1"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["John Nunemaker"]
9
- s.date = %q{2009-08-04}
9
+ s.date = %q{2009-08-06}
10
10
  s.default_executable = %q{mmconsole}
11
11
  s.email = %q{nunemaker@gmail.com}
12
12
  s.executables = ["mmconsole"]
@@ -80,7 +80,7 @@ Gem::Specification.new do |s|
80
80
  s.rdoc_options = ["--charset=UTF-8"]
81
81
  s.require_paths = ["lib"]
82
82
  s.rubyforge_project = %q{mongomapper}
83
- s.rubygems_version = %q{1.3.4}
83
+ s.rubygems_version = %q{1.3.5}
84
84
  s.summary = %q{Awesome gem for modeling your domain and storing it in mongo}
85
85
  s.test_files = [
86
86
  "test/functional/associations/test_belongs_to_polymorphic_proxy.rb",
@@ -29,6 +29,7 @@ class JsonSerializationTest < Test::Unit::TestCase
29
29
  should "encode all encodable attributes" do
30
30
  json = @contact.to_json
31
31
 
32
+ assert_no_match %r{"_id"}, json
32
33
  assert_match %r{"name":"Konata Izumi"}, json
33
34
  assert_match %r{"age":16}, json
34
35
  assert json.include?(%("created_at":#{ActiveSupport::JSON.encode(Time.utc(2006, 8, 1))}))
@@ -39,6 +40,7 @@ class JsonSerializationTest < Test::Unit::TestCase
39
40
  should "allow attribute filtering with only" do
40
41
  json = @contact.to_json(:only => [:name, :age])
41
42
 
43
+ assert_no_match %r{"_id"}, json
42
44
  assert_match %r{"name":"Konata Izumi"}, json
43
45
  assert_match %r{"age":16}, json
44
46
  assert_no_match %r{"awesome"}, json
@@ -49,6 +51,7 @@ class JsonSerializationTest < Test::Unit::TestCase
49
51
  should "allow attribute filtering with except" do
50
52
  json = @contact.to_json(:except => [:name, :age])
51
53
 
54
+ assert_match %r{"_id"}, json
52
55
  assert_no_match %r{"name"}, json
53
56
  assert_no_match %r{"age"}, json
54
57
  assert_match %r{"awesome"}, json
@@ -62,14 +65,31 @@ class JsonSerializationTest < Test::Unit::TestCase
62
65
  def @contact.favorite_quote; "Constraints are liberating"; end
63
66
  end
64
67
 
65
- should "include single method" do
66
- assert_match %r{"label":"Has cheezburger"}, @contact.to_json(:only => :name, :methods => :label)
68
+ should "include label method" do
69
+ json = @contact.to_json(:methods => :label)
70
+ assert_match %r{"label":"Has cheezburger"}, json
71
+ end
72
+
73
+ should "include name and label method" do
74
+ json = @contact.to_json(:only => :name, :methods => :label)
75
+
76
+ assert_match %r{"label":"Has cheezburger"}, json
77
+ assert_match %r{"name":"Konata Izumi"}, json
78
+ assert_no_match %r{"age":16}, json
79
+ assert_no_match %r{"awesome"}, json
80
+ assert_no_match %r{"created_at"}, json
81
+ assert_no_match %r{"preferences"}, json
67
82
  end
68
83
 
69
84
  should "include multiple methods" do
70
85
  json = @contact.to_json(:only => :name, :methods => [:label, :favorite_quote])
71
86
  assert_match %r{"label":"Has cheezburger"}, json
72
87
  assert_match %r{"favorite_quote":"Constraints are liberating"}, json
88
+ assert_match %r{"name":"Konata Izumi"}, json
89
+ assert_no_match %r{"age":16}, json
90
+ assert_no_match %r{"awesome"}, json
91
+ assert_no_match %r{"created_at"}, json
92
+ assert_no_match %r{"preferences"}, json
73
93
  end
74
94
  end
75
95
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: djsun-mongomapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Nunemaker
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-08-04 00:00:00 -07:00
12
+ date: 2009-08-06 00:00:00 -07:00
13
13
  default_executable: mmconsole
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency