openstax_accounts 7.3.0 → 7.4.0
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 +4 -4
- data/app/models/openstax/accounts/account.rb +3 -1
- data/app/representers/openstax/accounts/api/v1/account_representer.rb +16 -0
- data/app/routines/openstax/accounts/find_or_create_account.rb +3 -2
- data/app/routines/openstax/accounts/sync_accounts.rb +1 -1
- data/db/migrate/9_add_uuid_and_role_to_accounts_accounts.rb +9 -0
- data/lib/openstax/accounts/api.rb +4 -2
- data/lib/openstax/accounts/configuration.rb +8 -0
- data/lib/openstax/accounts/version.rb +1 -1
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/schema.rb +4 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +379 -0
- data/spec/dummy/log/test.log +48112 -0
- data/spec/factories/openstax_accounts_account.rb +2 -0
- data/spec/lib/openstax/accounts/api_spec.rb +25 -45
- data/spec/models/openstax/accounts/account_spec.rb +6 -0
- data/spec/routines/openstax/accounts/find_or_create_account_spec.rb +4 -2
- data/spec/routines/openstax/accounts/sync_accounts_spec.rb +3 -1
- metadata +3 -2
| @@ -4,5 +4,7 @@ FactoryGirl.define do | |
| 4 4 | 
             
                username     { SecureRandom.hex.to_s }
         | 
| 5 5 | 
             
                access_token { SecureRandom.hex.to_s }
         | 
| 6 6 | 
             
                faculty_status { OpenStax::Accounts::Account.faculty_statuses[:no_faculty_info] }
         | 
| 7 | 
            +
                role         { OpenStax::Accounts::Account.roles[:unknown_role] }
         | 
| 8 | 
            +
                uuid         { SecureRandom.uuid }
         | 
| 7 9 | 
             
              end
         | 
| 8 10 | 
             
            end
         | 
| @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module OpenStax
         | 
| 2 4 | 
             
              module Accounts
         | 
| 3 5 | 
             
                describe Api do
         | 
| @@ -6,29 +8,30 @@ module OpenStax | |
| 6 8 | 
             
                                     first_name: 'Some', last_name: 'User', full_name: 'SomeUser',
         | 
| 7 9 | 
             
                                     title: 'Sir', openstax_uid: 1, access_token: 'secret') }
         | 
| 8 10 |  | 
| 11 | 
            +
                  def reset(controller)
         | 
| 12 | 
            +
                    controller.last_action = nil
         | 
| 13 | 
            +
                    controller.last_json = nil
         | 
| 14 | 
            +
                    controller.last_params = nil
         | 
| 15 | 
            +
                  end
         | 
| 16 | 
            +
             | 
| 9 17 | 
             
                  it 'makes api requests' do
         | 
| 10 | 
            -
                     | 
| 11 | 
            -
                    expect(::Api::DummyController.last_params).to be_nil
         | 
| 18 | 
            +
                    reset(::Api::DummyController)
         | 
| 12 19 | 
             
                    Api.request(:post, 'dummy', :params => {:test => true})
         | 
| 13 20 | 
             
                    expect(::Api::DummyController.last_action).to eq :dummy
         | 
| 14 21 | 
             
                    expect(::Api::DummyController.last_params).to include 'test' => 'true'
         | 
| 15 22 | 
             
                  end
         | 
| 16 23 |  | 
| 17 24 | 
             
                  context 'users' do
         | 
| 18 | 
            -
             | 
| 25 | 
            +
                    before(:each) { reset(::Api::UsersController) }
         | 
| 19 26 | 
             
                    let!(:account) { FactoryGirl.create :openstax_accounts_account }
         | 
| 20 27 |  | 
| 21 28 | 
             
                    it 'makes api call to users index' do
         | 
| 22 | 
            -
                      ::Api::UsersController.last_action = nil
         | 
| 23 | 
            -
                      ::Api::UsersController.last_params = nil
         | 
| 24 29 | 
             
                      Api.search_accounts('something')
         | 
| 25 30 | 
             
                      expect(::Api::UsersController.last_action).to eq :index
         | 
| 26 31 | 
             
                      expect(::Api::UsersController.last_params).to include :q => 'something'
         | 
| 27 32 | 
             
                    end
         | 
| 28 33 |  | 
| 29 34 | 
             
                    it 'makes api call to user update' do
         | 
| 30 | 
            -
                      ::Api::UsersController.last_action = nil
         | 
| 31 | 
            -
                      ::Api::UsersController.last_json = nil
         | 
| 32 35 | 
             
                      Api.update_account(account)
         | 
| 33 36 | 
             
                      expect(::Api::UsersController.last_action).to eq :update
         | 
| 34 37 | 
             
                      expect(::Api::UsersController.last_json).to include(
         | 
| @@ -37,8 +40,6 @@ module OpenStax | |
| 37 40 | 
             
                    end
         | 
| 38 41 |  | 
| 39 42 | 
             
                    it 'makes api call to (temp) user create by email' do
         | 
| 40 | 
            -
                      ::Api::UsersController.last_action = nil
         | 
| 41 | 
            -
                      ::Api::UsersController.last_json = nil
         | 
| 42 43 | 
             
                      Api.find_or_create_account(email: 'dummy@dum.my')
         | 
| 43 44 | 
             
                      expect(::Api::UsersController.last_action).to eq :create
         | 
| 44 45 | 
             
                      expect(::Api::UsersController.last_json).to(
         | 
| @@ -47,52 +48,51 @@ module OpenStax | |
| 47 48 | 
             
                    end
         | 
| 48 49 |  | 
| 49 50 | 
             
                    it 'makes api call to (temp) user create by username' do
         | 
| 50 | 
            -
                      ::Api::UsersController.last_action = nil
         | 
| 51 | 
            -
                      ::Api::UsersController.last_json = nil
         | 
| 52 51 | 
             
                      Api.find_or_create_account(username: 'dummy')
         | 
| 53 52 | 
             
                      expect(::Api::UsersController.last_action).to eq :create
         | 
| 54 53 | 
             
                      expect(::Api::UsersController.last_json).to(
         | 
| 55 54 | 
             
                        include('username' => 'dummy')
         | 
| 56 55 | 
             
                      )
         | 
| 57 56 | 
             
                    end
         | 
| 58 | 
            -
             | 
| 59 57 | 
             
                  end
         | 
| 60 58 |  | 
| 61 59 | 
             
                  context 'application_users' do
         | 
| 60 | 
            +
                    before(:each) { reset(::Api::ApplicationUsersController) }
         | 
| 62 61 |  | 
| 63 62 | 
             
                    it 'makes api call to application_users index' do
         | 
| 64 | 
            -
                      ::Api::ApplicationUsersController.last_action = nil
         | 
| 65 | 
            -
                      ::Api::ApplicationUsersController.last_params = nil
         | 
| 66 63 | 
             
                      Api.search_application_accounts('something')
         | 
| 67 64 | 
             
                      expect(::Api::ApplicationUsersController.last_action).to eq :index
         | 
| 68 65 | 
             
                      expect(::Api::ApplicationUsersController.last_params).to include :q => 'something'
         | 
| 69 66 | 
             
                    end
         | 
| 70 67 |  | 
| 71 68 | 
             
                    it 'makes api call to application_users updates' do
         | 
| 72 | 
            -
                      ::Api::ApplicationUsersController.last_action = nil
         | 
| 73 69 | 
             
                      Api.get_application_account_updates
         | 
| 74 70 | 
             
                      expect(::Api::ApplicationUsersController.last_action).to eq :updates
         | 
| 71 | 
            +
                      expect(::Api::ApplicationUsersController.last_params).to include limit: "250"
         | 
| 72 | 
            +
                    end
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                    it 'does not limit updates call if param blank' do
         | 
| 75 | 
            +
                      allow(OpenStax::Accounts.configuration).to receive(:max_user_updates_per_request) { "" }
         | 
| 76 | 
            +
                      Api.get_application_account_updates
         | 
| 77 | 
            +
                      expect(::Api::ApplicationUsersController.last_action).to eq :updates
         | 
| 78 | 
            +
                      expect(::Api::ApplicationUsersController.last_params.keys).not_to include "limit"
         | 
| 75 79 | 
             
                    end
         | 
| 76 80 |  | 
| 77 81 | 
             
                    it 'makes api call to application_users updated' do
         | 
| 78 | 
            -
                      ::Api::ApplicationUsersController.last_action = nil
         | 
| 79 | 
            -
                      ::Api::ApplicationUsersController.last_json = nil
         | 
| 80 82 | 
             
                      Api.mark_account_updates_as_read([{id: 1, read_updates: 1}])
         | 
| 81 83 | 
             
                      expect(::Api::ApplicationUsersController.last_action).to eq :updated
         | 
| 82 84 | 
             
                      expect(::Api::ApplicationUsersController.last_json).to include(
         | 
| 83 85 | 
             
                        {'id' => 1, 'read_updates' => 1})
         | 
| 84 86 | 
             
                    end
         | 
| 85 | 
            -
             | 
| 86 87 | 
             
                  end
         | 
| 87 88 |  | 
| 88 89 | 
             
                  context 'groups' do
         | 
| 90 | 
            +
                    before(:each) { reset(::Api::GroupsController) }
         | 
| 89 91 |  | 
| 90 92 | 
             
                    let!(:account) { FactoryGirl.create :openstax_accounts_account }
         | 
| 91 93 | 
             
                    let!(:group)   { FactoryGirl.create :openstax_accounts_group }
         | 
| 92 94 |  | 
| 93 95 | 
             
                    it 'makes api call to groups create' do
         | 
| 94 | 
            -
                      ::Api::GroupsController.last_action = nil
         | 
| 95 | 
            -
                      ::Api::GroupsController.last_json = nil
         | 
| 96 96 | 
             
                      Api.create_group(account, group)
         | 
| 97 97 | 
             
                      expect(::Api::GroupsController.last_action).to eq :create
         | 
| 98 98 | 
             
                      expect(::Api::GroupsController.last_json).to include(
         | 
| @@ -101,9 +101,6 @@ module OpenStax | |
| 101 101 |  | 
| 102 102 | 
             
                    it 'makes api call to group update' do
         | 
| 103 103 | 
             
                      group.save!
         | 
| 104 | 
            -
                      ::Api::GroupsController.last_action = nil
         | 
| 105 | 
            -
                      ::Api::GroupsController.last_params = nil
         | 
| 106 | 
            -
                      ::Api::GroupsController.last_json = nil
         | 
| 107 104 | 
             
                      Api.update_group(account, group)
         | 
| 108 105 | 
             
                      expect(::Api::GroupsController.last_action).to eq :update
         | 
| 109 106 | 
             
                      expect(::Api::GroupsController.last_params).to include(
         | 
| @@ -114,24 +111,20 @@ module OpenStax | |
| 114 111 |  | 
| 115 112 | 
             
                    it 'makes api call to group destroy' do
         | 
| 116 113 | 
             
                      group.save!
         | 
| 117 | 
            -
                      ::Api::GroupsController.last_action = nil
         | 
| 118 | 
            -
                      ::Api::GroupsController.last_params = nil
         | 
| 119 114 | 
             
                      Api.destroy_group(account, group)
         | 
| 120 115 | 
             
                      expect(::Api::GroupsController.last_action).to eq :destroy
         | 
| 121 116 | 
             
                      expect(::Api::GroupsController.last_params).to include(
         | 
| 122 117 | 
             
                        {'id' => group.openstax_uid.to_s})
         | 
| 123 118 | 
             
                    end
         | 
| 124 | 
            -
             | 
| 125 119 | 
             
                  end
         | 
| 126 120 |  | 
| 127 121 | 
             
                  context 'group_members' do
         | 
| 122 | 
            +
                    before(:each) { reset(::Api::GroupMembersController) }
         | 
| 128 123 |  | 
| 129 124 | 
             
                    let!(:account) { FactoryGirl.create :openstax_accounts_account }
         | 
| 130 125 | 
             
                    let!(:group_member)   { FactoryGirl.build :openstax_accounts_group_member }
         | 
| 131 126 |  | 
| 132 127 | 
             
                    it 'makes api call to group_members create' do
         | 
| 133 | 
            -
                      ::Api::GroupMembersController.last_action = nil
         | 
| 134 | 
            -
                      ::Api::GroupMembersController.last_params = nil
         | 
| 135 128 | 
             
                      Api.create_group_member(account, group_member)
         | 
| 136 129 | 
             
                      expect(::Api::GroupMembersController.last_action).to eq :create
         | 
| 137 130 | 
             
                      expect(::Api::GroupMembersController.last_params).to include(
         | 
| @@ -141,25 +134,21 @@ module OpenStax | |
| 141 134 |  | 
| 142 135 | 
             
                    it 'makes api call to group_member destroy' do
         | 
| 143 136 | 
             
                      group_member.save!
         | 
| 144 | 
            -
                      ::Api::GroupMembersController.last_action = nil
         | 
| 145 | 
            -
                      ::Api::GroupMembersController.last_params = nil
         | 
| 146 137 | 
             
                      Api.destroy_group_member(account, group_member)
         | 
| 147 138 | 
             
                      expect(::Api::GroupMembersController.last_action).to eq :destroy
         | 
| 148 139 | 
             
                      expect(::Api::GroupMembersController.last_params).to include(
         | 
| 149 140 | 
             
                        {'group_id' => group_member.group_id.to_s,
         | 
| 150 141 | 
             
                         'user_id' => group_member.user_id.to_s})
         | 
| 151 142 | 
             
                    end
         | 
| 152 | 
            -
             | 
| 153 143 | 
             
                  end
         | 
| 154 144 |  | 
| 155 145 | 
             
                  context 'group_owners' do
         | 
| 146 | 
            +
                    before(:each) { reset(::Api::GroupOwnersController) }
         | 
| 156 147 |  | 
| 157 148 | 
             
                    let!(:account)      { FactoryGirl.create :openstax_accounts_account }
         | 
| 158 149 | 
             
                    let!(:group_owner) { FactoryGirl.build :openstax_accounts_group_owner }
         | 
| 159 150 |  | 
| 160 151 | 
             
                    it 'makes api call to group_owners create' do
         | 
| 161 | 
            -
                      ::Api::GroupOwnersController.last_action = nil
         | 
| 162 | 
            -
                      ::Api::GroupOwnersController.last_params = nil
         | 
| 163 152 | 
             
                      Api.create_group_owner(account, group_owner)
         | 
| 164 153 | 
             
                      expect(::Api::GroupOwnersController.last_action).to eq :create
         | 
| 165 154 | 
             
                      expect(::Api::GroupOwnersController.last_params).to include(
         | 
| @@ -169,25 +158,21 @@ module OpenStax | |
| 169 158 |  | 
| 170 159 | 
             
                    it 'makes api call to group_owner destroy' do
         | 
| 171 160 | 
             
                      group_owner.save!
         | 
| 172 | 
            -
                      ::Api::GroupOwnersController.last_action = nil
         | 
| 173 | 
            -
                      ::Api::GroupOwnersController.last_params = nil
         | 
| 174 161 | 
             
                      Api.destroy_group_owner(account, group_owner)
         | 
| 175 162 | 
             
                      expect(::Api::GroupOwnersController.last_action).to eq :destroy
         | 
| 176 163 | 
             
                      expect(::Api::GroupOwnersController.last_params).to include(
         | 
| 177 164 | 
             
                        {'group_id' => group_owner.group_id.to_s,
         | 
| 178 165 | 
             
                         'user_id' => group_owner.user_id.to_s})
         | 
| 179 166 | 
             
                    end
         | 
| 180 | 
            -
             | 
| 181 167 | 
             
                  end
         | 
| 182 168 |  | 
| 183 169 | 
             
                  context 'group_nestings' do
         | 
| 170 | 
            +
                    before(:each) { reset(::Api::GroupNestingsController) }
         | 
| 184 171 |  | 
| 185 172 | 
             
                    let!(:account)      { FactoryGirl.create :openstax_accounts_account }
         | 
| 186 173 | 
             
                    let!(:group_nesting) { FactoryGirl.build :openstax_accounts_group_nesting }
         | 
| 187 174 |  | 
| 188 175 | 
             
                    it 'makes api call to group_nestings (create)' do
         | 
| 189 | 
            -
                      ::Api::GroupNestingsController.last_action = nil
         | 
| 190 | 
            -
                      ::Api::GroupNestingsController.last_params = nil
         | 
| 191 176 | 
             
                      Api.create_group_nesting(account, group_nesting)
         | 
| 192 177 | 
             
                      expect(::Api::GroupNestingsController.last_action).to eq :create
         | 
| 193 178 | 
             
                      expect(::Api::GroupNestingsController.last_params).to include(
         | 
| @@ -197,36 +182,31 @@ module OpenStax | |
| 197 182 |  | 
| 198 183 | 
             
                    it 'makes api call to group_nesting (destroy)' do
         | 
| 199 184 | 
             
                      group_nesting.save!
         | 
| 200 | 
            -
                      ::Api::GroupNestingsController.last_action = nil
         | 
| 201 | 
            -
                      ::Api::GroupNestingsController.last_params = nil
         | 
| 202 185 | 
             
                      Api.destroy_group_nesting(account, group_nesting)
         | 
| 203 186 | 
             
                      expect(::Api::GroupNestingsController.last_action).to eq :destroy
         | 
| 204 187 | 
             
                      expect(::Api::GroupNestingsController.last_params).to include(
         | 
| 205 188 | 
             
                        {'group_id' => group_nesting.container_group_id.to_s,
         | 
| 206 189 | 
             
                         'member_group_id' => group_nesting.member_group_id.to_s})
         | 
| 207 190 | 
             
                    end
         | 
| 208 | 
            -
             | 
| 209 191 | 
             
                  end
         | 
| 210 192 |  | 
| 211 193 | 
             
                  context 'application_groups' do
         | 
| 194 | 
            +
                    before(:each) { reset(::Api::ApplicationGroupsController) }
         | 
| 212 195 |  | 
| 213 196 | 
             
                    it 'makes api call to application_groups_updates' do
         | 
| 214 | 
            -
                      ::Api::ApplicationGroupsController.last_action = nil
         | 
| 215 197 | 
             
                      Api.get_application_group_updates
         | 
| 216 198 | 
             
                      expect(::Api::ApplicationGroupsController.last_action).to eq :updates
         | 
| 217 199 | 
             
                    end
         | 
| 218 200 |  | 
| 219 201 | 
             
                    it 'makes api call to application_groups_updated' do
         | 
| 220 | 
            -
                      ::Api::ApplicationGroupsController.last_action = nil
         | 
| 221 | 
            -
                      ::Api::ApplicationGroupsController.last_json = nil
         | 
| 222 202 | 
             
                      Api.mark_group_updates_as_read([{id: 1, read_updates: 1}])
         | 
| 223 203 | 
             
                      expect(::Api::ApplicationGroupsController.last_action).to eq :updated
         | 
| 224 204 | 
             
                      expect(::Api::ApplicationGroupsController.last_json).to include(
         | 
| 225 205 | 
             
                        {'id' => 1, 'read_updates' => 1})
         | 
| 226 206 | 
             
                    end
         | 
| 227 | 
            -
             | 
| 228 207 | 
             
                  end
         | 
| 229 208 |  | 
| 230 209 | 
             
                end
         | 
| 210 | 
            +
             | 
| 231 211 | 
             
              end
         | 
| 232 212 | 
             
            end
         | 
| @@ -34,6 +34,12 @@ module OpenStax::Accounts | |
| 34 34 | 
             
                      FactoryGirl.create(:openstax_accounts_account, username: nil)
         | 
| 35 35 | 
             
                    }.not_to raise_error
         | 
| 36 36 | 
             
                  end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                  it 'requires a role' do
         | 
| 39 | 
            +
                    expect{
         | 
| 40 | 
            +
                      FactoryGirl.create(:openstax_accounts_account, role: nil)
         | 
| 41 | 
            +
                    }.to raise_error(ActiveRecord::RecordInvalid)
         | 
| 42 | 
            +
                  end
         | 
| 37 43 | 
             
                end
         | 
| 38 44 |  | 
| 39 45 | 
             
                context 'updates' do
         | 
| @@ -36,7 +36,8 @@ module OpenStax | |
| 36 36 | 
             
                    expect(OpenStax::Accounts::Api).to receive(:find_or_create_account).with(
         | 
| 37 37 | 
             
                      email: 'bob@example.com', username: nil, password: nil,
         | 
| 38 38 | 
             
                      first_name: 'Bob', last_name: 'Smith', full_name: 'Bob Smith',
         | 
| 39 | 
            -
                      salesforce_contact_id: 'b0b', faculty_status: :rejected_faculty
         | 
| 39 | 
            +
                      salesforce_contact_id: 'b0b', faculty_status: :rejected_faculty,
         | 
| 40 | 
            +
                      role: :instructor
         | 
| 40 41 | 
             
                    ).and_return(find_or_create_account_response)
         | 
| 41 42 |  | 
| 42 43 | 
             
                    FindOrCreateAccount.call(
         | 
| @@ -45,7 +46,8 @@ module OpenStax | |
| 45 46 | 
             
                      last_name: 'Smith',
         | 
| 46 47 | 
             
                      full_name: 'Bob Smith',
         | 
| 47 48 | 
             
                      salesforce_contact_id: 'b0b',
         | 
| 48 | 
            -
                      faculty_status: :rejected_faculty
         | 
| 49 | 
            +
                      faculty_status: :rejected_faculty,
         | 
| 50 | 
            +
                      role: :instructor
         | 
| 49 51 | 
             
                    )
         | 
| 50 52 | 
             
                  end
         | 
| 51 53 |  | 
| @@ -10,7 +10,7 @@ module OpenStax | |
| 10 10 | 
             
                    allow_any_instance_of(controller_class).to(
         | 
| 11 11 | 
             
                      receive(:updates) do |controller|
         | 
| 12 12 | 
             
                        controller.render :json => [{id: 1, application_id: 1,
         | 
| 13 | 
            -
                                                    user: {id: 2, username: 'user'},
         | 
| 13 | 
            +
                                                    user: {id: 2, username: 'user', self_reported_role: 'instructor', uuid: 'booyah'},
         | 
| 14 14 | 
             
                                                    unread_updates: 1, default_contact_info_id: 1},
         | 
| 15 15 | 
             
                                                    {id: 3, application_id: 1,
         | 
| 16 16 | 
             
                                                    user: {id: 4, username: 'fuego'},
         | 
| @@ -36,6 +36,8 @@ module OpenStax | |
| 36 36 | 
             
                      expect(Account.count).to eq 2
         | 
| 37 37 | 
             
                      expect(Account.first.openstax_uid).to eq 2
         | 
| 38 38 | 
             
                      expect(Account.first.username).to eq 'user'
         | 
| 39 | 
            +
                      expect(Account.first.role).to eq 'instructor'
         | 
| 40 | 
            +
                      expect(Account.first.uuid).to eq 'booyah'
         | 
| 39 41 | 
             
                      expect(Account.last.openstax_uid).to eq 4
         | 
| 40 42 | 
             
                      expect(Account.last.username).to eq 'fuego'
         | 
| 41 43 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: openstax_accounts
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 7. | 
| 4 | 
            +
              version: 7.4.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - JP Slavinsky
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2017-05-17 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rails
         | 
| @@ -370,6 +370,7 @@ files: | |
| 370 370 | 
             
            - db/migrate/6_add_salesforce_contact_id_to_accounts_accounts.rb
         | 
| 371 371 | 
             
            - db/migrate/7_change_accounts_openstax_uid_to_be_nullable.rb
         | 
| 372 372 | 
             
            - db/migrate/8_change_accounts_username_to_be_nullable.rb
         | 
| 373 | 
            +
            - db/migrate/9_add_uuid_and_role_to_accounts_accounts.rb
         | 
| 373 374 | 
             
            - lib/generators/openstax/accounts/schedule/USAGE
         | 
| 374 375 | 
             
            - lib/generators/openstax/accounts/schedule/schedule_generator.rb
         | 
| 375 376 | 
             
            - lib/generators/openstax/accounts/schedule/templates/schedule.rb
         |