stackone_migration 1.0.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 18a239a9855fad756660ec28639ef4f97c6e06a2b716b6f29ecf5066d9dec14e
4
- data.tar.gz: 337ad0348278d4ac3da0a92cf193ccb9bd0f5529a5e75d4437367e578d97928f
3
+ metadata.gz: a44d4260363aee391c5c48f3d0f0fe6500181ab834949b6b9a530ba802a50051
4
+ data.tar.gz: '0653183cc3817cf604d47fc928c944861481c760bddaf1261c7b11a87017f08c'
5
5
  SHA512:
6
- metadata.gz: 1e366986d794a7d04a20b9fe3c48d05cb27b10400a850aad1b0d2571881da72c9028a54f8d0369902c5b8d9cce42f461e5041533f5485e33337261246fd1203f
7
- data.tar.gz: e50856a872ddf66eae142f57bf4ecb6e45a72fc4de9d634c933c2fb3f2b40f68eb04e53e1024824170ecc29b240bff0469b6eb14fc9e30cb8fa4ae3b1d4203c0
6
+ metadata.gz: ed07b461361433768d77c4ba9e88babaf7e5bfcd10c152208e2fe52ca010a6bad342c16f0280b17c1793f356a70f067e012a50d976efa6c3f18146567a7a3b0c
7
+ data.tar.gz: 8428afb3002ba02cb8dd52090bf4b1930de55f9d0bfabdee11195b47089f3e38daffcbf19fdf882a3fa4768992ea9b6a2d2f4671b97b1a023815f0fcc14a10ac
data/Gemfile CHANGED
@@ -11,4 +11,4 @@ group :development, :test do
11
11
  end
12
12
 
13
13
  gem 'merge_hris_client', '~> 3.0'
14
- gem 'stackone_hris_client', '~> 1.1'
14
+ gem 'stackone_hris_client', '~> 1.2.2'
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- stackone_migration (1.0.0)
4
+ stackone_migration (1.1.1)
5
5
  merge_hris_client (~> 3.0)
6
- stackone_hris_client (~> 1.1)
6
+ stackone_hris_client (~> 1.2.2)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -58,7 +58,7 @@ GEM
58
58
  rubocop-ast (1.27.0)
59
59
  parser (>= 3.2.1.0)
60
60
  ruby-progressbar (1.13.0)
61
- stackone_hris_client (1.1.0)
61
+ stackone_hris_client (1.2.2)
62
62
  typhoeus (~> 1.0, >= 1.0.1)
63
63
  typhoeus (1.4.0)
64
64
  ethon (>= 0.9.0)
@@ -73,7 +73,7 @@ DEPENDENCIES
73
73
  rake (~> 13.0.1)
74
74
  rspec (~> 3.6, >= 3.6.0)
75
75
  rubocop (~> 1.48.0)
76
- stackone_hris_client (~> 1.1)
76
+ stackone_hris_client (~> 1.2.2)
77
77
  stackone_migration!
78
78
 
79
79
  BUNDLED WITH
data/README.md CHANGED
@@ -25,7 +25,7 @@ require 'stackone_migration'
25
25
  Configure StackOne API key:
26
26
 
27
27
  ```ruby
28
- StackOneHrisClient.configure do |config|
28
+ StackOneHRIS.configure do |config|
29
29
  config.api_key_token = 'YOUR API KEY'
30
30
  end
31
31
  ```
@@ -7,12 +7,12 @@ module MergeHRISClient
7
7
  def account_token_retrieve(public_token, opts = {})
8
8
  return original_account_token_retrieve(public_token, opts) unless StackOneMigration::AccountHelper.stackone_account?(public_token)
9
9
 
10
- account_data = StackOneHrisClient::AccountsApi.new.accounts_get(public_token)
10
+ account_data = StackOneHRIS::AccountsApi.new.accounts_get(public_token)
11
11
 
12
12
  integration_data = MergeHRISClient::AccountIntegration.new(slug: account_data.provider)
13
13
  MergeHRISClient::AccountToken.new(account_token: public_token, integration: integration_data)
14
14
 
15
- rescue StackOneHrisClient::ApiError
15
+ rescue StackOneHRIS::ApiError
16
16
  raise MergeHRISClient::ApiError
17
17
  end
18
18
  end
@@ -0,0 +1,16 @@
1
+ require 'cgi'
2
+
3
+ module MergeHRISClient
4
+ class DeleteAccountApi
5
+ alias_method :original_delete_account_create, :delete_account_create
6
+
7
+ def delete_account_create(x_account_id, opts = {})
8
+ return original_delete_account_create(x_account_id, opts) unless StackOneMigration::AccountHelper.stackone_account?(x_account_id)
9
+
10
+ StackOneHRIS::AccountsApi.new.accounts_delete(x_account_id)
11
+ nil
12
+ rescue StackOneHRIS::ApiError
13
+ raise MergeHRISClient::ApiError
14
+ end
15
+ end
16
+ end
@@ -11,16 +11,16 @@ module MergeHRISClient
11
11
 
12
12
  if opts.key?(:remote_id)
13
13
  stripped_opts = opts.reject { |k, _| k == :remote_id }
14
- response = StackOneHrisClient::EmployeesApi.new.employees_get(opts[:remote_id], x_account_id,
14
+ response = StackOneHRIS::EmployeesApi.new.employees_get(opts[:remote_id], x_account_id,
15
15
  stripped_opts)
16
16
 
17
17
  StackOneMigration::EmployeesMapper.map_single_employee_to_list_model(response&.data)
18
18
  else
19
- response = StackOneHrisClient::EmployeesApi.new.employees_list(x_account_id, opts)
19
+ response = StackOneHRIS::EmployeesApi.new.employees_list(x_account_id, opts)
20
20
 
21
21
  StackOneMigration::EmployeesMapper.map_to_paginated_employee_list_model(response)
22
22
  end
23
- rescue StackOneHrisClient::ApiError
23
+ rescue StackOneHRIS::ApiError
24
24
  raise MergeHRISClient::ApiError
25
25
  end
26
26
  end
@@ -7,17 +7,17 @@ module MergeHRISClient
7
7
  def link_token_create(end_user_details_request, opts = {})
8
8
  return original_link_token_create(end_user_details_request, opts) if opts.key?(:use_merge) && opts[:use_merge]
9
9
 
10
- connect_session_create_request = StackOneHrisClient::ConnectSessionCreate.new(
10
+ connect_session_create_request = StackOneHRIS::ConnectSessionCreate.new(
11
11
  :origin_owner_id => end_user_details_request.end_user_origin_id,
12
12
  :origin_owner_name => end_user_details_request.end_user_email_address,
13
13
  :provider => end_user_details_request.integration,
14
14
  :categories => end_user_details_request.categories,
15
15
  )
16
16
 
17
- created_session = StackOneHrisClient::ConnectSessionsApi.new.connect_sessions_create(connect_session_create_request)
17
+ created_session = StackOneHRIS::ConnectSessionsApi.new.connect_sessions_create(connect_session_create_request)
18
18
  MergeHRISClient::LinkToken.new(:link_token => created_session.token, :integration_name => end_user_details_request.integration)
19
19
 
20
- rescue StackOneHrisClient::ApiError
20
+ rescue StackOneHRIS::ApiError
21
21
  raise MergeHRISClient::ApiError
22
22
  end
23
23
  end
@@ -1,5 +1,91 @@
1
1
  module StackOneMigration
2
2
  class EmployeesMapper
3
+ def self.gender_enum_hash
4
+ {
5
+ :male => 'MALE',
6
+ :female => 'FEMALE',
7
+ :non_binary => 'NON-BINARY',
8
+ :other => 'OTHER',
9
+ :not_disclosed => 'PREFER_NOT_TO_DISCLOSE',
10
+ }
11
+ end
12
+
13
+ def self.marital_status_enum_hash
14
+ {
15
+ :single => 'SINGLE',
16
+ :married => 'MARRIED_FILING_JOINTLY',
17
+ :divorced => 'MERGE_NONSTANDARD_VALUE',
18
+ :widowed => 'QUALIFYING_WIDOW_OR_WIDOWER_WITH_DEPENDENT_CHILD',
19
+ :domestic_partnership => 'MERGE_NONSTANDARD_VALUE',
20
+ :other => 'MERGE_NONSTANDARD_VALUE',
21
+ }
22
+ end
23
+
24
+ def self.ethnicity_enum_hash
25
+ {
26
+ :white => 'WHITE',
27
+ :black_or_african_american => 'BLACK_OR_AFRICAN_AMERICAN',
28
+ :asian => 'ASIAN_OR_INDIAN_SUBCONTINENT',
29
+ :hispanic_or_latino => 'HISPANIC_OR_LATINO',
30
+ :american_indian_or_alaska_native => 'AMERICAN_INDIAN_OR_ALASKA_NATIVE',
31
+ :native_hawaiian_or_pacific_islander => 'NATIVE_HAWAIIAN_OR_OTHER_PACIFIC_ISLANDER',
32
+ :two_or_more_races => 'TWO_OR_MORE_RACES',
33
+ :not_disclosed => 'PREFER_NOT_TO_DISCLOSE',
34
+ }
35
+ end
36
+
37
+ def self.employment_status_enum_hash
38
+ {
39
+ :active => 'ACTIVE',
40
+ :pending => 'PENDING',
41
+ :terminated => 'INACTIVE',
42
+ }
43
+ end
44
+
45
+ def self.employment_type_enum_hash
46
+ {
47
+ :full_time => 'FULL_TIME',
48
+ :part_time => 'PART_TIME',
49
+ :contractor => 'CONTRACTOR',
50
+ :intern => 'INTERN',
51
+ :freelance => 'FREELANCE',
52
+ :terminated => 'MERGE_NONSTANDARD_VALUE',
53
+ }
54
+ end
55
+
56
+ def self.pay_period_enum_hash
57
+ {
58
+ :hour => 'HOUR',
59
+ :day => 'DAY',
60
+ :week => 'WEEK',
61
+ :every_two_weeks => 'EVERY_TWO_WEEKS',
62
+ :month => 'MONTH',
63
+ :quarter => 'QUARTER',
64
+ :every_six_months => 'EVERY_SIX_MONTHS',
65
+ :year => 'YEAR',
66
+ }
67
+ end
68
+
69
+ def self.pay_frequency_enum_hash
70
+ {
71
+ :weekly => 'WEEKLY',
72
+ :bi_weekly => 'BIWEEKLY',
73
+ :monthly => 'MONTHLY',
74
+ :quarterly => 'QUARTERLY',
75
+ :semi_annually => 'SEMIANNUALLY',
76
+ :yearly => 'ANNUALLY',
77
+ :thirteen_monthly => 'THIRTEEN-MONTHLY',
78
+ :pro_rata => 'PRO_RATA',
79
+ }
80
+ end
81
+
82
+ def self.location_type_enum_hash
83
+ {
84
+ :home => 'HOME',
85
+ :work => 'WORK',
86
+ }
87
+ end
88
+
3
89
  def self.map_to_employee_model(employee)
4
90
  return nil if employee.nil?
5
91
 
@@ -13,13 +99,46 @@ module StackOneMigration
13
99
  :personal_email => employee.personal_email,
14
100
  :work_email => employee.work_email,
15
101
  :mobile_phone_number => employee.personal_phone_number,
16
- :gender => employee.gender,
17
- :date_of_birth => employee.birth_date,
102
+ :gender => MergeHRISClient::GenderEnum.build_from_hash(gender_enum_hash[employee.gender&.to_sym]),
103
+ :date_of_birth => employee.date_of_birth,
18
104
  :start_date => employee.start_date,
19
105
  :manager => employee.manager_id,
106
+ :ethnicity => MergeHRISClient::EthnicityEnum.build_from_hash(ethnicity_enum_hash[employee.ethnicity&.to_sym]),
107
+ :marital_status => MergeHRISClient::MaritalStatusEnum.build_from_hash(marital_status_enum_hash[employee.marital_status&.to_sym]),
108
+ :hire_date => employee.hire_date,
109
+ :employment_status => MergeHRISClient::EmploymentStatusEnum.build_from_hash(employment_status_enum_hash[employee.employment_status&.to_sym]),
110
+ :termination_date => employee.termination_date,
111
+ :company => employee.company,
112
+ :home_location => employee.home_location,
113
+ :work_location => employee.work_location,
114
+ :employments => map_employments(employee.employments),
115
+ )
116
+ end
117
+
118
+ def self.map_to_employment_model(employment)
119
+ return nil if employment.nil?
120
+
121
+ MergeHRISClient::Employment.new(
122
+ :job_title => employment[:job_title],
123
+ :pay_rate => employment[:pay_rate],
124
+ :pay_period => MergeHRISClient::PayPeriodEnum.build_from_hash(pay_period_enum_hash[employment[:pay_period]&.to_sym]),
125
+ :pay_frequency => MergeHRISClient::PayFrequencyEnum.build_from_hash(pay_frequency_enum_hash[employment[:pay_frequency]&.to_sym]),
126
+ :pay_currency => MergeHRISClient::PayCurrencyEnum.build_from_hash(employment[:pay_currency]&.to_s.upcase),
127
+ :effective_date => employment[:effective_date],
128
+ :employment_type => MergeHRISClient::EmploymentTypeEnum.build_from_hash(employment_type_enum_hash[employment[:employment_type]&.to_sym]),
20
129
  )
21
130
  end
22
131
 
132
+ def self.map_employments(employments)
133
+ if employments.nil?
134
+ mapped_results = []
135
+ else
136
+ mapped_results = employments.map do |employment|
137
+ map_to_employment_model(employment)
138
+ end
139
+ end
140
+ end
141
+
23
142
  def self.map_single_employee_to_list_model(employee)
24
143
  mapped_employee = map_to_employee_model(employee)
25
144
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module StackOneMigration
4
- VERSION = '1.0.0'
4
+ VERSION = '1.1.1'
5
5
  end
@@ -9,6 +9,7 @@ require 'stackone_migration/version'
9
9
  # APIs
10
10
  require 'stackone_migration/api/employees_api'
11
11
  require 'stackone_migration/api/account_token_api'
12
+ require 'stackone_migration/api/delete_account_api'
12
13
  require 'stackone_migration/api/link_token_api'
13
14
 
14
15
  # Mappers
@@ -8,9 +8,9 @@ describe MergeHRISClient::AccountTokenApi do
8
8
  context '.account_token_retrieve' do
9
9
  context 'when the public token is an account id from StackOne' do
10
10
  it 'returns a merge account token object' do
11
- account_data = StackOneHrisClient::Account.new(:id => '12345', :provider => 'stackone_hris_provider')
12
- stackone_account_api_double = double('StackOneHrisClient::AccountsApi', :accounts_get => account_data)
13
- allow(StackOneHrisClient::AccountsApi).to receive(:new).and_return(stackone_account_api_double)
11
+ account_data = StackOneHRIS::Account.new(:id => '12345', :provider => 'stackone_hris_provider')
12
+ stackone_account_api_double = double('StackOneHRIS::AccountsApi', :accounts_get => account_data)
13
+ allow(StackOneHRIS::AccountsApi).to receive(:new).and_return(stackone_account_api_double)
14
14
 
15
15
  result = subject.account_token_retrieve('12345')
16
16
 
@@ -18,9 +18,9 @@ describe MergeHRISClient::AccountTokenApi do
18
18
  end
19
19
 
20
20
  it 'returns an account token object with the right attributes' do
21
- account_data = StackOneHrisClient::Account.new(:id => '12345', :provider => 'stackone_hris_provider')
22
- stackone_account_api_double = double('StackOneHrisClient::AccountsApi', :accounts_get => account_data)
23
- allow(StackOneHrisClient::AccountsApi).to receive(:new).and_return(stackone_account_api_double)
21
+ account_data = StackOneHRIS::Account.new(:id => '12345', :provider => 'stackone_hris_provider')
22
+ stackone_account_api_double = double('StackOneHRIS::AccountsApi', :accounts_get => account_data)
23
+ allow(StackOneHRIS::AccountsApi).to receive(:new).and_return(stackone_account_api_double)
24
24
 
25
25
  result = subject.account_token_retrieve('12345')
26
26
 
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe MergeHRISClient::DeleteAccountApi do
6
+ subject { MergeHRISClient::DeleteAccountApi.new }
7
+
8
+ context '.delete_account_create' do
9
+ context 'when the account identifier is an account id from StackOne' do
10
+ it 'returns nil' do
11
+ stackone_account_api_double = double('StackOneHRIS::AccountsApi', :accounts_delete => nil)
12
+ allow(StackOneHRIS::AccountsApi).to receive(:new).and_return(stackone_account_api_double)
13
+
14
+ result = subject.delete_account_create('12345')
15
+
16
+ expect(result).to be_nil
17
+ end
18
+
19
+ it 'calls the method from the StackOne API to delete the account' do
20
+ stackone_account_api_double = double('StackOneHRIS::AccountsApi', :accounts_delete => nil)
21
+ allow(StackOneHRIS::AccountsApi).to receive(:new).and_return(stackone_account_api_double)
22
+
23
+ expect(stackone_account_api_double).to receive(:accounts_delete).with('12345')
24
+
25
+ result = subject.delete_account_create('12345')
26
+ end
27
+ end
28
+ end
29
+
30
+ context 'when the account identifier is from Merge' do
31
+ it 'calls the method from the Merge API to delete the account' do
32
+ merge_delete_account_api_double = double('MergeHRISClient::DeleteAccountApi')
33
+ allow(MergeHRISClient::DeleteAccountApi).to receive(:new).and_return(merge_delete_account_api_double)
34
+ options = { :custom => 'option_value' }
35
+
36
+ expect(merge_delete_account_api_double).to receive(:delete_account_create).with('123abc', options)
37
+
38
+ subject.delete_account_create('123abc', options)
39
+ end
40
+ end
41
+ end
@@ -8,9 +8,9 @@ describe MergeHRISClient::EmployeesApi do
8
8
  context '.employees_list' do
9
9
  context 'when the account id is from StackOne' do
10
10
  it 'calls the method from the StackOne client to list employees' do
11
- paginated_employees_double = double('StackOneHrisClient::PaginatedEmployeeList', :data => nil, :next_page => nil)
12
- stackone_employees_api_double = double('StackOneHrisClient::EmployeesApi', :employees_list => paginated_employees_double)
13
- allow(StackOneHrisClient::EmployeesApi).to receive(:new).and_return(stackone_employees_api_double)
11
+ paginated_employees_double = double('StackOneHRIS::PaginatedEmployeeList', :data => nil, :next_page => nil)
12
+ stackone_employees_api_double = double('StackOneHRIS::EmployeesApi', :employees_list => paginated_employees_double)
13
+ allow(StackOneHRIS::EmployeesApi).to receive(:new).and_return(stackone_employees_api_double)
14
14
  options = { :expand => 'employments,home_location' }
15
15
 
16
16
  expect(stackone_employees_api_double).to receive(:employees_list).with('123', options)
@@ -20,9 +20,9 @@ describe MergeHRISClient::EmployeesApi do
20
20
 
21
21
  context 'and the remote id param is in the options' do
22
22
  it 'calls the method from the StackOne client to get an employee with remote id parameter' do
23
- paginated_employees_double = double('StackOneHrisClient::PaginatedEmployeeList', :data => nil)
24
- stackone_employees_api_double = double('StackOneHrisClient::EmployeesApi', :employees_get => paginated_employees_double)
25
- allow(StackOneHrisClient::EmployeesApi).to receive(:new).and_return(stackone_employees_api_double)
23
+ paginated_employees_double = double('StackOneHRIS::PaginatedEmployeeList', :data => nil)
24
+ stackone_employees_api_double = double('StackOneHRIS::EmployeesApi', :employees_get => paginated_employees_double)
25
+ allow(StackOneHRIS::EmployeesApi).to receive(:new).and_return(stackone_employees_api_double)
26
26
  options = { :expand => 'employments,home_location', :remote_id => '456' }
27
27
 
28
28
  expect(stackone_employees_api_double).to receive(:employees_get).with('456', '123', { :expand => 'employments,home_location' })
@@ -8,9 +8,9 @@ describe MergeHRISClient::LinkTokenApi do
8
8
  context '.link_token_create' do
9
9
  context 'when the the key to use merge is not present in the options' do
10
10
  it 'returns a merge link token object' do
11
- session_data = StackOneHrisClient::ConnectSessionToken.new(:token => 'test_token')
12
- connect_sessions_api_double = double('StackOneHrisClient::ConnectSessionsApi', :connect_sessions_create => session_data)
13
- allow(StackOneHrisClient::ConnectSessionsApi).to receive(:new).and_return(connect_sessions_api_double)
11
+ session_data = StackOneHRIS::ConnectSessionToken.new(:token => 'test_token')
12
+ connect_sessions_api_double = double('StackOneHRIS::ConnectSessionsApi', :connect_sessions_create => session_data)
13
+ allow(StackOneHRIS::ConnectSessionsApi).to receive(:new).and_return(connect_sessions_api_double)
14
14
 
15
15
  end_user_details_request = MergeHRISClient::EndUserDetailsRequest.new(
16
16
  :end_user_email_address => 'tos@potig.er',
@@ -25,9 +25,9 @@ describe MergeHRISClient::LinkTokenApi do
25
25
  end
26
26
 
27
27
  it 'returns an object with the right attributes' do
28
- session_data = StackOneHrisClient::ConnectSessionToken.new(:token => 'test_token')
29
- connect_sessions_api_double = double('StackOneHrisClient::ConnectSessionsApi', :connect_sessions_create => session_data)
30
- allow(StackOneHrisClient::ConnectSessionsApi).to receive(:new).and_return(connect_sessions_api_double)
28
+ session_data = StackOneHRIS::ConnectSessionToken.new(:token => 'test_token')
29
+ connect_sessions_api_double = double('StackOneHRIS::ConnectSessionsApi', :connect_sessions_create => session_data)
30
+ allow(StackOneHRIS::ConnectSessionsApi).to receive(:new).and_return(connect_sessions_api_double)
31
31
 
32
32
  end_user_details_request = MergeHRISClient::EndUserDetailsRequest.new(
33
33
  :end_user_email_address => 'tos@potig.er',
@@ -42,9 +42,9 @@ describe MergeHRISClient::LinkTokenApi do
42
42
  end
43
43
 
44
44
  it 'calls the connect sessions api with the right parameters' do
45
- session_data = StackOneHrisClient::ConnectSessionToken.new(:token => 'test_token')
46
- connect_sessions_api_double = double('StackOneHrisClient::ConnectSessionsApi', :connect_sessions_create => session_data)
47
- allow(StackOneHrisClient::ConnectSessionsApi).to receive(:new).and_return(connect_sessions_api_double)
45
+ session_data = StackOneHRIS::ConnectSessionToken.new(:token => 'test_token')
46
+ connect_sessions_api_double = double('StackOneHRIS::ConnectSessionsApi', :connect_sessions_create => session_data)
47
+ allow(StackOneHRIS::ConnectSessionsApi).to receive(:new).and_return(connect_sessions_api_double)
48
48
 
49
49
  end_user_details_request = MergeHRISClient::EndUserDetailsRequest.new(
50
50
  :end_user_email_address => 'tos@potig.er',
@@ -53,7 +53,7 @@ describe MergeHRISClient::LinkTokenApi do
53
53
  :integration => 'stackone_hris_provider',
54
54
  )
55
55
 
56
- expected_request = StackOneHrisClient::ConnectSessionCreate.new(
56
+ expected_request = StackOneHRIS::ConnectSessionCreate.new(
57
57
  :origin_owner_id => 'user_origin_id',
58
58
  :origin_owner_name => 'tos@potig.er',
59
59
  :provider => 'stackone_hris_provider',
@@ -4,7 +4,7 @@ require 'spec_helper'
4
4
 
5
5
  describe StackOneMigration::EmployeesMapper do
6
6
  let(:sample_employee) {
7
- StackOneHrisClient::Employee.new(
7
+ StackOneHRIS::Employee.new(
8
8
  :id => '123',
9
9
  :first_name => 'Jean',
10
10
  :last_name => 'Harrington',
@@ -15,16 +15,43 @@ describe StackOneMigration::EmployeesMapper do
15
15
  :work_email => 'kota@efpiphi.kw',
16
16
  :personal_phone_number => '(715) 658-9486',
17
17
  :gender => 'female',
18
- :birth_date => '1990-01-01',
18
+ :date_of_birth => '1990-01-01',
19
19
  :start_date => '2018-01-01',
20
20
  :manager_id => '417b5e62-e011-5e69-a906-0aefade9ded1',
21
+ :ethnicity => 'white',
22
+ :marital_status => 'married',
23
+ :employment_status => 'terminated',
21
24
  :work_phone_number => '(456) 787-3508',
22
- :title => 'Manager',
25
+ :job_title => 'Manager',
23
26
  :department => 'Human Resources',
24
- )
27
+ :home_location => {
28
+ :phone_number => '(456) 787-3508',
29
+ :street_1 => '123 Main St',
30
+ :street_2 => 'Apt 1',
31
+ :city => 'San Francisco',
32
+ :state => 'CA',
33
+ :zip_code => '94105',
34
+ :country => 'US',
35
+ },
36
+ :work_location => nil,
37
+ :company => {
38
+ display_name: 'StackOne',
39
+ },
40
+ :employments => [
41
+ {
42
+ job_title: 'Manager',
43
+ pay_rate: 100000,
44
+ pay_period: 'yearly',
45
+ pay_frequency: 'weekly',
46
+ pay_currency: 'USD',
47
+ effective_date: '2018-01-01',
48
+ employee_type: 'full_time',
49
+ }
50
+ ]
51
+ )
25
52
  }
26
53
  let(:other_sample_employee) {
27
- StackOneHrisClient::Employee.new(
54
+ StackOneHRIS::Employee.new(
28
55
  :id => '456',
29
56
  :first_name => 'Allie',
30
57
  :last_name => 'Shaw',
@@ -35,11 +62,11 @@ describe StackOneMigration::EmployeesMapper do
35
62
  :work_email => 'kota@efpiphi.kw',
36
63
  :personal_phone_number => '(715) 658-9486',
37
64
  :gender => 'female',
38
- :birth_date => '1990-01-01',
65
+ :date_of_birth => '1990-01-01',
39
66
  :start_date => '2018-01-01',
40
67
  :manager_id => '417b5e62-e011-5e69-a906-0aefade9ded1',
41
68
  :work_phone_number => '(456) 787-3508',
42
- :title => 'Manager',
69
+ :job_title => 'Manager',
43
70
  :department => 'Human Resources',
44
71
  )
45
72
  }
@@ -64,11 +91,27 @@ describe StackOneMigration::EmployeesMapper do
64
91
  :personal_email => 'ija@egje.wf',
65
92
  :work_email => 'kota@efpiphi.kw',
66
93
  :mobile_phone_number => '(715) 658-9486',
67
- :gender => 'female',
68
94
  :date_of_birth => '1990-01-01',
69
95
  :start_date => '2018-01-01',
70
96
  :manager => '417b5e62-e011-5e69-a906-0aefade9ded1',
97
+ :home_location => {
98
+ phone_number: '(456) 787-3508',
99
+ street_1: '123 Main St',
100
+ street_2: 'Apt 1',
101
+ city: 'San Francisco',
102
+ state: 'CA',
103
+ zip_code: '94105',
104
+ country: 'US',
105
+ },
106
+ :work_location => nil,
107
+ :company => {
108
+ display_name: 'StackOne',
109
+ },
71
110
  )
111
+ expect(target_model.gender).to have_attributes(:value => 'FEMALE')
112
+ expect(target_model.ethnicity).to have_attributes(:value => 'WHITE')
113
+ expect(target_model.marital_status).to have_attributes(:value => 'MARRIED_FILING_JOINTLY')
114
+ expect(target_model.employment_status).to have_attributes(:value => 'INACTIVE')
72
115
  end
73
116
 
74
117
  context 'when the employee record to map is nil' do
@@ -80,6 +123,46 @@ describe StackOneMigration::EmployeesMapper do
80
123
  end
81
124
  end
82
125
 
126
+ context '.map_to_employment_model' do
127
+ it 'maps a employeement hash to correct class' do
128
+ sample_employment = {
129
+ job_title: 'Manager',
130
+ pay_rate: 100000,
131
+ pay_period: 'yearly',
132
+ pay_frequency: 'weekly',
133
+ pay_currency: 'USD',
134
+ effective_date: '2018-01-01',
135
+ employment_type: 'full_time',
136
+ }
137
+
138
+ target_model = described_class.map_to_employment_model(sample_employment)
139
+
140
+ expect(target_model).to be_a(MergeHRISClient::Employment)
141
+ end
142
+
143
+ it 'maps a employeement hash with the right attributes' do
144
+ sample_employment = {
145
+ job_title: 'Manager',
146
+ pay_rate: 100000,
147
+ pay_period: 'year',
148
+ pay_frequency: 'weekly',
149
+ pay_currency: 'usd',
150
+ effective_date: '2018-01-01',
151
+ employment_type: 'full_time',
152
+ }
153
+
154
+ target_model = described_class.map_to_employment_model(sample_employment)
155
+
156
+ expect(target_model.job_title).to eq('Manager')
157
+ expect(target_model.pay_rate).to eq(100000)
158
+ expect(target_model.pay_period).to have_attributes(:value => 'YEAR')
159
+ expect(target_model.pay_frequency).to have_attributes(:value => 'WEEKLY')
160
+ expect(target_model.pay_currency).to have_attributes(:value => 'USD')
161
+ expect(target_model.effective_date).to eq('2018-01-01')
162
+ expect(target_model.employment_type).to have_attributes(:value => 'FULL_TIME')
163
+ end
164
+ end
165
+
83
166
  context '.map_single_employee_to_list_model' do
84
167
  it 'maps a single employee to a paginated employee list class' do
85
168
  target_model = described_class.map_single_employee_to_list_model(sample_employee)
@@ -92,24 +175,8 @@ describe StackOneMigration::EmployeesMapper do
92
175
 
93
176
  expect(target_model).to have_attributes(
94
177
  :_next => nil,
95
- :results => [
96
- MergeHRISClient::Employee.new(
97
- :id => '123',
98
- :remote_id => '123',
99
- :first_name => 'Jean',
100
- :last_name => 'Harrington',
101
- :display_full_name => 'Jean Harrington',
102
- :avatar => 'https://www.gravatar.com/avatar/0c1c0c1c0c1c0c1c0c1c0c1c0c1c0c1c?d=mm&s=200',
103
- :personal_email => 'ija@egje.wf',
104
- :work_email => 'kota@efpiphi.kw',
105
- :mobile_phone_number => '(715) 658-9486',
106
- :gender => 'female',
107
- :date_of_birth => '1990-01-01',
108
- :start_date => '2018-01-01',
109
- :manager => '417b5e62-e011-5e69-a906-0aefade9ded1',
110
- )
111
- ],
112
178
  :previous => nil)
179
+ expect(target_model).to include(:results)
113
180
  end
114
181
 
115
182
  context 'when the single employee record to map is nil' do
@@ -128,7 +195,7 @@ describe StackOneMigration::EmployeesMapper do
128
195
  it 'maps the employees to a paginated employee list classl' do
129
196
  other_sample_employee = sample_employee.clone
130
197
 
131
- stackone_paginated_employees = StackOneHrisClient::EmployeesPaginated.new(
198
+ stackone_paginated_employees = StackOneHRIS::EmployeesPaginated.new(
132
199
  :next_page => 'next_page_token',
133
200
  :data => [sample_employee, other_sample_employee],
134
201
  )
@@ -140,7 +207,7 @@ describe StackOneMigration::EmployeesMapper do
140
207
 
141
208
 
142
209
  it 'maps the employee list attributes with the right structure to the target class' do
143
- stackone_paginated_employees = StackOneHrisClient::EmployeesPaginated.new(
210
+ stackone_paginated_employees = StackOneHRIS::EmployeesPaginated.new(
144
211
  :next_page => 'next_page_token',
145
212
  :data => [sample_employee, other_sample_employee],
146
213
  )
@@ -149,40 +216,9 @@ describe StackOneMigration::EmployeesMapper do
149
216
 
150
217
  expect(target_model).to have_attributes(
151
218
  :_next => 'next_page_token',
152
- :results => [
153
- MergeHRISClient::Employee.new(
154
- :id => '123',
155
- :remote_id => '123',
156
- :first_name => 'Jean',
157
- :last_name => 'Harrington',
158
- :display_full_name => 'Jean Harrington',
159
- :avatar => 'https://www.gravatar.com/avatar/0c1c0c1c0c1c0c1c0c1c0c1c0c1c0c1c?d=mm&s=200',
160
- :personal_email => 'ija@egje.wf',
161
- :work_email => 'kota@efpiphi.kw',
162
- :mobile_phone_number => '(715) 658-9486',
163
- :gender => 'female',
164
- :date_of_birth => '1990-01-01',
165
- :start_date => '2018-01-01',
166
- :manager => '417b5e62-e011-5e69-a906-0aefade9ded1',
167
- ),
168
- MergeHRISClient::Employee.new(
169
- :id => '456',
170
- :remote_id => '456',
171
- :first_name => 'Allie',
172
- :last_name => 'Shaw',
173
- :display_full_name => 'Allie Shaw',
174
- :avatar => 'https://www.gravatar.com/avatar/0c1c0c1c0c1c0c1c0c1c0c1c0c1c0c1c?d=mm&s=200',
175
- :personal_email => 'ija@egje.wf',
176
- :work_email => 'kota@efpiphi.kw',
177
- :mobile_phone_number => '(715) 658-9486',
178
- :gender => 'female',
179
- :date_of_birth => '1990-01-01',
180
- :start_date => '2018-01-01',
181
- :manager => '417b5e62-e011-5e69-a906-0aefade9ded1',
182
- )
183
- ],
184
219
  :previous => nil
185
220
  )
221
+ expect(target_model.results.length).to eq(2)
186
222
  end
187
223
 
188
224
  context 'when the employee list to map is nil' do
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.required_ruby_version = '>= 2.7'
17
17
 
18
18
  s.add_runtime_dependency 'merge_hris_client', '~> 3.0'
19
- s.add_runtime_dependency 'stackone_hris_client', '~> 1.1'
19
+ s.add_runtime_dependency 'stackone_hris_client', '~> 1.2.2'
20
20
 
21
21
  s.add_development_dependency 'rspec', '~> 3.6', '>= 3.6.0'
22
22
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stackone_migration
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - StackOne
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-29 00:00:00.000000000 Z
11
+ date: 2023-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: merge_hris_client
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.1'
33
+ version: 1.2.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.1'
40
+ version: 1.2.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -72,12 +72,14 @@ files:
72
72
  - Rakefile
73
73
  - lib/stackone_migration.rb
74
74
  - lib/stackone_migration/api/account_token_api.rb
75
+ - lib/stackone_migration/api/delete_account_api.rb
75
76
  - lib/stackone_migration/api/employees_api.rb
76
77
  - lib/stackone_migration/api/link_token_api.rb
77
78
  - lib/stackone_migration/helpers/account_helper.rb
78
79
  - lib/stackone_migration/mappers/employees_mapper.rb
79
80
  - lib/stackone_migration/version.rb
80
81
  - spec/api/account_token_api_spec.rb
82
+ - spec/api/delete_account_api_spec.rb
81
83
  - spec/api/employees_api_spec.rb
82
84
  - spec/api/link_token_api_spec.rb
83
85
  - spec/helpers/account_helper_spec.rb
@@ -110,6 +112,7 @@ summary: StackOne migration client gem
110
112
  test_files:
111
113
  - spec/api/employees_api_spec.rb
112
114
  - spec/api/account_token_api_spec.rb
115
+ - spec/api/delete_account_api_spec.rb
113
116
  - spec/api/link_token_api_spec.rb
114
117
  - spec/helpers/account_helper_spec.rb
115
118
  - spec/mappers/employees_mapper_spec.rb