collection_json_serializer 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: