spec/netsuite/utilities/roles_spec.rb in netsuite-0.7.2 vs spec/netsuite/utilities/roles_spec.rb in netsuite-0.7.3
- old
+ new
@@ -1,97 +1,144 @@
require 'spec_helper'
describe NetSuite::Rest::Utilities::Roles do
- subject { described_class }
describe '#get' do
+ subject { described_class }
it { is_expected.to respond_to :get }
it 'invokes the request module' do
expect( NetSuite::Rest::Utilities::Request ).to receive(:get)
- subject.get('jimbob@netzero.com', 'pickles')
+ subject.get(email: 'jimbob@netzero.com', password: 'pickles')
end
it 'formats the API response if successful' do
allow( NetSuite::Rest::Utilities::Request ).to receive(:get).and_return(
["200", {parsed: :response}]
)
expect( subject ).to receive(:format_response).with({parsed: :response}).and_return nil
- subject.get('jimbob@netzero.com', 'pickles')
+ subject.get(email: 'jimbob@netzero.com', password: 'pickles')
end
it 'returns the full error message if unsuccessful' do
allow( NetSuite::Rest::Utilities::Request ).to receive(:get).and_return(
["500", {oh: :no!}]
)
expect( subject ).to_not receive(:format_reponse)
- expect( subject.get('jimbob@netzero.com', 'pickles') ).to eq({oh: :no!})
+ expect( subject.get(email: 'jimbob@netzero.com', password: 'pickles') ).to eq({oh: :no!})
end
end
describe '#format_response' do
+ subject { described_class.send(:format_response, parsed) }
+
let(:parsed) do
[
{
"account"=>{
"internalId"=>"TSTDRV15",
"name"=>"Honeycomb Mfg SDN (Leading)"},
"role"=>{
- "internalId"=>3,
- "name"=>"Administrator"},
- "dataCenterURLs"=>{
- "webservicesDomain"=>"https://webservices.na1.netsuite.com",
- "restDomain"=>"https://rest.na1.netsuite.com",
- "systemDomain"=>"https://system.na1.netsuite.com"}
+ "internalId"=>3,
+ "name"=>"Administrator"},
+ "dataCenterURLs"=>{
+ "webservicesDomain"=>"https://webservices.na1.netsuite.com",
+ "restDomain"=>"https://rest.na1.netsuite.com",
+ "systemDomain"=>"https://system.na1.netsuite.com"}
},
{
"account"=>{
"internalId"=>"TSTDRV15",
"name"=>"Honeycomb Mfg SDN (Leading)"},
"role"=>{
- "internalId"=>1,
- "name"=>"Accountant"},
- "dataCenterURLs"=>{
- "webservicesDomain"=>"https://webservices.na1.netsuite.com",
- "restDomain"=>"https://rest.na1.netsuite.com",
- "systemDomain"=>"https://system.na1.netsuite.com"}
+ "internalId"=>1,
+ "name"=>"Accountant"},
+ "dataCenterURLs"=>{
+ "webservicesDomain"=>"https://webservices.na1.netsuite.com",
+ "restDomain"=>"https://rest.na1.netsuite.com",
+ "systemDomain"=>"https://system.na1.netsuite.com"}
},
{
"account"=>{
"internalId"=>"TSTDRV14",
"name"=>"Honeycomb Mfg SDN (Leading)"},
"role"=>{
- "internalId"=>1,
- "name"=>"Accountant"},
- "dataCenterURLs"=>{
- "webservicesDomain"=>"https://webservices.na1.netsuite.com",
- "restDomain"=>"https://rest.na1.netsuite.com",
- "systemDomain"=>"https://system.na1.netsuite.com"}
+ "internalId"=>1,
+ "name"=>"Accountant"},
+ "dataCenterURLs"=>{
+ "webservicesDomain"=>"https://webservices.netsuite.com",
+ "restDomain"=>"https://rest.netsuite.com",
+ "systemDomain"=>"https://system.netsuite.com"}
},
]
end
- it 'pulls out the account_ids' do
- expect(
- subject.send(:format_response, parsed).fetch(:accounts)
- ).to eq ["TSTDRV15","TSTDRV14"]
+ it 'groups by uniq account ids' do
+ expect( subject.count ).to eq 2
end
- it 'pulls out the role_ids' do
- expect(
- subject.send(:format_response, parsed).fetch(:roles)
- ).to eq [3, 1]
+ it 'returns the account name and id' do
+ expect( subject.first ).to be_a Hash
+ expect( subject.first[:account_id] ).to be_a String
+ expect( subject.first[:account_name] ).to be_a String
end
- it 'pulls out the wsdls' do
- expect(
- subject.send(:format_response, parsed).fetch(:wsdls)
- ).to eq ["https://webservices.na1.netsuite.com"]
+ it 'returns the account roles' do
+ expect( subject.first[:roles] ).to be_an Array
+ expect( subject.first[:roles].first ).to be_a Hash
+ expect( subject.first[:roles].first[:id] ).to be_an Integer
+ expect( subject.first[:roles].first[:name] ).to be_a String
end
+ it 'returns the wsdls' do
+ expect( subject.first[:wsdls] ).to be_a Hash
+ expect( subject.first[:wsdls][:webservices] ).to be_an Array
+ expect( subject.first[:wsdls][:rest] ).to be_an Array
+ expect( subject.first[:wsdls][:system] ).to be_an Array
+ end
+
+ it 'parses correctly' do
+ expect(subject).to eq(
+ [
+ { account_id: 'TSTDRV15',
+ account_name: 'Honeycomb Mfg SDN (Leading)',
+ roles: [
+ {
+ id: 3,
+ name: 'Administrator'
+ },
+ {
+ id: 1,
+ name: 'Accountant'
+ }
+ ],
+ wsdls: {
+ webservices: ["https://webservices.na1.netsuite.com"],
+ rest: ["https://rest.na1.netsuite.com"],
+ system: ["https://system.na1.netsuite.com"]
+ }
+ },
+ { account_id: 'TSTDRV14',
+ account_name: 'Honeycomb Mfg SDN (Leading)',
+ roles: [
+ {
+ id: 1,
+ name: 'Accountant'
+ }
+ ],
+ wsdls: {
+ webservices: ["https://webservices.netsuite.com"],
+ rest: ["https://rest.netsuite.com"],
+ system: ["https://system.netsuite.com"]
+ }
+ }
+ ]
+ )
+ end
+
it 'handles an empty response body' do
expect{
- subject.send(:format_response, [])
+ described_class.send(:format_response, [])
}.to_not raise_error
end
end
end