16 changed files with 106 additions and 32 deletions
@ -1,6 +1,6 @@ |
|||||||
module Constants::Organisation |
module Constants::Organisation |
||||||
ORG_TYPE = { |
PROVIDER_TYPE = { |
||||||
"LA" => 1, |
LA: 1, |
||||||
"PRP" => 2, |
PRP: 2, |
||||||
}.freeze |
}.freeze |
||||||
end |
end |
||||||
|
@ -1,7 +1,7 @@ |
|||||||
module Constants::User |
module Constants::User |
||||||
ROLES = { |
ROLES = { |
||||||
"data_accessor" => 0, |
data_accessor: 0, |
||||||
"data_provider" => 1, |
data_provider: 1, |
||||||
"data_coordinator" => 2, |
data_coordinator: 2, |
||||||
}.freeze |
}.freeze |
||||||
end |
end |
||||||
|
@ -0,0 +1,13 @@ |
|||||||
|
class AdditionalUserFields2 < ActiveRecord::Migration[7.0] |
||||||
|
def up |
||||||
|
change_table :users, bulk: true do |t| |
||||||
|
t.column :phone, :string |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
def down |
||||||
|
change_table :users, bulk: true do |t| |
||||||
|
t.remove :phone |
||||||
|
end |
||||||
|
end |
||||||
|
end |
@ -0,0 +1,9 @@ |
|||||||
|
class RenameProviderType < ActiveRecord::Migration[7.0] |
||||||
|
def up |
||||||
|
rename_column :organisations, :providertype, :provider_type |
||||||
|
end |
||||||
|
|
||||||
|
def down |
||||||
|
rename_column :organisations, :provider_type, :providertype |
||||||
|
end |
||||||
|
end |
@ -0,0 +1,13 @@ |
|||||||
|
<user:user xmlns:user="dclg:user"> |
||||||
|
<user:id>fc7625a02b24ae16162aa63ae7cb33feeec0c373</user:id> |
||||||
|
<user:password>xxx</user:password> |
||||||
|
<user:full-name>John Doe</user:full-name> |
||||||
|
<user:user-name>john.doe@gov.uk</user:user-name> |
||||||
|
<user:institution>7c5bd5fb549c09a2c55d7cb90d7ba84927e64618</user:institution> |
||||||
|
<user:email>john.doe@gov.uk</user:email> |
||||||
|
<user:user-type>Data Provider</user:user-type> |
||||||
|
<user:active>true</user:active> |
||||||
|
<user:deleted>false</user:deleted> |
||||||
|
<user:contact-priority-id>None</user:contact-priority-id> |
||||||
|
<user:telephone-no>02012345678</user:telephone-no> |
||||||
|
</user:user> |
@ -0,0 +1,37 @@ |
|||||||
|
require "rails_helper" |
||||||
|
|
||||||
|
RSpec.describe Imports::UserImportService do |
||||||
|
let(:fixture_directory) { "spec/fixtures/softwire_imports/users" } |
||||||
|
let(:user_file) { File.open("#{fixture_directory}/fc7625a02b24ae16162aa63ae7cb33feeec0c373.xml") } |
||||||
|
let(:storage_service) { instance_double(StorageService) } |
||||||
|
|
||||||
|
context "when importing users" do |
||||||
|
subject(:import_service) { described_class.new(storage_service) } |
||||||
|
|
||||||
|
before do |
||||||
|
allow(storage_service).to receive(:list_files) |
||||||
|
.and_return(["user_directory/fc7625a02b24ae16162aa63ae7cb33feeec0c373.xml"]) |
||||||
|
allow(storage_service).to receive(:get_file_io) |
||||||
|
.with("user_directory/fc7625a02b24ae16162aa63ae7cb33feeec0c373.xml") |
||||||
|
.and_return(user_file) |
||||||
|
end |
||||||
|
|
||||||
|
it "successfully create a user with the expected data" do |
||||||
|
FactoryBot.create(:organisation, old_org_id: "7c5bd5fb549c09a2c55d7cb90d7ba84927e64618") |
||||||
|
import_service.create_users("user_directory") |
||||||
|
|
||||||
|
user = User.find_by(old_user_id: "fc7625a02b24ae16162aa63ae7cb33feeec0c373") |
||||||
|
expect(user.name).to eq("John Doe") |
||||||
|
expect(user.email).to eq("john.doe@gov.uk") |
||||||
|
expect(user.encrypted_password).not_to be_nil |
||||||
|
expect(user.phone).to eq("02012345678") |
||||||
|
expect(user).to be_data_provider |
||||||
|
expect(user.organisation.old_org_id).to eq("7c5bd5fb549c09a2c55d7cb90d7ba84927e64618") |
||||||
|
end |
||||||
|
|
||||||
|
it "refuses to create a user belonging to a non existing organisation" do |
||||||
|
expect { import_service.create_users("user_directory") } |
||||||
|
.to raise_error(ActiveRecord::RecordInvalid, /Organisation must exist/) |
||||||
|
end |
||||||
|
end |
||||||
|
end |
Loading…
Reference in new issue