Repository URL to install this package:
|
Version:
7.3.3 ▾
|
# frozen_string_literal: true
require_relative 'database_helper'
require_relative 'fluent_helper'
require_relative 'fluent_module_helper'
module Faculty
# Spec helper module for creating module records for spec testing
module FluentStudentHelper
# Class for tracking state of a fluent module specification
class FluentStudentRecord < FluentHelper
include FluentModuleHelper
def initialize(**params)
super()
@student_code = params[:code]
@username = params[:username]
insert dbt.sits.student, params
end
def on_course(**params)
params[:join_code] ||= "#{@student_code}/1"
params[:route_code] ||= 'Uroute'
@join_code = params[:join_code]
maybe_insert dbt.sits.route, code: params[:route_code]
insert dbt.sits.student_course, params, student_code: @student_code
self
end
def with_enrolment(**params)
params[:department_code] ||= '5050'
maybe_insert dbt.sits.department, code: params[:department_code]
insert dbt.sits.enrolment, params, join_code: @join_code
self
end
def in(**params)
params[:department_code] ||= '5050'
maybe_insert dbt.sits.department, code: params[:department_code]
insert dbt.sits.student_course_department, params, join_code: @join_code
self
end
def with_person(**params)
params[:username] = @username
maybe_insert(dbt.people.person, **params)
self
end
def on_module(**params)
add_module(**params)
insert(dbt.sits.student_module, params.slice(*student_module_columns), join_code: @join_code)
self
end
private
def add_module(**params)
sits_module(**params.slice(*module_occurrence_columns))
.with_period(**params.slice(*module_period_columns))
.tap { |module_helper| add_record_to_cleanup module_helper }
end
def module_occurrence_columns
@module_occurrence_columns ||= dbt.sits.module_occurrence.table.columns
end
def module_period_columns
@module_period_columns ||= dbt.sits.module_period.table.columns
end
def student_module_columns
@student_module_columns ||= dbt.sits.student_module.table.columns
end
end
def student(...)
FluentStudentRecord.new(...)
end
end
end