fixtures/rails4/test/functional/users_controller_test.rb in rabl-0.13.0 vs fixtures/rails4/test/functional/users_controller_test.rb in rabl-0.13.1

- old
+ new

@@ -1,87 +1 @@ -# Lives in <rabl>/test/integration/users_controller_test.rb -# Symlinked to fixture applications - -begin # Sinatra - require File.expand_path(File.dirname(__FILE__) + '/../../test_config.rb') -rescue LoadError # Rails - require File.expand_path(File.dirname(__FILE__) + '/../test_helper.rb') -end - -context "UsersController" do - helper(:json_output) { JSON.parse(last_response.body) } - - setup do - create_users! - end - - context "for index action" do - # Tests `collection @users` extending from 'show' template - - setup do - get "/users", format: :json - end - - # Attributes (regular) - asserts("contains user usernames") do - json_output.map { |u| u["user"]["username"] } - end.equals { @users.map(&:username) } - asserts("contains email") do - json_output.map { |u| u["user"]["email"] } - end.equals { @users.map(&:email) } - asserts("contains location") do - json_output.map { |u| u["user"]["location"] } - end.equals { @users.map(&:location) } - - # Attributes (custom name) - asserts("contains registered_at") do - json_output.map { |u| u["user"]["registered_at"] } - end.equals { @users.map(&:created_at).map { |t| t.iso8601(3) } } - - # Node (renders based on attribute) - asserts("contains role") do - json_output.map { |u| u["user"]["role"] } - end.equals ['normal', 'normal', 'admin'] - - # Child (custom collection name) - asserts("contains formatted phone numbers") do - json_output.map { |u| u["user"]["pnumbers"].map { |n| n["pnumber"]["formatted"] } } - end.equals { @users.map { |u| u.phone_numbers.map(&:formatted) } } - - # Node (renders collection partial) - asserts("contains reversed node numbers") do - json_output.map { |u| u["user"]["node_numbers"].map { |n| n["reversed"] } } - end.equals { @users.map { |u| u.phone_numbers.map(&:formatted).map(&:reverse) } } - end # index - - context "for show action" do - # Tests `object :user => :person` custom parent node name - setup do - get "/users/#{@user1.id}", format: :json - end - - # Attributes (regular) - asserts("contains username") { json_output["person"]["username"] }.equals { @user1.username } - asserts("contains email") { json_output["person"]["email"] }.equals { @user1.email } - asserts("contains location") { json_output["person"]["location"] }.equals { @user1.location } - # Attributes (custom name) - asserts("contains registered_at") { json_output["person"]["registered_at"] }.equals { @user1.created_at.iso8601(3) } - # Node (renders based on attribute) - asserts("contains role node") { json_output["person"]["role"] }.equals "normal" - - # Child (custom collection name) - asserts("contains first phone number") { - json_output["person"]["pnumbers"][0]["pnumber"]["formatted"] - }.equals { @user1.phone_numbers[0].formatted } - asserts("contains second phone number") { - json_output["person"]["pnumbers"][1]["pnumber"]["formatted"] - }.equals { @user1.phone_numbers[1].formatted } - - # Node (renders collection partial) - asserts("contains first node number") { - json_output["person"]["node_numbers"][0]["formatted"] - }.equals { @user1.phone_numbers[0].formatted } - asserts("contains second node number") { - json_output["person"]["node_numbers"][1]["formatted"] - }.equals { @user1.phone_numbers[1].formatted } - end # show -end \ No newline at end of file