Commit 81746da

mo <mo.khan@gmail.com>
2018-12-26 19:02:21
use jbuilder template
1 parent 35f0ea6
lib/scim/kit/v2/templates/attribute_type.json.jbuilder
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+json.description description
+json.multiValued multi_valued
+json.mutability mutability
+json.name name
+json.required required
+json.returned returned
+json.type type
+json.uniqueness uniqueness
+json.caseExact(case_exact) if string? || reference?
+json.referenceTypes(reference_types) if reference?
+if complex?
+  json.subAttributes @attributes do |attribute|
+    Scim::Kit::Template.new(attribute).to_json(json: json)
+  end
+end
lib/scim/kit/v2/templates/schema.json.jbuilder
@@ -7,4 +7,6 @@ json.meta do
   json.resourceType 'Schema'
   json.location location
 end
-json.attributes attributes.map(&:to_h)
+json.attributes attributes do |attribute|
+  Scim::Kit::Template.new(attribute).to_json(json: json)
+end
lib/scim/kit/v2/attribute_type.rb
@@ -58,21 +58,12 @@ module Scim
           @attributes << attribute
         end
 
+        def to_json
+          Template.new(self).to_json
+        end
+
         def to_h
-          result = {
-            description: description,
-            multiValued: multi_valued,
-            mutability: mutability,
-            name: name,
-            required: required,
-            returned: returned,
-            type: type.to_s,
-            uniqueness: uniqueness
-          }
-          result[:caseExact] = case_exact if string? || reference?
-          result[:referenceTypes] = reference_types if reference?
-          result[:subAttributes] = @attributes.map(&:to_h) if complex?
-          result
+          JSON.parse(to_json, symbolize_names: true)
         end
 
         private
lib/scim/kit.rb
@@ -1,4 +1,5 @@
 # frozen_string_literal: true
+
 require 'tilt'
 require 'tilt/jbuilder'
 
spec/spec_helper.rb
@@ -4,6 +4,7 @@ require 'bundler/setup'
 require 'scim/kit'
 require 'ffaker'
 require 'json'
+require 'byebug'
 
 RSpec.configure do |config|
   # Enable flags like --only-failures and --next-failure
.gitignore
@@ -10,3 +10,4 @@
 # rspec failure tracking
 .rspec_status
 Gemfile.lock
+.byebug_history
scim-kit.gemspec
@@ -32,6 +32,7 @@ Gem::Specification.new do |spec|
   spec.add_dependency 'tilt-jbuilder', '~> 0.7'
   spec.add_development_dependency 'bundler', '~> 1.17'
   spec.add_development_dependency 'bundler-audit', '~> 0.6'
+  spec.add_development_dependency 'byebug'
   spec.add_development_dependency 'ffaker', '~> 2.7'
   spec.add_development_dependency 'rake', '~> 10.0'
   spec.add_development_dependency 'rspec', '~> 3.0'