Lead by example: lint PORO model

This commit is contained in:
Benjamin Fleischer 2015-08-17 15:13:44 -05:00
parent e7d3323d23
commit dca286b0ec
3 changed files with 23 additions and 7 deletions

View File

@ -106,7 +106,7 @@ module ActiveModel::Serializer::Lint
private
def resource
@resource
@resource or fail "'@resource' must be set as the linted object"
end
def assert_instance_of(result, name)

19
test/fixtures/poro.rb vendored
View File

@ -13,12 +13,8 @@ class Model
"#{self.class.name.downcase}/#{self.id}-#{self.updated_at.strftime("%Y%m%d%H%M%S%9N")}"
end
def cache_key_with_digest
"#{cache_key}/#{FILE_DIGEST}"
end
def updated_at
@attributes[:updated_at] ||= DateTime.now.to_time
def serializable_hash(options = nil)
@attributes
end
def read_attribute_for_serialization(name)
@ -33,6 +29,9 @@ class Model
@attributes[:id] || @attributes['id'] || object_id
end
### Helper methods, not required to be serializable
#
# Convenience for adding @attributes readers and writers
def method_missing(meth, *args)
if meth.to_s =~ /^(.*)=$/
@attributes[$1.to_sym] = args[0]
@ -42,6 +41,14 @@ class Model
super
end
end
def cache_key_with_digest
"#{cache_key}/#{FILE_DIGEST}"
end
def updated_at
@attributes[:updated_at] ||= DateTime.now.to_time
end
end
class Profile < Model

9
test/poro_test.rb Normal file
View File

@ -0,0 +1,9 @@
require 'test_helper'
class PoroTest < Minitest::Test
include ActiveModel::Serializer::Lint::Tests
def setup
@resource = Model.new
end
end