test/model_test.rb in extjs-mvc-0.3.5 vs test/model_test.rb in extjs-mvc-0.3.6
- old
+ new
@@ -1,9 +1,18 @@
require 'test_helper'
+##
+# create a couple of related instances.
+#
+p = Person.create(:first => "Chris", :last => "Scott", :email => "chris@scott.com")
+u = User.create(:password => "1234", :person => p)
+
class BogusModel
include ExtJS::Model
+ def additional_attribute
+ 'computed value'
+ end
class << self
def extjs_allow_blank(col)
true
end
@@ -55,11 +64,11 @@
class ModelTest < Test::Unit::TestCase
context "Rendering DataReader configuration for Person and User" do
setup do
- clean_all
+ App.clean_all
end
should "Person and User should render a valid Reader config" do
reader = Person.extjs_record
assert reader.kind_of?(Hash) && reader.has_key?(:fields) && reader.has_key?(:idProperty)
@@ -85,11 +94,11 @@
end
context "A User with HABTM relationship with Group" do
setup do
- clean_all
+ App.clean_all
UserGroup.destroy_all
@user = User.first
UserGroup.create(:user => @user, :group => Group.create(:title => "Merb"))
UserGroup.create(:user => @user, :group => Group.create(:title => "Rails"))
@@ -101,11 +110,11 @@
end
end
context "A User with Person relationship: User.extjs_fields(:password, :person => [:first, {:last => {'sortDir' => 'ASC'}}])" do
setup do
- clean_all
+ App.clean_all
User.extjs_fields(:password, {:person => [:first, {:last => {:sortDir => "ASC"}}]})
@fields = User.extjs_record[:fields]
end
should "User should render a Reader with 4 total fields" do
@@ -141,11 +150,11 @@
end
end
context "User with standard Person association" do
setup do
- clean_all
+ App.clean_all
User.extjs_fields(:id, :password, :person)
end
should "produce a valid store config" do
fields = User.extjs_record[:fields]
assert_array_has_item(fields, 'has id') {|f| f[:name] === "id" }
@@ -166,11 +175,11 @@
end
end
context "Person with User association (has_one relationship)" do
setup do
- clean_all
+ App.clean_all
User.extjs_fields(:id, :password)
Person.extjs_fields(:id, :user)
end
should "produce a valid store config" do
fields = Person.extjs_record[:fields]
@@ -188,11 +197,11 @@
end
end
context "Person with User association (has_one/belongs_to relationship) cyclic reference" do
setup do
- clean_all
+ App.clean_all
User.extjs_fields(:id, :person)
Person.extjs_fields(:id, :user)
end
should "produce a valid store config for Person" do
fields = Person.extjs_record[:fields]
@@ -208,11 +217,11 @@
end
end
context "Fields should render with correct, ExtJS-compatible data-types" do
setup do
- clean_all
+ App.clean_all
@fields = DataType.extjs_record[:fields]
end
should "Understand 'string'" do
assert_array_has_item(@fields, 'has string_column with string') {|f| f[:name] == 'string_column' and f[:type] == 'string'}
@@ -246,11 +255,11 @@
end
end
context "polymorphic associations" do
setup do
- clean_all
+ App.clean_all
end
should "return nil as class for a polymorphic relation" do
assert_equal(nil, Address.extjs_associations[:addressable][:class])
end
@@ -283,11 +292,11 @@
end
end
context "single table inheritance" do
setup do
- clean_all
+ App.clean_all
end
should "fieldsets should be accessible from descendants" do
Location.extjs_fieldset :on_location, [:street]
fields = House.extjs_record(:on_location)[:fields]
@@ -401,9 +410,14 @@
assert_equal([{:name => :one}, {:name => :two}, {:name => :three}], @fields)
end
should "handle option :exclude" do
@fields = BogusModel.process_fields :exclude => [:two]
assert_equal([{:name => :one}, {:name => :three_id}], @fields)
+ end
+ should "handle option :additional" do
+ @fields = BogusModel.process_fields :additional => [:additional_attribute]
+ assert_equal([{:name => :one}, {:name => :two}, {:name => :three_id}, {:name => :additional_attribute}], @fields)
+
end
should "handle {:field => {:sortDir => 'ASC'}}" do
@fields = BogusModel.process_fields({:field => {:sortDir => 'ASC'}})
assert_equal([{:name => :field, :sortDir => 'ASC'}], @fields)
end