From 17ca614a8383429543a152cb6b23116b26099081 Mon Sep 17 00:00:00 2001
From: Arnaud Levy <contact@arnaudlevy.com>
Date: Wed, 16 Mar 2022 17:25:10 +0100
Subject: [PATCH] alumni wip

---
 app/assets/stylesheets/application.sass       |  1 -
 .../university/person/alumni_controller.rb    | 49 +++++++++++++++++++
 .../person/alumnus/imports_controller.rb      | 43 ++++++++++++++++
 app/models/university/person.rb               |  2 +
 app/models/university/person/administrator.rb |  1 +
 app/models/university/person/alumnus.rb       |  1 +
 .../university/person/alumnus/import.rb       | 28 +++++++++++
 app/models/university/person/author.rb        |  1 +
 app/models/university/person/researcher.rb    |  1 +
 app/models/university/person/teacher.rb       |  1 +
 .../with_people_and_organizations.rb          |  3 ++
 .../organization/imports/index.html.erb       |  1 +
 .../university/person/alumni/_list.html.erb   | 16 ++++++
 .../university/person/alumni/index.html.erb   | 14 ++++++
 .../person/alumnus/imports/index.html.erb     | 22 +++++++++
 .../person/alumnus/imports/new.html.erb       |  5 ++
 .../person/alumnus/imports/show.html.erb      | 14 ++++++
 config/admin_navigation.rb                    |  2 +-
 config/locales/university/en.yml              |  3 ++
 config/locales/university/fr.yml              |  3 ++
 config/routes.rb                              |  7 +++
 config/routes/admin/university.rb             |  6 +++
 ...reate_university_person_alumnus_imports.rb | 10 ++++
 ...155340_add_alumnus_to_university_person.rb |  5 ++
 db/schema.rb                                  |  3 +-
 .../person/alumnus/imports_controller_test.rb | 48 ++++++++++++++++++
 .../university/person/alumnus/imports.yml     |  9 ++++
 .../university/person/alumnus/import_test.rb  |  7 +++
 .../university/person/alumnus/imports_test.rb | 45 +++++++++++++++++
 29 files changed, 348 insertions(+), 3 deletions(-)
 create mode 100644 app/controllers/admin/university/person/alumni_controller.rb
 create mode 100644 app/controllers/admin/university/person/alumnus/imports_controller.rb
 create mode 100644 app/models/university/person/alumnus/import.rb
 create mode 100644 app/views/admin/university/person/alumni/_list.html.erb
 create mode 100644 app/views/admin/university/person/alumni/index.html.erb
 create mode 100644 app/views/admin/university/person/alumnus/imports/index.html.erb
 create mode 100644 app/views/admin/university/person/alumnus/imports/new.html.erb
 create mode 100644 app/views/admin/university/person/alumnus/imports/show.html.erb
 create mode 100644 db/migrate/20220316153148_create_university_person_alumnus_imports.rb
 create mode 100644 db/migrate/20220316155340_add_alumnus_to_university_person.rb
 create mode 100644 test/controllers/university/person/alumnus/imports_controller_test.rb
 create mode 100644 test/fixtures/university/person/alumnus/imports.yml
 create mode 100644 test/models/university/person/alumnus/import_test.rb
 create mode 100644 test/system/university/person/alumnus/imports_test.rb

diff --git a/app/assets/stylesheets/application.sass b/app/assets/stylesheets/application.sass
index 819e1e0d4..bef6a9cea 100644
--- a/app/assets/stylesheets/application.sass
+++ b/app/assets/stylesheets/application.sass
@@ -1,5 +1,4 @@
 @import 'bootstrap'
-@import 'appstack/light'
 @import 'simple_form_password_with_hints'
 @import 'simple_form_bs5_file_input'
 @import 'cropperjs/dist/cropper'
diff --git a/app/controllers/admin/university/person/alumni_controller.rb b/app/controllers/admin/university/person/alumni_controller.rb
new file mode 100644
index 000000000..5fd37feb5
--- /dev/null
+++ b/app/controllers/admin/university/person/alumni_controller.rb
@@ -0,0 +1,49 @@
+class Admin::University::Person::AlumniController < Admin::University::ApplicationController
+  before_action :load_alumnus, only: [:show, :edit, :update]
+
+  def index
+    @alumni = current_university.people
+                                .alumni
+                                .accessible_by(current_ability)
+                                .ordered
+                                .page(params[:page])
+    breadcrumb
+  end
+
+  def show
+    breadcrumb
+  end
+
+  def edit
+    breadcrumb
+    add_breadcrumb t('edit')
+  end
+
+  def update
+    if @alumnus.update(alumnus_params)
+      redirect_to [:admin, @alumnus],
+                  notice: t('admin.successfully_updated_html', model: @alumnus.to_s)
+    else
+      render :edit
+      breadcrumb
+      add_breadcrumb t('edit')
+    end
+  end
+
+  protected
+
+  def breadcrumb
+    super
+    add_breadcrumb  University::Person::Alumnus.model_name.human(count: 2),
+                    admin_university_person_alumni_index_path
+    breadcrumb_for  @alumnus
+  end
+
+  def load_alumnus
+  end
+
+  def alumnus_params
+    params.require(:university_person_alumnus)
+          .permit()
+  end
+end
diff --git a/app/controllers/admin/university/person/alumnus/imports_controller.rb b/app/controllers/admin/university/person/alumnus/imports_controller.rb
new file mode 100644
index 000000000..e642d250a
--- /dev/null
+++ b/app/controllers/admin/university/person/alumnus/imports_controller.rb
@@ -0,0 +1,43 @@
+class Admin::University::Person::Alumnus::ImportsController < Admin::University::ApplicationController
+  load_and_authorize_resource class: University::Person::Alumnus::Import,
+                              through: :current_university,
+                              through_association: :person_alumnus_imports
+
+  def index
+    breadcrumb
+  end
+
+  def show
+    breadcrumb
+  end
+
+  def new
+    breadcrumb
+  end
+
+  def create
+    @import.university = current_university
+    @import.user = current_user
+    if @import.save
+      redirect_to [:admin, @import], notice: "Import was successfully created."
+    else
+      render :new, status: :unprocessable_entity
+    end
+  end
+
+  protected
+
+  def breadcrumb
+    super
+    add_breadcrumb  University::Person::Alumnus.model_name.human(count: 2),
+                    admin_university_person_alumni_index_path
+    add_breadcrumb  University::Person::Alumnus::Import.model_name.human(count: 2),
+                    admin_university_person_alumnus_imports_path
+    breadcrumb_for  @import
+  end
+
+  def import_params
+    params.require(:university_person_alumnus_import)
+          .permit(:file)
+  end
+end
diff --git a/app/models/university/person.rb b/app/models/university/person.rb
index de5dd5cce..6c58a15b9 100644
--- a/app/models/university/person.rb
+++ b/app/models/university/person.rb
@@ -9,6 +9,7 @@
 #  first_name        :string
 #  habilitation      :boolean          default(FALSE)
 #  is_administration :boolean
+#  is_alumnus        :boolean          default(FALSE)
 #  is_researcher     :boolean
 #  is_teacher        :boolean
 #  last_name         :string
@@ -103,6 +104,7 @@ class University::Person < ApplicationRecord
   scope :administration, -> { where(is_administration: true) }
   scope :teachers,        -> { where(is_teacher: true) }
   scope :researchers,     -> { where(is_researcher: true) }
+  scope :alumni,     -> { where(is_alumnus: true) }
 
   def to_s
     "#{first_name} #{last_name}"
diff --git a/app/models/university/person/administrator.rb b/app/models/university/person/administrator.rb
index 9399c21e3..178b11e82 100644
--- a/app/models/university/person/administrator.rb
+++ b/app/models/university/person/administrator.rb
@@ -9,6 +9,7 @@
 #  first_name        :string
 #  habilitation      :boolean          default(FALSE)
 #  is_administration :boolean
+#  is_alumnus        :boolean          default(FALSE)
 #  is_researcher     :boolean
 #  is_teacher        :boolean
 #  last_name         :string
diff --git a/app/models/university/person/alumnus.rb b/app/models/university/person/alumnus.rb
index 242788896..477f0ef30 100644
--- a/app/models/university/person/alumnus.rb
+++ b/app/models/university/person/alumnus.rb
@@ -9,6 +9,7 @@
 #  first_name        :string
 #  habilitation      :boolean          default(FALSE)
 #  is_administration :boolean
+#  is_alumnus        :boolean          default(FALSE)
 #  is_researcher     :boolean
 #  is_teacher        :boolean
 #  last_name         :string
diff --git a/app/models/university/person/alumnus/import.rb b/app/models/university/person/alumnus/import.rb
new file mode 100644
index 000000000..4a7a12f93
--- /dev/null
+++ b/app/models/university/person/alumnus/import.rb
@@ -0,0 +1,28 @@
+class University::Person::Alumnus::Import < ApplicationRecord
+  include WithUniversity
+
+  belongs_to :user
+
+  has_one_attached :file
+
+  after_save :parse
+
+  def self.polymorphic_name
+    'University::Person::Alumnus::Import'
+  end
+
+  def lines
+    csv.count
+  rescue
+    'NA'
+  end
+
+  def to_s
+    "#{user}, #{I18n.l created_at}"
+  end
+
+  protected
+
+  def parse
+  end
+end
diff --git a/app/models/university/person/author.rb b/app/models/university/person/author.rb
index 60b4ff639..50c3f8280 100644
--- a/app/models/university/person/author.rb
+++ b/app/models/university/person/author.rb
@@ -9,6 +9,7 @@
 #  first_name        :string
 #  habilitation      :boolean          default(FALSE)
 #  is_administration :boolean
+#  is_alumnus        :boolean          default(FALSE)
 #  is_researcher     :boolean
 #  is_teacher        :boolean
 #  last_name         :string
diff --git a/app/models/university/person/researcher.rb b/app/models/university/person/researcher.rb
index 396d77c3c..2e7428dda 100644
--- a/app/models/university/person/researcher.rb
+++ b/app/models/university/person/researcher.rb
@@ -9,6 +9,7 @@
 #  first_name        :string
 #  habilitation      :boolean          default(FALSE)
 #  is_administration :boolean
+#  is_alumnus        :boolean          default(FALSE)
 #  is_researcher     :boolean
 #  is_teacher        :boolean
 #  last_name         :string
diff --git a/app/models/university/person/teacher.rb b/app/models/university/person/teacher.rb
index 69724392c..35e936ee7 100644
--- a/app/models/university/person/teacher.rb
+++ b/app/models/university/person/teacher.rb
@@ -9,6 +9,7 @@
 #  first_name        :string
 #  habilitation      :boolean          default(FALSE)
 #  is_administration :boolean
+#  is_alumnus        :boolean          default(FALSE)
 #  is_researcher     :boolean
 #  is_teacher        :boolean
 #  last_name         :string
diff --git a/app/models/university/with_people_and_organizations.rb b/app/models/university/with_people_and_organizations.rb
index d943867e0..ad270f63a 100644
--- a/app/models/university/with_people_and_organizations.rb
+++ b/app/models/university/with_people_and_organizations.rb
@@ -11,5 +11,8 @@ module University::WithPeopleAndOrganizations
     has_many  :organization_imports,
               class_name: 'University::Organization::Import',
               dependent: :destroy
+    has_many :person_alumnus_imports,
+              class_name: 'University::Person::Alumnus::Import',
+              dependent: :destroy
   end
 end
diff --git a/app/views/admin/university/organization/imports/index.html.erb b/app/views/admin/university/organization/imports/index.html.erb
index 7a1332c6f..f06991e44 100644
--- a/app/views/admin/university/organization/imports/index.html.erb
+++ b/app/views/admin/university/organization/imports/index.html.erb
@@ -16,6 +16,7 @@
     <% end %>
   </tbody>
 </table>
+
 <% content_for :action_bar_right do %>
   <%= create_link University::Organization::Import %>
 <% end %>
diff --git a/app/views/admin/university/person/alumni/_list.html.erb b/app/views/admin/university/person/alumni/_list.html.erb
new file mode 100644
index 000000000..8af5512e6
--- /dev/null
+++ b/app/views/admin/university/person/alumni/_list.html.erb
@@ -0,0 +1,16 @@
+<table class="<%= table_classes %>">
+  <thead>
+    <tr>
+      <th><%= University::Person.human_attribute_name('last_name') %></th>
+      <th><%= University::Person.human_attribute_name('first_name') %></th>
+    </tr>
+  </thead>
+  <tbody>
+    <% alumni.each do |alumnus| %>
+      <tr>
+        <td><%= link_to alumnus.last_name, admin_university_alumnus_path(alumnus) %></td>
+        <td><%= link_to alumnus.first_name, admin_university_alumnus_path(alumnus) %></td>
+      </tr>
+    <% end %>
+  </tbody>
+</table>
diff --git a/app/views/admin/university/person/alumni/index.html.erb b/app/views/admin/university/person/alumni/index.html.erb
new file mode 100644
index 000000000..ce860626c
--- /dev/null
+++ b/app/views/admin/university/person/alumni/index.html.erb
@@ -0,0 +1,14 @@
+<% content_for :title, "#{University::Person::Alumnus.model_name.human(count: 2)} (#{@alumni.total_count})" %>
+
+<%= render 'admin/university/person/alumni/list', alumni: @alumni %>
+
+<%= paginate @alumni, theme: 'bootstrap-5' %>
+
+<% content_for :action_bar_left do %>
+  <%#= link_to t('import'),
+              admin_university_person_alumnus_imports_path,
+              class: button_classes if can? :manage, University::Person::Alumnus::Import %>
+<% end %>
+
+<% content_for :action_bar_right do %>
+<% end %>
diff --git a/app/views/admin/university/person/alumnus/imports/index.html.erb b/app/views/admin/university/person/alumnus/imports/index.html.erb
new file mode 100644
index 000000000..d5374b649
--- /dev/null
+++ b/app/views/admin/university/person/alumnus/imports/index.html.erb
@@ -0,0 +1,22 @@
+<% content_for :title, University::Person::Alumnus::Import.model_name.human(count: 2) %>
+
+<table class="<%= table_classes %>">
+  <thead>
+    <tr>
+      <th><%= University::Person::Alumnus::Import.human_attribute_name('name') %></th>
+      <th><%= University::Person::Alumnus::Import.human_attribute_name('lines') %></th>
+    </tr>
+  </thead>
+  <tbody>
+    <% @imports.each do |import| %>
+      <tr>
+        <td><%= link_to import, [:admin, import] %></td>
+        <td><%= import.lines %></td>
+      </tr>
+    <% end %>
+  </tbody>
+</table>
+
+<% content_for :action_bar_right do %>
+  <%= create_link University::Person::Alumnus::Import %>
+<% end %>
diff --git a/app/views/admin/university/person/alumnus/imports/new.html.erb b/app/views/admin/university/person/alumnus/imports/new.html.erb
new file mode 100644
index 000000000..a514d9942
--- /dev/null
+++ b/app/views/admin/university/person/alumnus/imports/new.html.erb
@@ -0,0 +1,5 @@
+<h1>New University Person Alumnus Import</h1>
+
+<%= render 'form', university_person_alumnus_import: @university_person_alumnus_import %>
+
+<%= link_to 'Back', university_person_alumnus_imports_path %>
diff --git a/app/views/admin/university/person/alumnus/imports/show.html.erb b/app/views/admin/university/person/alumnus/imports/show.html.erb
new file mode 100644
index 000000000..a5c23fddc
--- /dev/null
+++ b/app/views/admin/university/person/alumnus/imports/show.html.erb
@@ -0,0 +1,14 @@
+<p id="notice"><%= notice %></p>
+
+<p>
+  <strong>University:</strong>
+  <%= @university_person_alumnus_import.university_id %>
+</p>
+
+<p>
+  <strong>User:</strong>
+  <%= @university_person_alumnus_import.user_id %>
+</p>
+
+<%= link_to 'Edit', edit_university_person_alumnus_import_path(@university_person_alumnus_import) %> |
+<%= link_to 'Back', university_person_alumnus_imports_path %>
diff --git a/config/admin_navigation.rb b/config/admin_navigation.rb
index 4ad235c33..acd7fbcfa 100644
--- a/config/admin_navigation.rb
+++ b/config/admin_navigation.rb
@@ -10,6 +10,7 @@ SimpleNavigation::Configuration.run do |navigation|
       primary.item :university, University.model_name.human, nil, { kind: :header }
       primary.item :university, University::Person.model_name.human(count: 2), admin_university_people_path, { icon: 'users-cog' }
       primary.item :university, University::Organization.model_name.human(count: 2), admin_university_organizations_path, { icon: 'building' }
+      primary.item :communication_alumni, University::Person::Alumnus.model_name.human(count: 2), admin_university_person_alumni_index_path, { icon: 'users' }
     end
 
     if can?(:read, Education::Program)
@@ -35,7 +36,6 @@ SimpleNavigation::Configuration.run do |navigation|
       primary.item :communication_websites, Communication::Website.model_name.human(count: 2), admin_communication_websites_path, { icon: 'sitemap' } if can?(:read, Communication::Website)
       primary.item :communication_extranets, Communication::Extranet.model_name.human(count: 2), admin_communication_extranets_path, { icon: 'project-diagram' }
       primary.item :communication_newsletters, 'Lettres d\'information', nil, { icon: 'envelope' }
-      primary.item :communication_alumni, 'Alumni', nil, { icon: 'users' }
     end
 
     if can?(:read, Administration::Qualiopi::Criterion)
diff --git a/config/locales/university/en.yml b/config/locales/university/en.yml
index 9204e1417..10e334422 100644
--- a/config/locales/university/en.yml
+++ b/config/locales/university/en.yml
@@ -64,6 +64,9 @@ en:
       university/person/involvement:
         one: Involvement
         other: Involvements
+      university/person/alumnus:
+        one: Alumnus
+        other: Alumni
       university/organization:
         one: Third party
         other: Third parties
diff --git a/config/locales/university/fr.yml b/config/locales/university/fr.yml
index 418aefe39..aa0fb6657 100644
--- a/config/locales/university/fr.yml
+++ b/config/locales/university/fr.yml
@@ -64,6 +64,9 @@ fr:
       university/person/involvement:
         one: Implication
         other: Implications
+      university/person/alumnus:
+        one: Alumnus
+        other: Alumni
       university/organization:
         one: Tierce partie
         other: Tierces parties
diff --git a/config/routes.rb b/config/routes.rb
index 45bd12e82..03d12edd3 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,4 +1,11 @@
 Rails.application.routes.draw do
+  namespace :university do
+    namespace :person do
+      namespace :alumnus do
+        resources :imports
+      end
+    end
+  end
   resources :university_person_alumnus_imports
   authenticated :user, -> user { user.server_admin? } do
     match "/delayed_job" => DelayedJobWeb, :anchor => false, :via => [:get, :post]
diff --git a/config/routes/admin/university.rb b/config/routes/admin/university.rb
index cb94a97ad..dedeb7272 100644
--- a/config/routes/admin/university.rb
+++ b/config/routes/admin/university.rb
@@ -3,4 +3,10 @@ namespace :university do
   namespace :organization do
     resources :imports, only: [:index, :show, :new, :create]
   end
+  namespace :person do
+    resources :alumni
+    namespace :alumnus do
+      resources :imports, only: [:index, :show, :new, :create]
+    end
+  end
 end
diff --git a/db/migrate/20220316153148_create_university_person_alumnus_imports.rb b/db/migrate/20220316153148_create_university_person_alumnus_imports.rb
new file mode 100644
index 000000000..635181158
--- /dev/null
+++ b/db/migrate/20220316153148_create_university_person_alumnus_imports.rb
@@ -0,0 +1,10 @@
+class CreateUniversityPersonAlumnusImports < ActiveRecord::Migration[6.1]
+  def change
+    create_table :university_person_alumnus_imports, id: :uuid do |t|
+      t.references :university, null: false, foreign_key: true, type: :uuid
+      t.references :user, null: false, foreign_key: true, type: :uuid
+
+      t.timestamps
+    end
+  end
+end
diff --git a/db/migrate/20220316155340_add_alumnus_to_university_person.rb b/db/migrate/20220316155340_add_alumnus_to_university_person.rb
new file mode 100644
index 000000000..901ee02fb
--- /dev/null
+++ b/db/migrate/20220316155340_add_alumnus_to_university_person.rb
@@ -0,0 +1,5 @@
+class AddAlumnusToUniversityPerson < ActiveRecord::Migration[6.1]
+  def change
+    add_column :university_people, :is_alumnus, :bool, default: false
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 67016a4c7..4e642214a 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema.define(version: 2022_03_16_151533) do
+ActiveRecord::Schema.define(version: 2022_03_16_155340) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "pgcrypto"
@@ -646,6 +646,7 @@ ActiveRecord::Schema.define(version: 2022_03_16_151533) do
     t.string "url"
     t.string "twitter"
     t.string "linkedin"
+    t.boolean "is_alumnus", default: false
     t.index ["university_id"], name: "index_university_people_on_university_id"
     t.index ["user_id"], name: "index_university_people_on_user_id"
   end
diff --git a/test/controllers/university/person/alumnus/imports_controller_test.rb b/test/controllers/university/person/alumnus/imports_controller_test.rb
new file mode 100644
index 000000000..8585a49c7
--- /dev/null
+++ b/test/controllers/university/person/alumnus/imports_controller_test.rb
@@ -0,0 +1,48 @@
+require "test_helper"
+
+class University::Person::Alumnus::ImportsControllerTest < ActionDispatch::IntegrationTest
+  setup do
+    @university_person_alumnus_import = university_person_alumnus_imports(:one)
+  end
+
+  test "should get index" do
+    get university_person_alumnus_imports_url
+    assert_response :success
+  end
+
+  test "should get new" do
+    get new_university_person_alumnus_import_url
+    assert_response :success
+  end
+
+  test "should create university_person_alumnus_import" do
+    assert_difference('University::Person::Alumnus::Import.count') do
+      post university_person_alumnus_imports_url, params: { university_person_alumnus_import: { university_id: @university_person_alumnus_import.university_id, user_id: @university_person_alumnus_import.user_id } }
+    end
+
+    assert_redirected_to university_person_alumnus_import_url(University::Person::Alumnus::Import.last)
+  end
+
+  test "should show university_person_alumnus_import" do
+    get university_person_alumnus_import_url(@university_person_alumnus_import)
+    assert_response :success
+  end
+
+  test "should get edit" do
+    get edit_university_person_alumnus_import_url(@university_person_alumnus_import)
+    assert_response :success
+  end
+
+  test "should update university_person_alumnus_import" do
+    patch university_person_alumnus_import_url(@university_person_alumnus_import), params: { university_person_alumnus_import: { university_id: @university_person_alumnus_import.university_id, user_id: @university_person_alumnus_import.user_id } }
+    assert_redirected_to university_person_alumnus_import_url(@university_person_alumnus_import)
+  end
+
+  test "should destroy university_person_alumnus_import" do
+    assert_difference('University::Person::Alumnus::Import.count', -1) do
+      delete university_person_alumnus_import_url(@university_person_alumnus_import)
+    end
+
+    assert_redirected_to university_person_alumnus_imports_url
+  end
+end
diff --git a/test/fixtures/university/person/alumnus/imports.yml b/test/fixtures/university/person/alumnus/imports.yml
new file mode 100644
index 000000000..b712a4f08
--- /dev/null
+++ b/test/fixtures/university/person/alumnus/imports.yml
@@ -0,0 +1,9 @@
+# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
+
+one:
+  university: one
+  user: one
+
+two:
+  university: two
+  user: two
diff --git a/test/models/university/person/alumnus/import_test.rb b/test/models/university/person/alumnus/import_test.rb
new file mode 100644
index 000000000..980cdf30a
--- /dev/null
+++ b/test/models/university/person/alumnus/import_test.rb
@@ -0,0 +1,7 @@
+require "test_helper"
+
+class University::Person::Alumnus::ImportTest < ActiveSupport::TestCase
+  # test "the truth" do
+  #   assert true
+  # end
+end
diff --git a/test/system/university/person/alumnus/imports_test.rb b/test/system/university/person/alumnus/imports_test.rb
new file mode 100644
index 000000000..1f10cd1aa
--- /dev/null
+++ b/test/system/university/person/alumnus/imports_test.rb
@@ -0,0 +1,45 @@
+require "application_system_test_case"
+
+class University::Person::Alumnus::ImportsTest < ApplicationSystemTestCase
+  setup do
+    @university_person_alumnus_import = university_person_alumnus_imports(:one)
+  end
+
+  test "visiting the index" do
+    visit university_person_alumnus_imports_url
+    assert_selector "h1", text: "University/Person/Alumnus/Imports"
+  end
+
+  test "creating a Import" do
+    visit university_person_alumnus_imports_url
+    click_on "New University/Person/Alumnus/Import"
+
+    fill_in "University", with: @university_person_alumnus_import.university_id
+    fill_in "User", with: @university_person_alumnus_import.user_id
+    click_on "Create Import"
+
+    assert_text "Import was successfully created"
+    click_on "Back"
+  end
+
+  test "updating a Import" do
+    visit university_person_alumnus_imports_url
+    click_on "Edit", match: :first
+
+    fill_in "University", with: @university_person_alumnus_import.university_id
+    fill_in "User", with: @university_person_alumnus_import.user_id
+    click_on "Update Import"
+
+    assert_text "Import was successfully updated"
+    click_on "Back"
+  end
+
+  test "destroying a Import" do
+    visit university_person_alumnus_imports_url
+    page.accept_confirm do
+      click_on "Destroy", match: :first
+    end
+
+    assert_text "Import was successfully destroyed"
+  end
+end
-- 
GitLab