instructure/lti_template_builder

View on GitHub
lib/lti_template_builder/recipes/lti_extension/lti_extension.rb

Summary

Maintainability
A
1 hr
Test Coverage
module LtiTemplateBuilder
  class LtiExtension < Recipe
    def self.description
      "Installs all things LTI related (ims-lti gem and extensions)"
    end

    def setup(args)
      @gem_dependencies << ["ims-lti"]
      @enabled_extensions = args[:enabled_extensions] || []
      @after_bundle_commands << "generate 'controller lti index'"

      @additional_configs = []
      @additional_configs << "      tc.canvas_homework_submission!(enabled: true)" if @enabled_extensions.include? :homework_submission
      @additional_configs << "      tc.canvas_editor_button!(enabled: true)"       if @enabled_extensions.include? :editor_button
      @additional_configs << "      tc.canvas_resource_selection!(enabled: true)"  if @enabled_extensions.include? :resource_selection
      @additional_configs << "      tc.canvas_account_navigation!(enabled: true)"  if @enabled_extensions.include? :account_navigation
      @additional_configs << "      tc.canvas_course_navigation!(enabled: true)"   if @enabled_extensions.include? :course_navigation
      @additional_configs << "      tc.canvas_user_navigation!(enabled: true)"     if @enabled_extensions.include? :user_navigation

      @extra_expects = ["\n"]
      @extra_expects << "          expect(response.body).to include('<lticm:options name=\"homework_submission\">')" if @enabled_extensions.include? :homework_submission
      @extra_expects << "          expect(response.body).to include('<lticm:options name=\"editor_button\">')"       if @enabled_extensions.include? :editor_button
      @extra_expects << "          expect(response.body).to include('<lticm:options name=\"resource_selection\">')"  if @enabled_extensions.include? :resource_selection
      @extra_expects << "          expect(response.body).to include('<lticm:options name=\"account_navigation\">')"  if @enabled_extensions.include? :account_navigation
      @extra_expects << "          expect(response.body).to include('<lticm:options name=\"course_navigation\">')"   if @enabled_extensions.include? :course_navigation
      @extra_expects << "          expect(response.body).to include('<lticm:options name=\"user_navigation\">')"     if @enabled_extensions.include? :user_navigation
    end
  end
end