Commit b66449b

mo <mo.khan@gmail.com>
2018-01-14 20:15:33
add builder spec.
1 parent e2d3ff4
Changed files (4)
lib
scim
spec
lib/scim/shady/builders/resource.rb
@@ -14,8 +14,8 @@ module Scim
             'id' => id,
             'meta' => {
               'resourceType' => self.class.name.split(/::/).last,
-              'created' => created_at.utc.iso8601,
-              'lastModified' => updated_at.utc.iso8601,
+              'created' => created_at.to_time.utc.iso8601,
+              'lastModified' => updated_at.to_time.utc.iso8601,
               'location' => location,
               'version' => version,
             },
lib/scim/shady/resource.rb
@@ -26,13 +26,12 @@ module Scim
       end
 
       def to_h
-        JSON.parse(to_json)
+        @json_hash ||= JSON.parse(to_json)
       end
 
       def to_json
         @json
       end
-
     end
   end
 end
spec/scim/builders/user_spec.rb
@@ -0,0 +1,29 @@
+RSpec.describe Scim::Shady::Builders::User do
+  subject { described_class.new }
+
+  describe ".build" do
+    let(:id) { SecureRandom.uuid }
+    let(:created_at) { Time.now }
+    let(:updated_at) { Time.now }
+    let(:user_url) { FFaker::Internet.uri("https") }
+    let(:user_version) { SecureRandom.uuid }
+    let(:username) { FFaker::Internet.user_name }
+
+    it 'builds a scim user' do
+      subject.id = id
+      subject.username = username
+      subject.created_at = created_at
+      subject.updated_at = updated_at
+      subject.location = user_url
+      subject.version = user_version
+      result = subject.build
+
+      expect(result.id).to eql(id)
+      expect(result.username).to eql(username)
+      expect(result.created).to eql(DateTime.parse(created_at.utc.iso8601))
+      expect(result.last_modified).to eql(DateTime.parse(updated_at.utc.iso8601))
+      expect(result.version).to eql(user_version)
+      expect(result.location).to eql(user_url)
+    end
+  end
+end
spec/scim/user_spec.rb
@@ -30,7 +30,7 @@ RSpec.describe Scim::Shady::User do
     end
   end
 
-  describe ".build_json" do
+  describe ".to_json" do
     subject { described_class }
 
     it 'produces valid json' do