test/unit/report_test.rb in xero_gateway-2.5.0 vs test/unit/report_test.rb in xero_gateway-2.6.0

- old
+ new

@@ -17,62 +17,88 @@ assert report.body.is_a? Array end end context :from_xml do - setup do - xml_response = get_file("reports/bank_statement.xml") - xml_response.gsub!(/\n +/,'') - xml_doc = REXML::Document.new(xml_response) - xpath_report = XPath.first(xml_doc, "//Report") - @report = XeroGateway::Report.from_xml(xpath_report) - end + context "with a bank statement report" do + setup do + @report = make_report_from_xml("bank_statement") + end - should "create a bank statement report" do - assert @report.is_a?(XeroGateway::Report) - assert_equal [], @report.errors - assert_equal Date.parse("27 May 2014"), @report.report_date - assert_equal "BankStatement", @report.report_id - assert_equal "Bank Statement", @report.report_name - expected_titles = ["Bank Statement", "Business Bank Account", "Demo Company (NZ)", "From 1 May 2014 to 27 May 2014"] - assert_equal expected_titles, @report.report_titles - assert_equal "BankStatement", @report.report_type - assert_equal Time.parse("2014-05-26 22:36:07 +0000").to_i, @report.updated_at.to_i - expected_names = { :column_1=>"Date", :column_2=>"Description", :column_3=>"Reference", :column_4=>"Reconciled", :column_5=>"Source", :column_6=>"Amount", :column_7=>"Balance" } - assert_equal expected_names, @report.column_names + should "create a bank statement report" do + assert @report.is_a?(XeroGateway::Report) + assert_equal [], @report.errors + assert_equal Date.parse("27 May 2014"), @report.report_date + assert_equal "BankStatement", @report.report_id + assert_equal "Bank Statement", @report.report_name + expected_titles = ["Bank Statement", "Business Bank Account", "Demo Company (NZ)", "From 1 May 2014 to 27 May 2014"] + assert_equal expected_titles, @report.report_titles + assert_equal "BankStatement", @report.report_type + assert_equal Time.parse("2014-05-26 22:36:07 +0000").to_i, @report.updated_at.to_i + expected_names = { :column_1=>"Date", :column_2=>"Description", :column_3=>"Reference", :column_4=>"Reconciled", :column_5=>"Source", :column_6=>"Amount", :column_7=>"Balance" } + assert_equal expected_names, @report.column_names - ### - # REPORT BODY - assert @report.body.is_a?(Array) + ### + # REPORT BODY + assert @report.body.is_a?(Array) - # First = Opening Balance - first_statement = @report.body.first - assert_equal "2014-05-01T00:00:00", first_statement.column_1 - assert_equal "Opening Balance", first_statement.column_2 - assert_equal nil, first_statement.column_3 - assert_equal nil, first_statement.column_4 - assert_equal nil, first_statement.column_5 - assert_equal nil, first_statement.column_6 - assert_equal "15461.97", first_statement.column_7 + # First = Opening Balance + first_statement = @report.body.first + assert_equal "2014-05-01T00:00:00", first_statement.date + assert_equal "Opening Balance", first_statement.description + assert_equal nil, first_statement.reference + assert_equal nil, first_statement.reconciled + assert_equal nil, first_statement.source + assert_equal nil, first_statement.amount + assert_equal "15461.97", first_statement.balance - # Second = Bank Transaction/Statement - second_statement = @report.body.second - assert_equal "2014-05-01T00:00:00", second_statement.column_1 - assert_equal "Ridgeway Banking Corporation", second_statement.column_2 - assert_equal "Fee", second_statement.column_3 - assert_equal "No", second_statement.column_4 - assert_equal "Import", second_statement.column_5 - assert_equal "-15.00", second_statement.column_6 - assert_equal "15446.97", second_statement.column_7 + # Second = Bank Transaction/Statement + second_statement = @report.body.second + assert_equal "2014-05-01T00:00:00", second_statement.date + assert_equal "Ridgeway Banking Corporation", second_statement.description + assert_equal "Fee", second_statement.reference + assert_equal "No", second_statement.reconciled + assert_equal "Import", second_statement.source + assert_equal "-15.00", second_statement.amount + assert_equal "15446.97", second_statement.balance - # Third - third_statement = @report.body.third - assert_equal nil, third_statement.column_2 # no description, but other attributes - assert_equal "Eft", third_statement.column_3 - assert_equal "No", third_statement.column_4 - assert_equal "Import", third_statement.column_5 - assert_equal "-15.75", third_statement.column_6 - assert_equal "15431.22", third_statement.column_7 + # Third + third_statement = @report.body.third + assert_equal nil, third_statement.description.value # no description, but other attributes + assert_equal "Eft", third_statement.reference + assert_equal "No", third_statement.reconciled + assert_equal "Import", third_statement.source + assert_equal "-15.75", third_statement.amount + assert_equal "15431.22", third_statement.balance + end end + + context "with a trial balance report" do + setup do + @report = make_report_from_xml("trial_balance") + end + + should "set attributes on individual cells" do + first_statement = @report.body.first + assert_equal "Sales (200)", first_statement.account.value + assert_equal({ account: "7d05a53d-613d-4eb2-a2fc-dcb6adb80b80" }, first_statement.account.attributes) + end + + should "have all rows and section titles" do + assert_equal 15, @report.rows.length + assert_equal %w(Revenue Expenses Assets Liabilities Equity), @report.rows.map(&:section_name).uniq.compact + end + end + + end + + private + + def make_report_from_xml(report_name = "bank_statement") + xml_response = get_file("reports/#{report_name}.xml") + xml_response.gsub!(/\n +/,'') + xml_doc = REXML::Document.new(xml_response) + xpath_report = XPath.first(xml_doc, "//Report") + XeroGateway::Report.from_xml(xpath_report) end end