awesome_print 1.9.2 → 2.0.0.pre
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.
- checksums.yaml +5 -5
- data/.gitignore +1 -1
- data/Appraisals +2 -33
- data/CHANGELOG.md +6 -15
- data/CONTRIBUTING.md +0 -1
- data/README.md +7 -49
- data/lib/ap.rb +1 -5
- data/lib/awesome_print.rb +7 -29
- data/lib/awesome_print/colorize.rb +2 -0
- data/lib/awesome_print/core_ext/active_support.rb +7 -0
- data/lib/awesome_print/core_ext/awesome_method_array.rb +0 -6
- data/lib/awesome_print/core_ext/class.rb +0 -5
- data/lib/awesome_print/core_ext/kernel.rb +0 -5
- data/lib/awesome_print/core_ext/logger.rb +0 -5
- data/lib/awesome_print/core_ext/object.rb +0 -5
- data/lib/awesome_print/core_ext/string.rb +0 -5
- data/lib/awesome_print/custom_defaults.rb +1 -1
- data/lib/awesome_print/formatter.rb +38 -106
- data/lib/awesome_print/formatters/array_formatter.rb +11 -8
- data/lib/awesome_print/formatters/base_formatter.rb +20 -53
- data/lib/awesome_print/formatters/bigdecimal_formatter.rb +20 -0
- data/lib/awesome_print/formatters/class_formatter.rb +5 -6
- data/lib/awesome_print/formatters/dir_formatter.rb +4 -6
- data/lib/awesome_print/formatters/ext/active_model_error_formatter.rb +44 -0
- data/lib/awesome_print/formatters/ext/active_record_attributeset_formatter.rb +27 -0
- data/lib/awesome_print/formatters/ext/active_record_class_formatter.rb +43 -0
- data/lib/awesome_print/formatters/ext/active_record_instance_formatter.rb +48 -0
- data/lib/awesome_print/formatters/ext/active_record_relation_formatter.rb +19 -0
- data/lib/awesome_print/formatters/ext/bson_objectid_formatter.rb +20 -0
- data/lib/awesome_print/formatters/ext/hash_with_indifferent_access_formatter.rb +20 -0
- data/lib/awesome_print/formatters/ext/mongoid_document_formatter.rb +59 -0
- data/lib/awesome_print/formatters/ext/nokogiri_document_formatter.rb +30 -0
- data/lib/awesome_print/formatters/ext/nokogiri_node_formatter.rb +29 -0
- data/lib/awesome_print/formatters/ext/nokogiri_nodeset_formatter.rb +32 -0
- data/lib/awesome_print/formatters/ext/sequel_dataset_formatter.rb +20 -0
- data/lib/awesome_print/formatters/ext/sequel_model_class_formatter.rb +25 -0
- data/lib/awesome_print/formatters/ext/sequel_model_formatter.rb +26 -0
- data/lib/awesome_print/formatters/ext/time_with_zone_formatter.rb +24 -0
- data/lib/awesome_print/formatters/fallback_formatter.rb +55 -0
- data/lib/awesome_print/formatters/false_class_formatter.rb +15 -0
- data/lib/awesome_print/formatters/file_formatter.rb +4 -6
- data/lib/awesome_print/formatters/hash_formatter.rb +12 -7
- data/lib/awesome_print/formatters/integer_formatter.rb +11 -0
- data/lib/awesome_print/formatters/method_formatter.rb +8 -6
- data/lib/awesome_print/formatters/module_formatter.rb +18 -0
- data/lib/awesome_print/formatters/nil_class_formatter.rb +19 -0
- data/lib/awesome_print/formatters/object_formatter.rb +19 -9
- data/lib/awesome_print/formatters/open_struct.rb +19 -0
- data/lib/awesome_print/formatters/range_formatter.rb +11 -0
- data/lib/awesome_print/formatters/rational_formatter.rb +15 -0
- data/lib/awesome_print/formatters/set_formatter.rb +19 -0
- data/lib/awesome_print/formatters/simple_formatter.rb +10 -8
- data/lib/awesome_print/formatters/string_formatter.rb +14 -0
- data/lib/awesome_print/formatters/struct_formatter.rb +8 -6
- data/lib/awesome_print/formatters/symbol_formatter.rb +18 -0
- data/lib/awesome_print/formatters/true_class_formatter.rb +15 -0
- data/lib/awesome_print/formatters/unbound_method_formatter.rb +15 -0
- data/lib/awesome_print/inspector.rb +18 -17
- data/lib/awesome_print/limiter.rb +63 -0
- data/lib/awesome_print/registrar.rb +20 -0
- data/lib/awesome_print/version.rb +6 -6
- data/spec/formatters/array_spec.rb +251 -0
- data/spec/formatters/big_decimal_spec.rb +28 -0
- data/spec/formatters/class_spec.rb +91 -0
- data/spec/formatters/dir_file_spec.rb +43 -0
- data/spec/{ext → formatters/ext}/active_record_spec.rb +14 -58
- data/spec/{ext → formatters/ext}/active_support_spec.rb +7 -11
- data/spec/{ext → formatters/ext}/mongoid_spec.rb +2 -2
- data/spec/{ext → formatters/ext}/nokogiri_spec.rb +0 -0
- data/spec/formatters/hash_spec.rb +284 -0
- data/spec/{methods_spec.rb → formatters/methods_spec.rb} +3 -5
- data/spec/{objects_spec.rb → formatters/objects_spec.rb} +0 -0
- data/spec/{ext → formatters}/ostruct_spec.rb +1 -0
- data/spec/formatters/set_spec.rb +49 -0
- data/spec/formatters/struct_spec.rb +61 -0
- data/spec/merge_options_spec.rb +13 -0
- data/spec/misc_spec.rb +3 -10
- data/spec/spec_helper.rb +2 -9
- data/spec/support/ext_verifier.rb +0 -15
- data/spec/support/mongoid_versions.rb +4 -8
- data/spec/support/rails_versions.rb +2 -32
- metadata +100 -78
- data/awesome_print.gemspec +0 -33
- data/init.rb +0 -1
- data/lib/awesome_print/core_ext/method.rb +0 -21
- data/lib/awesome_print/ext/action_view.rb +0 -22
- data/lib/awesome_print/ext/active_record.rb +0 -103
- data/lib/awesome_print/ext/active_support.rb +0 -47
- data/lib/awesome_print/ext/mongo_mapper.rb +0 -124
- data/lib/awesome_print/ext/mongoid.rb +0 -67
- data/lib/awesome_print/ext/nobrainer.rb +0 -52
- data/lib/awesome_print/ext/nokogiri.rb +0 -45
- data/lib/awesome_print/ext/ostruct.rb +0 -27
- data/lib/awesome_print/ext/ripple.rb +0 -71
- data/lib/awesome_print/ext/sequel.rb +0 -58
- data/spec/ext/action_view_spec.rb +0 -21
- data/spec/ext/mongo_mapper_spec.rb +0 -261
- data/spec/ext/nobrainer_spec.rb +0 -59
- data/spec/ext/ripple_spec.rb +0 -48
- data/spec/formats_spec.rb +0 -779
- data/spec/support/active_record_data/3_2_diana.txt +0 -24
- data/spec/support/active_record_data/3_2_diana_legacy.txt +0 -24
- data/spec/support/active_record_data/3_2_multi.txt +0 -50
- data/spec/support/active_record_data/3_2_multi_legacy.txt +0 -50
- data/spec/support/active_record_data/4_0_diana.txt +0 -98
- data/spec/support/active_record_data/4_0_multi.txt +0 -198
- data/spec/support/active_record_data/4_1_diana.txt +0 -97
- data/spec/support/active_record_data/4_1_multi.txt +0 -196
- data/spec/support/active_record_data/4_2_diana.txt +0 -109
- data/spec/support/active_record_data/4_2_diana_legacy.txt +0 -109
- data/spec/support/active_record_data/4_2_multi.txt +0 -220
- data/spec/support/active_record_data/4_2_multi_legacy.txt +0 -220
- data/spec/support/active_record_data/6_0_diana.txt +0 -104
- data/spec/support/active_record_data/6_0_multi.txt +0 -210
- data/spec/support/active_record_data/6_1_diana.txt +0 -109
- data/spec/support/active_record_data/6_1_multi.txt +0 -220
@@ -1,45 +0,0 @@
|
|
1
|
-
# Copyright (c) 2010-2016 Michael Dvorkin and contributors
|
2
|
-
#
|
3
|
-
# Awesome Print is freely distributable under the terms of MIT license.
|
4
|
-
# See LICENSE file or http://www.opensource.org/licenses/mit-license.php
|
5
|
-
#------------------------------------------------------------------------------
|
6
|
-
module AwesomePrint
|
7
|
-
module Nokogiri
|
8
|
-
|
9
|
-
def self.included(base)
|
10
|
-
base.send :alias_method, :cast_without_nokogiri, :cast
|
11
|
-
base.send :alias_method, :cast, :cast_with_nokogiri
|
12
|
-
end
|
13
|
-
|
14
|
-
# Add Nokogiri XML Node and NodeSet names to the dispatcher pipeline.
|
15
|
-
#------------------------------------------------------------------------------
|
16
|
-
def cast_with_nokogiri(object, type)
|
17
|
-
cast = cast_without_nokogiri(object, type)
|
18
|
-
if (defined?(::Nokogiri::XML::Node) && object.is_a?(::Nokogiri::XML::Node)) ||
|
19
|
-
(defined?(::Nokogiri::XML::NodeSet) && object.is_a?(::Nokogiri::XML::NodeSet))
|
20
|
-
cast = :nokogiri_xml_node
|
21
|
-
end
|
22
|
-
cast
|
23
|
-
end
|
24
|
-
|
25
|
-
#------------------------------------------------------------------------------
|
26
|
-
def awesome_nokogiri_xml_node(object)
|
27
|
-
if object.is_a?(::Nokogiri::XML::NodeSet) && object.empty?
|
28
|
-
return '[]'
|
29
|
-
end
|
30
|
-
xml = object.to_xml(indent: 2)
|
31
|
-
#
|
32
|
-
# Colorize tag, id/class name, and contents.
|
33
|
-
#
|
34
|
-
xml.gsub!(/(<)(\/?[A-Za-z1-9]+)/) { |tag| "#{$1}#{colorize($2, :keyword)}" }
|
35
|
-
xml.gsub!(/(id|class)="[^"]+"/i) { |id| colorize(id, :class) }
|
36
|
-
xml.gsub!(/>([^<]+)</) do |contents|
|
37
|
-
contents = colorize($1, :trueclass) if contents && !contents.empty?
|
38
|
-
">#{contents}<"
|
39
|
-
end
|
40
|
-
xml
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
AwesomePrint::Formatter.send(:include, AwesomePrint::Nokogiri)
|
@@ -1,27 +0,0 @@
|
|
1
|
-
# Copyright (c) 2010-2016 Michael Dvorkin and contributors
|
2
|
-
#
|
3
|
-
# Awesome Print is freely distributable under the terms of MIT license.
|
4
|
-
# See LICENSE file or http://www.opensource.org/licenses/mit-license.php
|
5
|
-
#------------------------------------------------------------------------------
|
6
|
-
module AwesomePrint
|
7
|
-
module OpenStruct
|
8
|
-
def self.included(base)
|
9
|
-
base.send :alias_method, :cast_without_ostruct, :cast
|
10
|
-
base.send :alias_method, :cast, :cast_with_ostruct
|
11
|
-
end
|
12
|
-
|
13
|
-
def cast_with_ostruct(object, type)
|
14
|
-
cast = cast_without_ostruct(object, type)
|
15
|
-
if (defined?(::OpenStruct)) && (object.is_a?(::OpenStruct))
|
16
|
-
cast = :open_struct_instance
|
17
|
-
end
|
18
|
-
cast
|
19
|
-
end
|
20
|
-
|
21
|
-
def awesome_open_struct_instance(object)
|
22
|
-
"#{object.class} #{awesome_hash(object.marshal_dump)}"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
AwesomePrint::Formatter.send(:include, AwesomePrint::OpenStruct)
|
@@ -1,71 +0,0 @@
|
|
1
|
-
# Copyright (c) 2010-2016 Michael Dvorkin and contributors
|
2
|
-
#
|
3
|
-
# Awesome Print is freely distributable under the terms of MIT license.
|
4
|
-
# See LICENSE file or http://www.opensource.org/licenses/mit-license.php
|
5
|
-
#------------------------------------------------------------------------------
|
6
|
-
module AwesomePrint
|
7
|
-
module Ripple
|
8
|
-
|
9
|
-
def self.included(base)
|
10
|
-
base.send :alias_method, :cast_without_ripple, :cast
|
11
|
-
base.send :alias_method, :cast, :cast_with_ripple
|
12
|
-
end
|
13
|
-
|
14
|
-
# Add Ripple class names to the dispatcher pipeline.
|
15
|
-
#------------------------------------------------------------------------------
|
16
|
-
def cast_with_ripple(object, type)
|
17
|
-
cast = cast_without_ripple(object, type)
|
18
|
-
return cast if !defined?(::Ripple)
|
19
|
-
|
20
|
-
if object.is_a?(::Ripple::AttributeMethods) # Module used to access attributes across documents and embedded documents
|
21
|
-
cast = :ripple_document_instance
|
22
|
-
elsif object.is_a?(::Ripple::Properties) # Used to access property metadata on Ripple classes
|
23
|
-
cast = :ripple_document_class
|
24
|
-
end
|
25
|
-
cast
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
# Format Ripple instance object.
|
31
|
-
#
|
32
|
-
# NOTE: by default only instance attributes are shown. To format a Ripple document instance
|
33
|
-
# as a regular object showing its instance variables and accessors use :raw => true option:
|
34
|
-
#
|
35
|
-
# ap document, :raw => true
|
36
|
-
#
|
37
|
-
#------------------------------------------------------------------------------
|
38
|
-
def awesome_ripple_document_instance(object)
|
39
|
-
return object.inspect if !defined?(::ActiveSupport::OrderedHash)
|
40
|
-
return awesome_object(object) if @options[:raw]
|
41
|
-
exclude_assoc = @options[:exclude_assoc] or @options[:exclude_associations]
|
42
|
-
|
43
|
-
data = object.attributes.inject(::ActiveSupport::OrderedHash.new) do |hash, (name, value)|
|
44
|
-
hash[name.to_sym] = object.send(name)
|
45
|
-
hash
|
46
|
-
end
|
47
|
-
|
48
|
-
unless exclude_assoc
|
49
|
-
data = object.class.embedded_associations.inject(data) do |hash, assoc|
|
50
|
-
hash[assoc.name] = object.get_proxy(assoc) # Should always be array or Ripple::EmbeddedDocument for embedded associations
|
51
|
-
hash
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
"#{object} " << awesome_hash(data)
|
56
|
-
end
|
57
|
-
|
58
|
-
# Format Ripple class object.
|
59
|
-
#------------------------------------------------------------------------------
|
60
|
-
def awesome_ripple_document_class(object)
|
61
|
-
return object.inspect if !defined?(::ActiveSupport::OrderedHash) || !object.respond_to?(:properties)
|
62
|
-
|
63
|
-
name = "class #{awesome_simple(object.to_s, :class)}"
|
64
|
-
base = "< #{awesome_simple(object.superclass.to_s, :class)}"
|
65
|
-
|
66
|
-
[name, base, awesome_hash(data)].join(' ')
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
AwesomePrint::Formatter.send(:include, AwesomePrint::Ripple)
|
@@ -1,58 +0,0 @@
|
|
1
|
-
# Copyright (c) 2010-2016 Michael Dvorkin and contributors
|
2
|
-
#
|
3
|
-
# Awesome Print is freely distributable under the terms of MIT license.
|
4
|
-
# See LICENSE file or http://www.opensource.org/licenses/mit-license.php
|
5
|
-
#------------------------------------------------------------------------------
|
6
|
-
module AwesomePrint
|
7
|
-
module Sequel
|
8
|
-
|
9
|
-
def self.included(base)
|
10
|
-
base.send :alias_method, :cast_without_sequel, :cast
|
11
|
-
base.send :alias_method, :cast, :cast_with_sequel
|
12
|
-
end
|
13
|
-
|
14
|
-
# Add Sequel class names to the dispatcher pipeline.
|
15
|
-
#------------------------------------------------------------------------------
|
16
|
-
def cast_with_sequel(object, type)
|
17
|
-
cast = cast_without_sequel(object, type)
|
18
|
-
if defined?(::Sequel::Model) && object.is_a?(::Sequel::Model)
|
19
|
-
cast = :sequel_document
|
20
|
-
elsif defined?(::Sequel::Model) && object.is_a?(Class) && object.ancestors.include?(::Sequel::Model)
|
21
|
-
cast = :sequel_model_class
|
22
|
-
elsif defined?(::Sequel::Mysql2::Dataset) && object.class.ancestors.include?(::Sequel::Mysql2::Dataset)
|
23
|
-
cast = :sequel_dataset
|
24
|
-
end
|
25
|
-
cast
|
26
|
-
end
|
27
|
-
|
28
|
-
# Format Sequel Document object.
|
29
|
-
#------------------------------------------------------------------------------
|
30
|
-
def awesome_sequel_document(object)
|
31
|
-
data = object.values.sort_by { |key| key.to_s }.inject({}) do |hash, c|
|
32
|
-
hash[c[0].to_sym] = c[1]
|
33
|
-
hash
|
34
|
-
end
|
35
|
-
data = { errors: object.errors, values: data } if !object.errors.empty?
|
36
|
-
"#{object} #{awesome_hash(data)}"
|
37
|
-
end
|
38
|
-
|
39
|
-
# Format Sequel Dataset object.
|
40
|
-
#------------------------------------------------------------------------------
|
41
|
-
def awesome_sequel_dataset(dataset)
|
42
|
-
[awesome_array(dataset.to_a), awesome_print(dataset.sql)].join("\n")
|
43
|
-
end
|
44
|
-
|
45
|
-
# Format Sequel Model class.
|
46
|
-
#------------------------------------------------------------------------------
|
47
|
-
def awesome_sequel_model_class(object)
|
48
|
-
data = object.db_schema.inject({}) { |h, (prop, defn)| h.merge(prop => defn[:db_type]) }
|
49
|
-
name = "class #{awesome_simple(object.to_s, :class)}"
|
50
|
-
base = "< #{awesome_simple(object.superclass.to_s, :class)}"
|
51
|
-
|
52
|
-
[name, base, awesome_hash(data)].join(' ')
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
57
|
-
|
58
|
-
AwesomePrint::Formatter.send(:include, AwesomePrint::Sequel)
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
RSpec.describe 'AwesomePrint ActionView extensions', skip: -> { !ExtVerifier.has_rails? }.call do
|
4
|
-
before do
|
5
|
-
@view = if rails_6_1?
|
6
|
-
ActionView::Base.new(ActionView::LookupContext.new([]), {}, {})
|
7
|
-
else
|
8
|
-
ActionView::Base.new
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
it "uses HTML and adds 'debug_dump' class to plain <pre> tag" do
|
13
|
-
markup = rand
|
14
|
-
expect(@view.ap(markup, plain: true)).to eq(%Q|<pre class="debug_dump">#{markup}</pre>|)
|
15
|
-
end
|
16
|
-
|
17
|
-
it "uses HTML and adds 'debug_dump' class to colorized <pre> tag" do
|
18
|
-
markup = ' &<hello>'
|
19
|
-
expect(@view.ap(markup)).to eq('<pre class="debug_dump"><kbd style="color:brown">" &<hello>"</kbd></pre>')
|
20
|
-
end
|
21
|
-
end
|
@@ -1,261 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
RSpec.describe 'AwesomePrint/MongoMapper', skip: -> { !ExtVerifier.has_mongo_mapper? }.call do
|
4
|
-
if ExtVerifier.has_mongo_mapper?
|
5
|
-
before :all do
|
6
|
-
class MongoUser
|
7
|
-
include MongoMapper::Document
|
8
|
-
|
9
|
-
key :first_name, String
|
10
|
-
key :last_name, String
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
after :all do
|
15
|
-
Object.instance_eval { remove_const :MongoUser }
|
16
|
-
Object.instance_eval { remove_const :Chamelion }
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
before do
|
21
|
-
@ap = AwesomePrint::Inspector.new(plain: true, sort_keys: true)
|
22
|
-
end
|
23
|
-
|
24
|
-
describe 'with the raw option set to true' do
|
25
|
-
# before { @ap.options[:raw] = true }
|
26
|
-
before { @ap = AwesomePrint::Inspector.new(plain: true, sort_keys: true, raw: true) }
|
27
|
-
|
28
|
-
it 'should print class instance' do
|
29
|
-
user = MongoUser.new(first_name: 'Al', last_name: 'Capone')
|
30
|
-
|
31
|
-
out = @ap.send(:awesome, user)
|
32
|
-
out.gsub!(/#\<Proc:.+?\>/, 'AWESOME_PRINT_PROC_STUB')
|
33
|
-
out.gsub!(/BSON::ObjectId\('[\da-f]+?'\)/, "BSON::ObjectId('123456789')")
|
34
|
-
|
35
|
-
str = if MongoMapper::Version >= '0.13'
|
36
|
-
<<-EOS.strip
|
37
|
-
#<MongoUser:placeholder_id
|
38
|
-
@__mm_default_keys = [
|
39
|
-
[0] #<MongoMapper::Plugins::Keys::Key:placeholder_id
|
40
|
-
@dynamic = false,
|
41
|
-
@embeddable = false,
|
42
|
-
@has_default = true,
|
43
|
-
@is_id = true,
|
44
|
-
@typecast = nil,
|
45
|
-
attr_accessor :accessors = [],
|
46
|
-
attr_accessor :default = AWESOME_PRINT_PROC_STUB,
|
47
|
-
attr_accessor :ivar = :@_id,
|
48
|
-
attr_accessor :name = "_id",
|
49
|
-
attr_accessor :options = {
|
50
|
-
:default => AWESOME_PRINT_PROC_STUB
|
51
|
-
},
|
52
|
-
attr_accessor :type = ObjectId < Object
|
53
|
-
>
|
54
|
-
],
|
55
|
-
@__mm_keys = {
|
56
|
-
"_id" => #<MongoMapper::Plugins::Keys::Key:placeholder_id
|
57
|
-
@dynamic = false,
|
58
|
-
@embeddable = false,
|
59
|
-
@has_default = true,
|
60
|
-
@is_id = true,
|
61
|
-
@typecast = nil,
|
62
|
-
attr_accessor :accessors = [],
|
63
|
-
attr_accessor :default = AWESOME_PRINT_PROC_STUB,
|
64
|
-
attr_accessor :ivar = :@_id,
|
65
|
-
attr_accessor :name = "_id",
|
66
|
-
attr_accessor :options = {
|
67
|
-
:default => AWESOME_PRINT_PROC_STUB
|
68
|
-
},
|
69
|
-
attr_accessor :type = ObjectId < Object
|
70
|
-
>,
|
71
|
-
"first_name" => #<MongoMapper::Plugins::Keys::Key:placeholder_id
|
72
|
-
@dynamic = false,
|
73
|
-
@embeddable = false,
|
74
|
-
@has_default = false,
|
75
|
-
@is_id = false,
|
76
|
-
@typecast = nil,
|
77
|
-
attr_accessor :accessors = [],
|
78
|
-
attr_accessor :ivar = :@first_name,
|
79
|
-
attr_accessor :name = "first_name",
|
80
|
-
attr_accessor :options = {},
|
81
|
-
attr_accessor :type = String < Object
|
82
|
-
>,
|
83
|
-
"last_name" => #<MongoMapper::Plugins::Keys::Key:placeholder_id
|
84
|
-
@dynamic = false,
|
85
|
-
@embeddable = false,
|
86
|
-
@has_default = false,
|
87
|
-
@is_id = false,
|
88
|
-
@typecast = nil,
|
89
|
-
attr_accessor :accessors = [],
|
90
|
-
attr_accessor :ivar = :@last_name,
|
91
|
-
attr_accessor :name = "last_name",
|
92
|
-
attr_accessor :options = {},
|
93
|
-
attr_accessor :type = String < Object
|
94
|
-
>
|
95
|
-
},
|
96
|
-
@__mm_pre_cast = {
|
97
|
-
"first_name" => "Al",
|
98
|
-
"last_name" => "Capone"
|
99
|
-
},
|
100
|
-
@_dynamic_attributes = {},
|
101
|
-
@_new = true,
|
102
|
-
attr_accessor :_id = BSON::ObjectId('123456789'),
|
103
|
-
attr_accessor :attributes = nil,
|
104
|
-
attr_accessor :first_name = "Al",
|
105
|
-
attr_accessor :last_name = "Capone",
|
106
|
-
attr_reader :changed_attributes = {
|
107
|
-
"first_name" => nil,
|
108
|
-
"last_name" => nil
|
109
|
-
}
|
110
|
-
>
|
111
|
-
EOS
|
112
|
-
else
|
113
|
-
<<-EOS.strip
|
114
|
-
#<MongoUser:placeholder_id
|
115
|
-
@_new = true,
|
116
|
-
attr_accessor :first_name = "Al",
|
117
|
-
attr_accessor :last_name = "Capone",
|
118
|
-
attr_reader :changed_attributes = {
|
119
|
-
"first_name" => nil,
|
120
|
-
"last_name" => nil
|
121
|
-
},
|
122
|
-
attr_reader :first_name_before_type_cast = "Al",
|
123
|
-
attr_reader :last_name_before_type_cast = "Capone"
|
124
|
-
>
|
125
|
-
EOS
|
126
|
-
end
|
127
|
-
expect(out).to be_similar_to(str)
|
128
|
-
end
|
129
|
-
|
130
|
-
it 'should print the class' do
|
131
|
-
expect(@ap.send(:awesome, MongoUser)).to eq <<-EOS.strip
|
132
|
-
class MongoUser < Object {
|
133
|
-
"_id" => :object_id,
|
134
|
-
"first_name" => :string,
|
135
|
-
"last_name" => :string
|
136
|
-
}
|
137
|
-
EOS
|
138
|
-
end
|
139
|
-
|
140
|
-
it 'should print the class when type is undefined' do
|
141
|
-
class Chamelion
|
142
|
-
include MongoMapper::Document
|
143
|
-
key :last_attribute
|
144
|
-
end
|
145
|
-
|
146
|
-
expect(@ap.send(:awesome, Chamelion)).to eq <<-EOS.strip
|
147
|
-
class Chamelion < Object {
|
148
|
-
"_id" => :object_id,
|
149
|
-
"last_attribute" => :undefined
|
150
|
-
}
|
151
|
-
EOS
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
describe 'with associations' do
|
156
|
-
|
157
|
-
if ExtVerifier.has_mongo_mapper?
|
158
|
-
before :all do
|
159
|
-
class Child
|
160
|
-
include MongoMapper::EmbeddedDocument
|
161
|
-
key :data
|
162
|
-
end
|
163
|
-
|
164
|
-
class Sibling
|
165
|
-
include MongoMapper::Document
|
166
|
-
key :title
|
167
|
-
end
|
168
|
-
|
169
|
-
class Parent
|
170
|
-
include MongoMapper::Document
|
171
|
-
key :name
|
172
|
-
|
173
|
-
one :child
|
174
|
-
one :sibling
|
175
|
-
end
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
describe 'with show associations turned off (default)' do
|
180
|
-
it 'should render the class as normal' do
|
181
|
-
expect(@ap.send(:awesome, Parent)).to eq <<-EOS.strip
|
182
|
-
class Parent < Object {
|
183
|
-
"_id" => :object_id,
|
184
|
-
"name" => :undefined
|
185
|
-
}
|
186
|
-
EOS
|
187
|
-
end
|
188
|
-
|
189
|
-
it 'should render an instance as normal' do
|
190
|
-
parent = Parent.new(name: 'test')
|
191
|
-
out = @ap.send(:awesome, parent)
|
192
|
-
str = <<-EOS.strip
|
193
|
-
#<Parent:placeholder_id> {
|
194
|
-
"_id" => placeholder_bson_id,
|
195
|
-
"name" => "test"
|
196
|
-
}
|
197
|
-
EOS
|
198
|
-
expect(out).to be_similar_to(str)
|
199
|
-
end
|
200
|
-
end
|
201
|
-
|
202
|
-
describe 'with show associations turned on and inline embedded turned off' do
|
203
|
-
before :each do
|
204
|
-
@ap = AwesomePrint::Inspector.new(plain: true, mongo_mapper: { show_associations: true })
|
205
|
-
end
|
206
|
-
|
207
|
-
it 'should render the class with associations shown' do
|
208
|
-
expect(@ap.send(:awesome, Parent)).to eq <<-EOS.strip
|
209
|
-
class Parent < Object {
|
210
|
-
"_id" => :object_id,
|
211
|
-
"name" => :undefined,
|
212
|
-
"child" => embeds one Child,
|
213
|
-
"sibling" => one Sibling
|
214
|
-
}
|
215
|
-
EOS
|
216
|
-
end
|
217
|
-
|
218
|
-
it 'should render an instance with associations shown' do
|
219
|
-
parent = Parent.new(name: 'test')
|
220
|
-
out = @ap.send(:awesome, parent)
|
221
|
-
str = <<-EOS.strip
|
222
|
-
#<Parent:placeholder_id> {
|
223
|
-
"_id" => placeholder_bson_id,
|
224
|
-
"name" => "test",
|
225
|
-
"child" => embeds one Child,
|
226
|
-
"sibling" => one Sibling
|
227
|
-
}
|
228
|
-
EOS
|
229
|
-
expect(out).to be_similar_to(str)
|
230
|
-
end
|
231
|
-
end
|
232
|
-
|
233
|
-
describe 'with show associations turned on and inline embedded turned on' do
|
234
|
-
before :each do
|
235
|
-
@ap = AwesomePrint::Inspector.new(plain: true,
|
236
|
-
mongo_mapper: {
|
237
|
-
show_associations: true,
|
238
|
-
inline_embedded: true
|
239
|
-
}
|
240
|
-
)
|
241
|
-
end
|
242
|
-
|
243
|
-
it 'should render an instance with associations shown and embeds there' do
|
244
|
-
parent = Parent.new(name: 'test', child: Child.new(data: 5))
|
245
|
-
out = @ap.send(:awesome, parent)
|
246
|
-
str = <<-EOS.strip
|
247
|
-
#<Parent:placeholder_id> {
|
248
|
-
"_id" => placeholder_bson_id,
|
249
|
-
"name" => "test",
|
250
|
-
"child" => embedded #<Child:placeholder_id> {
|
251
|
-
"_id" => placeholder_bson_id,
|
252
|
-
"data" => 5
|
253
|
-
},
|
254
|
-
"sibling" => one Sibling
|
255
|
-
}
|
256
|
-
EOS
|
257
|
-
expect(out).to be_similar_to(str)
|
258
|
-
end
|
259
|
-
end
|
260
|
-
end
|
261
|
-
end
|