spec/osm/model_spec.rb in osm-0.1.17 vs spec/osm/model_spec.rb in osm-0.2.0
- old
+ new
@@ -3,10 +3,13 @@
describe "Model" do
class ModelTester < Osm::Model
+ attribute :test_attribute
+ attr_accessible :test_attribute
+
def self.test_get_config
{
:cache => @@cache,
:prepend_to_key => @@cache_prepend,
:ttl => @@cache_ttl,
@@ -14,10 +17,15 @@
end
def self.cache(method, *options)
self.send("cache_#{method}", *options)
end
+
+ def self.test_get_all(api, keys, key)
+ ids = cache_read(api, keys)
+ return get_from_ids(api, ids, key, {}, :get_all)
+ end
end
it "Create" do
model = Osm::Model.new
@@ -90,51 +98,37 @@
end
end
- describe "Get User Permissions" do
+ describe "Get items from ids" do
- it "From cache" do
- permissions = {1 => {:a => [:read, :write]}, 2 => {:a => [:read]}}
- OsmTest::Cache.should_receive('exist?').with('OSMAPI-osm-permissions-user_id') { true }
- OsmTest::Cache.should_receive('read').with('OSMAPI-osm-permissions-user_id') { permissions }
- ModelTester.get_user_permissions(@api).should == permissions
+ it "All items in cache" do
+ OsmTest::Cache.write('OSMAPI-osm-items', [1, 2])
+ OsmTest::Cache.write('OSMAPI-osm-item-1', '1')
+ OsmTest::Cache.write('OSMAPI-osm-item-2', '2')
+ ModelTester.test_get_all(@api, 'items', 'item').should == ['1', '2']
end
-
- it "From API" do
- permissions = {1 => {:a => [:read, :write]}, 2 => {:a => [:read]}}
- OsmTest::Cache.should_receive('exist?').with('OSMAPI-osm-permissions-user_id') { false }
- Osm::Section.should_receive('fetch_user_permissions').with(@api) { permissions }
- ModelTester.get_user_permissions(@api).should == permissions
+
+ it "An item not in cache" do
+ OsmTest::Cache.write('OSMAPI-osm-items', [1, 2])
+ OsmTest::Cache.write('OSMAPI-osm-item-1', '1')
+ ModelTester.stub(:get_all) { ['A', 'B'] }
+ ModelTester.test_get_all(@api, 'items', 'item').should == ['A', 'B']
end
- it "Single section" do
- permissions = {1 => {:a => [:read, :write]}, 2 => {:a => [:read]}}
- OsmTest::Cache.should_receive('exist?').with('OSMAPI-osm-permissions-user_id').twice { true }
- OsmTest::Cache.should_receive('read').with('OSMAPI-osm-permissions-user_id').twice { permissions }
- ModelTester.get_user_permissions(@api, 1).should == permissions[1]
- ModelTester.get_user_permissions(@api, 2).should == permissions[2]
- end
-
end
- describe "Set User Permissions" do
+ describe "Track attribute changes" do
+ test = ModelTester.new(:test_attribute => 1)
+ test.test_attribute.should == 1
+ test.changed_attributes.should == []
- it "All Sections" do
- permissions = {1 => {:a => [:read, :write]}, 2 => {:a => [:read]}}
- OsmTest::Cache.should_receive('write').with('OSMAPI-osm-permissions-user_id', permissions, {:expires_in=>600}) { true }
- ModelTester.set_user_permissions(@api, permissions)
- end
+ test.test_attribute = 2
+ test.changed_attributes.should == ['test_attribute']
- it "Single section" do
- permissions = {1 => {:a => [:read, :write]}, 2 => {:a => [:read]}}
- OsmTest::Cache.should_receive('exist?').with('OSMAPI-osm-permissions-user_id') { true }
- OsmTest::Cache.should_receive('read').with('OSMAPI-osm-permissions-user_id') { permissions }
- OsmTest::Cache.should_receive('write').with('OSMAPI-osm-permissions-user_id', permissions.merge(3 => {:a => [:read]}), {:expires_in=>600}) { true }
- ModelTester.set_user_permissions(@api, 3, {:a => [:read]})
- end
-
+ test.reset_changed_attributes
+ test.changed_attributes.should == []
end
end