Create outcome import models

refs OUT-1534

test plan:
  - qa-cr

Change-Id: Id7de1f7f9b4408543a08eee2947e4d6251d7d9d6
Reviewed-on: https://gerrit.instructure.com/141811
Reviewed-by: Rob Orton <rob@instructure.com>
Tested-by: Jenkins
Reviewed-by: Michael Brewer-Davis <mbd@instructure.com>
QA-Review: Leo Abner <rabner@instructure.com>
Product-Review: Michael Brewer-Davis <mbd@instructure.com>
This commit is contained in:
Augusto Callejas 2018-02-23 14:49:49 -10:00
parent 7030256618
commit ae690d09f6
6 changed files with 194 additions and 0 deletions

View File

@ -0,0 +1,40 @@
#
# Copyright (C) 2018 - present Instructure, Inc.
#
# This file is part of Canvas.
#
# Canvas is free software: you can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the Free
# Software Foundation, version 3 of the License.
#
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
# details.
#
# You should have received a copy of the GNU Affero General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
class OutcomeImport < ApplicationRecord
include Workflow
belongs_to :context, polymorphic: %i[account course]
belongs_to :attachment
belongs_to :user
has_many :outcome_import_errors
validates :context_type, presence: true
validates :context_id, presence: true
validates :workflow_state, presence: true
workflow do
state :initializing
state :created
state :importing
state :imported
state :imported_with_messages
state :aborted
state :failed
state :failed_with_messages
end
end

View File

@ -0,0 +1,24 @@
#
# Copyright (C) 2018 - present Instructure, Inc.
#
# This file is part of Canvas.
#
# Canvas is free software: you can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the Free
# Software Foundation, version 3 of the License.
#
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
# details.
#
# You should have received a copy of the GNU Affero General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
class OutcomeImportError < ApplicationRecord
belongs_to :outcome_import, inverse_of: :outcome_import_errors
validates :outcome_import_id, presence: true
validates :message, presence: true
end

View File

@ -0,0 +1,37 @@
#
# Copyright (C) 2018 - present Instructure, Inc.
#
# This file is part of Canvas.
#
# Canvas is free software: you can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the Free
# Software Foundation, version 3 of the License.
#
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
# details.
#
# You should have received a copy of the GNU Affero General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
class CreateOutcomeImports < ActiveRecord::Migration[5.0]
tag :predeploy
def change
create_table :outcome_imports do |t|
t.string :workflow_state, null: false
t.integer :context_id, limit: 8, null: false
t.string :context_type, null: false
t.references :user, foreign_key: true, limit: 8
t.references :attachment, foreign_key: true, limit: 8
t.integer :progress
t.timestamp :ended_at
t.timestamps
end
add_index :outcome_imports, %i[context_type context_id]
end
end

View File

@ -0,0 +1,30 @@
#
# Copyright (C) 2018 - present Instructure, Inc.
#
# This file is part of Canvas.
#
# Canvas is free software: you can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the Free
# Software Foundation, version 3 of the License.
#
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
# details.
#
# You should have received a copy of the GNU Affero General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
class CreateOutcomeImportErrors < ActiveRecord::Migration[5.0]
tag :predeploy
def change
create_table :outcome_import_errors do |t|
t.references :outcome_import, foreign_key: true, limit: 8, null: false
t.string :message, null: false, limit: 255
t.timestamps
end
end
end

View File

@ -0,0 +1,30 @@
#
# Copyright (C) 2018 - present Instructure, Inc.
#
# This file is part of Canvas.
#
# Canvas is free software: you can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the Free
# Software Foundation, version 3 of the License.
#
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
# details.
#
# You should have received a copy of the GNU Affero General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper.rb')
describe OutcomeImportError, type: :model do
describe 'associations' do
it { is_expected.to belong_to(:outcome_import) }
end
describe 'validations' do
it { is_expected.to validate_presence_of :message }
it { is_expected.to validate_presence_of :outcome_import_id }
end
end

View File

@ -0,0 +1,33 @@
#
# Copyright (C) 2018 - present Instructure, Inc.
#
# This file is part of Canvas.
#
# Canvas is free software: you can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the Free
# Software Foundation, version 3 of the License.
#
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
# details.
#
# You should have received a copy of the GNU Affero General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper.rb')
describe OutcomeImport, type: :model do
describe 'associations' do
it { is_expected.to belong_to(:context) }
it { is_expected.to belong_to(:attachment) }
it { is_expected.to belong_to(:user) }
it { is_expected.to have_many(:outcome_import_errors) }
end
describe 'validations' do
it { is_expected.to validate_presence_of :context_type }
it { is_expected.to validate_presence_of :context_id }
end
end