collection_json_serializer 0.0.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.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -0
  3. data/.travis.yml +7 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +137 -0
  7. data/Rakefile +10 -0
  8. data/collection_json_serializer.gemspec +26 -0
  9. data/lib/collection_json_serializer/builder.rb +56 -0
  10. data/lib/collection_json_serializer/core_ext/hash.rb +9 -0
  11. data/lib/collection_json_serializer/core_ext/symbol.rb +8 -0
  12. data/lib/collection_json_serializer/objects/item.rb +70 -0
  13. data/lib/collection_json_serializer/objects/template.rb +25 -0
  14. data/lib/collection_json_serializer/serializer.rb +71 -0
  15. data/lib/collection_json_serializer/support.rb +36 -0
  16. data/lib/collection_json_serializer/validator/url.rb +22 -0
  17. data/lib/collection_json_serializer/validator/value.rb +28 -0
  18. data/lib/collection_json_serializer/validator.rb +131 -0
  19. data/lib/collection_json_serializer/version.rb +5 -0
  20. data/lib/collection_json_serializer.rb +18 -0
  21. data/test/builder/builder_test.rb +157 -0
  22. data/test/fixtures/models.rb +3 -0
  23. data/test/fixtures/poro.rb +26 -0
  24. data/test/fixtures/serializers/custom_item_links_serializer.rb +7 -0
  25. data/test/fixtures/serializers/custom_item_serializer.rb +3 -0
  26. data/test/fixtures/serializers/custom_template_serializer.rb +5 -0
  27. data/test/fixtures/serializers/invalid_serializer.rb +4 -0
  28. data/test/fixtures/serializers/multiple_href_serializer.rb +3 -0
  29. data/test/fixtures/serializers/unknown_attribute_serializer.rb +3 -0
  30. data/test/fixtures/serializers/user_serializer.rb +7 -0
  31. data/test/fixtures/serializers/valid_serializer.rb +5 -0
  32. data/test/minitest_helper.rb +11 -0
  33. data/test/objects/item_test.rb +82 -0
  34. data/test/objects/template_test.rb +40 -0
  35. data/test/serializer/data_test.rb +29 -0
  36. data/test/serializer/href_test.rb +39 -0
  37. data/test/serializer/links_test.rb +23 -0
  38. data/test/serializer/template_test.rb +30 -0
  39. data/test/support/ext_test.rb +23 -0
  40. data/test/support/support_test.rb +29 -0
  41. data/test/validator/invalid_test.rb +138 -0
  42. data/test/validator/url_validator_test.rb +24 -0
  43. data/test/validator/validator_test.rb +64 -0
  44. data/test/validator/value_validator_test.rb +42 -0
  45. metadata +169 -0
@@ -0,0 +1,24 @@
1
+ require "minitest_helper"
2
+
3
+ module CollectionJson
4
+ class Serializer
5
+ class Validator
6
+ class Url
7
+ class TestUrl < Minitest::Test
8
+ def test_that_urls_validate
9
+ invalid = %w(
10
+ /hello
11
+ http:hello
12
+ )
13
+
14
+ invalid.each do |url|
15
+ value = Url.new(url)
16
+ refute value.valid?
17
+ assert value.invalid?
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,64 @@
1
+ require "minitest_helper"
2
+
3
+ module CollectionJson
4
+ class Serializer
5
+ class Validator
6
+ class TestValidator < Minitest::Test
7
+ def setup
8
+ @user = User.new(
9
+ name: "Carles Jove",
10
+ email: "hola@carlus.cat"
11
+ )
12
+ @account = Account.new(
13
+ id: 1,
14
+ name: "My Account",
15
+ created_at: Time.now
16
+ )
17
+ @user.account = @account
18
+
19
+ # Invalid
20
+ @invalid_serializer = InvalidSerializer.new(@user)
21
+ @invalid_resource = Validator.new @invalid_serializer
22
+
23
+ # Valid
24
+ @valid_serializer = ValidSerializer.new(@user)
25
+ @valid_resource = Validator.new @valid_serializer
26
+ end
27
+
28
+ def test_that_it_is_invalid
29
+ refute @invalid_resource.valid?
30
+ refute @invalid_serializer.valid?
31
+
32
+ assert @invalid_resource.invalid?
33
+ assert @invalid_serializer.invalid?
34
+
35
+ # test_that_there_is_an_errors_array
36
+ assert @invalid_resource.errors.any?
37
+ assert @invalid_serializer.errors.any?
38
+ assert_equal @invalid_resource.errors, @invalid_serializer.errors
39
+
40
+ # test_that_the_following_errors_exist
41
+ assert @invalid_resource.errors.include? :href
42
+ assert @invalid_resource.errors.include? :links
43
+ end
44
+
45
+ def test_that_it_is_valid
46
+ assert @valid_resource.valid?
47
+ assert @valid_serializer.valid?
48
+
49
+ refute @valid_resource.invalid?
50
+ refute @valid_serializer.invalid?
51
+
52
+ # test_that_there_is_an_errors_array
53
+ refute @valid_resource.errors.any?
54
+ refute @valid_serializer.errors.any?
55
+ assert_equal @valid_resource.errors, @valid_serializer.errors
56
+
57
+ # test_that_the_following_errors_exist
58
+ refute @valid_resource.errors.include? :href
59
+ refute @valid_resource.errors.include? :links
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,42 @@
1
+ require "minitest_helper"
2
+
3
+ module CollectionJson
4
+ class Serializer
5
+ class Validator
6
+ class Value
7
+ class TestValue < Minitest::Test
8
+ def test_that_values_validate
9
+ invalid = [
10
+ /regex/,
11
+ :symbol,
12
+ {},
13
+ []
14
+ ]
15
+
16
+ valid = [
17
+ "string",
18
+ 1,
19
+ 1.5,
20
+ -1,
21
+ true,
22
+ false,
23
+ nil
24
+ ]
25
+
26
+ invalid.each do |v|
27
+ value = Value.new(v)
28
+ refute value.valid?, "#{v} should be invalid, but was valid"
29
+ assert value.invalid?, "#{v} should be invalid, but was valid"
30
+ end
31
+
32
+ valid.each do |v|
33
+ value = Value.new(v)
34
+ assert value.valid?, "#{v} should be valid, but was invalid"
35
+ refute value.invalid?, "#{v} should be valid, but was invalid"
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
metadata ADDED
@@ -0,0 +1,169 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: collection_json_serializer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Carles Jove i Buxeda
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.7'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.7'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '5.4'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '5.4'
69
+ description: CollectionJson::Serializer makes it easy to serialize objects into the
70
+ Collection+JSON hypermedia type.
71
+ email:
72
+ - hola@carlus.cat
73
+ executables: []
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - ".gitignore"
78
+ - ".travis.yml"
79
+ - Gemfile
80
+ - LICENSE.txt
81
+ - README.md
82
+ - Rakefile
83
+ - collection_json_serializer.gemspec
84
+ - lib/collection_json_serializer.rb
85
+ - lib/collection_json_serializer/builder.rb
86
+ - lib/collection_json_serializer/core_ext/hash.rb
87
+ - lib/collection_json_serializer/core_ext/symbol.rb
88
+ - lib/collection_json_serializer/objects/item.rb
89
+ - lib/collection_json_serializer/objects/template.rb
90
+ - lib/collection_json_serializer/serializer.rb
91
+ - lib/collection_json_serializer/support.rb
92
+ - lib/collection_json_serializer/validator.rb
93
+ - lib/collection_json_serializer/validator/url.rb
94
+ - lib/collection_json_serializer/validator/value.rb
95
+ - lib/collection_json_serializer/version.rb
96
+ - test/builder/builder_test.rb
97
+ - test/fixtures/models.rb
98
+ - test/fixtures/poro.rb
99
+ - test/fixtures/serializers/custom_item_links_serializer.rb
100
+ - test/fixtures/serializers/custom_item_serializer.rb
101
+ - test/fixtures/serializers/custom_template_serializer.rb
102
+ - test/fixtures/serializers/invalid_serializer.rb
103
+ - test/fixtures/serializers/multiple_href_serializer.rb
104
+ - test/fixtures/serializers/unknown_attribute_serializer.rb
105
+ - test/fixtures/serializers/user_serializer.rb
106
+ - test/fixtures/serializers/valid_serializer.rb
107
+ - test/minitest_helper.rb
108
+ - test/objects/item_test.rb
109
+ - test/objects/template_test.rb
110
+ - test/serializer/data_test.rb
111
+ - test/serializer/href_test.rb
112
+ - test/serializer/links_test.rb
113
+ - test/serializer/template_test.rb
114
+ - test/support/ext_test.rb
115
+ - test/support/support_test.rb
116
+ - test/validator/invalid_test.rb
117
+ - test/validator/url_validator_test.rb
118
+ - test/validator/validator_test.rb
119
+ - test/validator/value_validator_test.rb
120
+ homepage: https://github.com/carlesjove/collection_json_serializer
121
+ licenses:
122
+ - MIT
123
+ metadata: {}
124
+ post_install_message:
125
+ rdoc_options: []
126
+ require_paths:
127
+ - lib
128
+ required_ruby_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ requirements: []
139
+ rubyforge_project:
140
+ rubygems_version: 2.2.2
141
+ signing_key:
142
+ specification_version: 4
143
+ summary: Serialize objects as Collection+JSON.
144
+ test_files:
145
+ - test/builder/builder_test.rb
146
+ - test/fixtures/models.rb
147
+ - test/fixtures/poro.rb
148
+ - test/fixtures/serializers/custom_item_links_serializer.rb
149
+ - test/fixtures/serializers/custom_item_serializer.rb
150
+ - test/fixtures/serializers/custom_template_serializer.rb
151
+ - test/fixtures/serializers/invalid_serializer.rb
152
+ - test/fixtures/serializers/multiple_href_serializer.rb
153
+ - test/fixtures/serializers/unknown_attribute_serializer.rb
154
+ - test/fixtures/serializers/user_serializer.rb
155
+ - test/fixtures/serializers/valid_serializer.rb
156
+ - test/minitest_helper.rb
157
+ - test/objects/item_test.rb
158
+ - test/objects/template_test.rb
159
+ - test/serializer/data_test.rb
160
+ - test/serializer/href_test.rb
161
+ - test/serializer/links_test.rb
162
+ - test/serializer/template_test.rb
163
+ - test/support/ext_test.rb
164
+ - test/support/support_test.rb
165
+ - test/validator/invalid_test.rb
166
+ - test/validator/url_validator_test.rb
167
+ - test/validator/validator_test.rb
168
+ - test/validator/value_validator_test.rb
169
+ has_rdoc: