From b95b241302dd54a834f68ef762f4ffa803836973 Mon Sep 17 00:00:00 2001
From: Mauricio Giacomini Girardello <mauriciogiacomini4@gmail.com>
Date: Thu, 19 Nov 2015 10:29:59 -0200
Subject: [PATCH] serializing complaint model for orientdb

---
 app/models/complaint.rb       |  9 ++++++--
 test/models/complaint_test.rb | 41 +++++++++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+), 2 deletions(-)
 create mode 100644 test/models/complaint_test.rb

diff --git a/app/models/complaint.rb b/app/models/complaint.rb
index f5815c16..b87bc2ab 100644
--- a/app/models/complaint.rb
+++ b/app/models/complaint.rb
@@ -1,8 +1,9 @@
 class Complaint
   include ActiveModel::Model
+  include OrientDbSerializable
 
-  attr_accessor :user,:object,:message,:description
-  validates_presence_of :user,:object,:message
+  attr_accessor :user, :object, :message, :description
+  validates_presence_of :user, :object, :message
 
   def self.copyrights
     ComplaintMessage.new("Objeto viola direitos autorais")
@@ -19,4 +20,8 @@ class Complaint
   def self.fake_user
     ComplaintMessage.new "Usuário falso"
   end
+
+  def to_orientdb_hash
+    super.merge("user" => @user.rid, "object" => @object.id, "message" => @message.to_s)
+  end
 end
diff --git a/test/models/complaint_test.rb b/test/models/complaint_test.rb
new file mode 100644
index 00000000..7c4d13ca
--- /dev/null
+++ b/test/models/complaint_test.rb
@@ -0,0 +1,41 @@
+require 'test_helper'
+
+class ComplaintTest < ActiveSupport::TestCase
+  should validate_presence_of :user
+  should validate_presence_of :object
+  should validate_presence_of :message
+
+  test 'serialize for orientdb' do
+    complaint = Complaint.new(
+        user: User.new(rid: '#14:15'),
+        object: LearningObject.new(id: '#16:43'),
+        message: Complaint.copyrights,
+        description: 'teste'
+    )
+
+    expected_hash = {"@class" => "Complaint", "user" => complaint.user.rid, "object" => complaint.object.id, "description" => complaint.description, "message" => complaint.message.to_s}
+    assert_equal(expected_hash, complaint.to_orientdb_hash)
+  end
+
+  test 'should returns copyright message' do
+    assert_complaint_message Complaint.copyrights
+  end
+
+  test 'should returns ofensive content message' do
+    assert_complaint_message Complaint.ofensive_content
+  end
+
+  test 'should returns ofensive user message' do
+    assert_complaint_message Complaint.ofensive_user
+  end
+
+  test 'should returns fake user message' do
+    assert_complaint_message Complaint.fake_user
+  end
+
+  private
+
+  def assert_complaint_message(complaint_message)
+    assert_instance_of ComplaintMessage, complaint_message
+  end
+end
-- 
GitLab