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