/
kickrich
/
ProjectUniversityPractice
Обзор
Документация
Войти
/
kickrich
/
ProjectUniversityPractice
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
coverage/index.html
12 532 строки
277 KB
kickrich
change
18 июл 2025, 16:21
18 июл 2025, 16:21
d4064bd
Код
Авторство
О чём код?
<!DOCTYPE html> <html xmlns='http://www.w3.org/1999/xhtml'> <head> <title>Code coverage for Projectuniversitypractice</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <script src='./assets/0.13.1/application.js' type='text/javascript'></script> <link href='./assets/0.13.1/application.css' media='screen, projection, print' rel='stylesheet' type='text/css' /> <link rel="icon" type="image/png" href="./assets/0.13.1/favicon_green.png" /> </head> <body> <div id="loading"> <img src="./assets/0.13.1/loading.gif" alt="loading"/> </div> <div id="wrapper" class="hide"> <div class="timestamp">Generated <abbr class="timeago" title="2025-07-18T15:39:11+03:00">2025-07-18T15:39:11+03:00</abbr></div> <ul class="group_tabs"></ul> <div id="content"> <div class="file_list_container" id="AllFiles"> <h2> <span class="group_name">All Files</span> (<span class="covered_percent"> <span class="green"> 99.49% </span> </span> covered at <span class="covered_strength"> <span class="green"> 4.08 </span> </span> hits/line ) </h2> <a name="AllFiles"></a> <div> <b>28</b> files in total. </div> <div class="t-line-summary"> <b>389</b> relevant lines, <span class="green"><b>387</b> lines covered</span> and <span class="red"><b>2</b> lines missed. </span> (<span class="green"> 99.49% </span> ) </div> <div class="file_list--responsive"> <table class="file_list"> <thead> <tr> <th>File</th> <th class="cell--number">% covered</th> <th class="cell--number">Lines</th> <th class="cell--number">Relevant Lines</th> <th class="cell--number">Lines covered</th> <th class="cell--number">Lines missed</th> <th class="cell--number">Avg. Hits / Line</th> </tr> </thead> <tbody> <tr class="t-file"> <td class="strong t-file__name"><a href="#90eba5c8fb1a94765580c1613a7498f45905538e" class="src_link" title="app/controllers/application_controller.rb">app/controllers/application_controller.rb</a></td> <td class="yellow strong cell--number t-file__coverage">83.33 %</td> <td class="cell--number">11</td> <td class="cell--number">6</td> <td class="cell--number">5</td> <td class="cell--number">1</td> <td class="cell--number">0.83</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#f6bf99a61666f70057beea5af02ff5d7c43bfd9c" class="src_link" title="app/controllers/projects_controller.rb">app/controllers/projects_controller.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">60</td> <td class="cell--number">32</td> <td class="cell--number">32</td> <td class="cell--number">0</td> <td class="cell--number">3.25</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#f414220cec3f49380a2ebaff612a12427b944efd" class="src_link" title="app/controllers/tasks_controller.rb">app/controllers/tasks_controller.rb</a></td> <td class="green strong cell--number t-file__coverage">98.00 %</td> <td class="cell--number">91</td> <td class="cell--number">50</td> <td class="cell--number">49</td> <td class="cell--number">1</td> <td class="cell--number">3.94</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#1cac831cfa942c47affe5dfa7390afa634123b74" class="src_link" title="app/helpers/application_helper.rb">app/helpers/application_helper.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">2</td> <td class="cell--number">1</td> <td class="cell--number">1</td> <td class="cell--number">0</td> <td class="cell--number">1.00</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#f9363ff9c5164c10825f9f5511da835040b53002" class="src_link" title="app/helpers/home_helper.rb">app/helpers/home_helper.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">2</td> <td class="cell--number">1</td> <td class="cell--number">1</td> <td class="cell--number">0</td> <td class="cell--number">1.00</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#24e31dbe11fdb72818689cb6961d803ddff8c40f" class="src_link" title="app/helpers/projects_helper.rb">app/helpers/projects_helper.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">2</td> <td class="cell--number">1</td> <td class="cell--number">1</td> <td class="cell--number">0</td> <td class="cell--number">1.00</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#d6b734e6896f43bd730ce270a5398eb453e3450b" class="src_link" title="app/helpers/tasks_helper.rb">app/helpers/tasks_helper.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">2</td> <td class="cell--number">1</td> <td class="cell--number">1</td> <td class="cell--number">0</td> <td class="cell--number">1.00</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#ec171751af444de0cb219a99face065e22b9ffc1" class="src_link" title="app/models/application_record.rb">app/models/application_record.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">3</td> <td class="cell--number">2</td> <td class="cell--number">2</td> <td class="cell--number">0</td> <td class="cell--number">1.00</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#1d7947a620dac982a4abf5b1e3e63e618fc33250" class="src_link" title="app/models/project.rb">app/models/project.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">6</td> <td class="cell--number">4</td> <td class="cell--number">4</td> <td class="cell--number">0</td> <td class="cell--number">1.00</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#85bc89636446c489c114257e37dbfab4489fb2e8" class="src_link" title="app/models/task.rb">app/models/task.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">6</td> <td class="cell--number">4</td> <td class="cell--number">4</td> <td class="cell--number">0</td> <td class="cell--number">1.00</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#19c2d4139ccca24373711fa573fd8a2ec002ccd5" class="src_link" title="app/models/user.rb">app/models/user.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">10</td> <td class="cell--number">6</td> <td class="cell--number">6</td> <td class="cell--number">0</td> <td class="cell--number">14.17</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#f49ef72e78dd2c00fda06681259d8fbf86ec9be8" class="src_link" title="config/application.rb">config/application.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">27</td> <td class="cell--number">7</td> <td class="cell--number">7</td> <td class="cell--number">0</td> <td class="cell--number">1.00</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#49620b175d4732e2ab66e27b5b27c01424cd07cf" class="src_link" title="config/boot.rb">config/boot.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">4</td> <td class="cell--number">3</td> <td class="cell--number">3</td> <td class="cell--number">0</td> <td class="cell--number">1.00</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#e135cdcffbbedd5444edf041508f810731853f4f" class="src_link" title="config/environment.rb">config/environment.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">5</td> <td class="cell--number">2</td> <td class="cell--number">2</td> <td class="cell--number">0</td> <td class="cell--number">1.00</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#89c5ad5598366a2d7811c3b0760e7e29e696c2ea" class="src_link" title="config/environments/test.rb">config/environments/test.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">53</td> <td class="cell--number">13</td> <td class="cell--number">13</td> <td class="cell--number">0</td> <td class="cell--number">1.00</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#816cb4a0d8b6a85f284787c1bdf371b627481566" class="src_link" title="config/initializers/assets.rb">config/initializers/assets.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">7</td> <td class="cell--number">1</td> <td class="cell--number">1</td> <td class="cell--number">0</td> <td class="cell--number">1.00</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#c63045904ba6d0c124a1ad7eac0da38fea5d689f" class="src_link" title="config/initializers/content_security_policy.rb">config/initializers/content_security_policy.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">25</td> <td class="cell--number">0</td> <td class="cell--number">0</td> <td class="cell--number">0</td> <td class="cell--number">0.00</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#05c13c9d54f9a46a2db207f8ca8576491bb640a7" class="src_link" title="config/initializers/devise.rb">config/initializers/devise.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">313</td> <td class="cell--number">15</td> <td class="cell--number">15</td> <td class="cell--number">0</td> <td class="cell--number">1.00</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#49ec07b3851f8122736b24a193c020b601d03959" class="src_link" title="config/initializers/filter_parameter_logging.rb">config/initializers/filter_parameter_logging.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">8</td> <td class="cell--number">1</td> <td class="cell--number">1</td> <td class="cell--number">0</td> <td class="cell--number">1.00</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#fb5a9ddf88b01f670f396492d32d37fda6fb2231" class="src_link" title="config/initializers/inflections.rb">config/initializers/inflections.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">16</td> <td class="cell--number">0</td> <td class="cell--number">0</td> <td class="cell--number">0</td> <td class="cell--number">0.00</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#2a7f925ea1ea9ab49ebff24f789bdf5c40bd0888" class="src_link" title="config/routes.rb">config/routes.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">19</td> <td class="cell--number">10</td> <td class="cell--number">10</td> <td class="cell--number">0</td> <td class="cell--number">1.00</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#fc534fa537c0e96be846e4a2d524522ea30bef40" class="src_link" title="spec/controllers/tasks_controller_spec.rb">spec/controllers/tasks_controller_spec.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">314</td> <td class="cell--number">190</td> <td class="cell--number">190</td> <td class="cell--number">0</td> <td class="cell--number">2.16</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#3b2cf14c5150ee004eb8cffdcc8ef8061f67890c" class="src_link" title="spec/factories/project.rb">spec/factories/project.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">7</td> <td class="cell--number">5</td> <td class="cell--number">5</td> <td class="cell--number">0</td> <td class="cell--number">23.00</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#801ae0d8c74f05df564b364c60a99d4b2f747156" class="src_link" title="spec/factories/task.rb">spec/factories/task.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">28</td> <td class="cell--number">16</td> <td class="cell--number">16</td> <td class="cell--number">0</td> <td class="cell--number">5.50</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#3e7761d7977aafeed3e6c0e50f2588b1e0e5a46c" class="src_link" title="spec/factories/user.rb">spec/factories/user.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">8</td> <td class="cell--number">6</td> <td class="cell--number">6</td> <td class="cell--number">0</td> <td class="cell--number">53.67</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#93056a6775799342531239fa9ae2130da8628435" class="src_link" title="spec/support/database_cleaner.rb">spec/support/database_cleaner.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">14</td> <td class="cell--number">8</td> <td class="cell--number">8</td> <td class="cell--number">0</td> <td class="cell--number">23.88</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#5a8620f807f9f3bc5a1c2d1d7330f967379bff3f" class="src_link" title="spec/support/devise.rb">spec/support/devise.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">3</td> <td class="cell--number">2</td> <td class="cell--number">2</td> <td class="cell--number">0</td> <td class="cell--number">1.00</td> </tr> <tr class="t-file"> <td class="strong t-file__name"><a href="#c10871a2282fa0da548f8c38391384b5091dff9e" class="src_link" title="spec/support/factory_bot.rb">spec/support/factory_bot.rb</a></td> <td class="green strong cell--number t-file__coverage">100.00 %</td> <td class="cell--number">3</td> <td class="cell--number">2</td> <td class="cell--number">2</td> <td class="cell--number">0</td> <td class="cell--number">1.00</td> </tr> </tbody> </table> </div> </div> </div> <div id="footer"> Generated by <a href="https://github.com/simplecov-ruby/simplecov">simplecov</a> v0.22.0 and simplecov-html v0.13.1<br/> using RSpec </div> <div class="source_files"> <div class="source_table" id="90eba5c8fb1a94765580c1613a7498f45905538e"> <div class="header"> <h3>app/controllers/application_controller.rb</h3> <h4> <span class="yellow"> 83.33% </span> lines covered </h4> <div class="t-line-summary"> <b>6</b> relevant lines. <span class="green"><b>5</b> lines covered</span> and <span class="red"><b>1</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">class ApplicationController < ActionController::Base</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="2"> <span class="hits">1</span> <code class="ruby"> allow_browser versions: :modern</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="3"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="4"> <span class="hits">1</span> <code class="ruby"> before_action :configure_permitted_parameters, if: :devise_controller?</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="5"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="6"> <span class="hits">1</span> <code class="ruby"> protected</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="7"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="8"> <span class="hits">1</span> <code class="ruby"> def configure_permitted_parameters</code> </li> </div> <div> <li class="missed" data-hits="0" data-linenumber="9"> <code class="ruby"> devise_parameter_sanitizer.permit(:sign_up, keys: [ :username, :email, :password, :password_confirmation ])</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="10"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="11"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="f6bf99a61666f70057beea5af02ff5d7c43bfd9c"> <div class="header"> <h3>app/controllers/projects_controller.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>32</b> relevant lines. <span class="green"><b>32</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">class ProjectsController < ApplicationController</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="2"> <span class="hits">1</span> <code class="ruby"> before_action :authenticate_user!</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="3"> <span class="hits">1</span> <code class="ruby"> before_action :set_project, only: [ :show, :edit, :update, :destroy ]</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="4"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="5"> <span class="hits">1</span> <code class="ruby"> def index</code> </li> </div> <div> <li class="covered" data-hits="6" data-linenumber="6"> <span class="hits">6</span> <code class="ruby"> @projects = current_user.projects.order(created_at: :desc)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="7"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="6" data-linenumber="8"> <span class="hits">6</span> <code class="ruby"> if params[:search].present?</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="9"> <span class="hits">3</span> <code class="ruby"> search_term = params[:search].downcase</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="10"> <span class="hits">3</span> <code class="ruby"> @projects = @projects.where("LOWER(name) LIKE ?", "%#{search_term}%")</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="11"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="12"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="13"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="14"> <span class="hits">1</span> <code class="ruby"> def show</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="15"> <span class="hits">1</span> <code class="ruby"> redirect_to projects_path</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="16"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="17"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="18"> <span class="hits">1</span> <code class="ruby"> def edit</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="19"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="20"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="21"> <span class="hits">1</span> <code class="ruby"> def update</code> </li> </div> <div> <li class="covered" data-hits="4" data-linenumber="22"> <span class="hits">4</span> <code class="ruby"> if @project.update(project_params)</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="23"> <span class="hits">2</span> <code class="ruby"> redirect_to projects_path</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="24"> <code class="ruby"> else</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="25"> <span class="hits">2</span> <code class="ruby"> render :edit</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="26"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="27"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="28"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="29"> <span class="hits">1</span> <code class="ruby"> def new</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="30"> <span class="hits">2</span> <code class="ruby"> @project = current_user.projects.new</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="31"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="32"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="33"> <span class="hits">1</span> <code class="ruby"> def create</code> </li> </div> <div> <li class="covered" data-hits="5" data-linenumber="34"> <span class="hits">5</span> <code class="ruby"> @project = current_user.projects.new(project_params)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="35"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="5" data-linenumber="36"> <span class="hits">5</span> <code class="ruby"> if @project.save</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="37"> <span class="hits">3</span> <code class="ruby"> redirect_to projects_path</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="38"> <code class="ruby"> else</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="39"> <span class="hits">2</span> <code class="ruby"> render :new</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="40"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="41"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="42"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="43"> <span class="hits">1</span> <code class="ruby"> def destroy</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="44"> <span class="hits">2</span> <code class="ruby"> @project.destroy</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="45"> <span class="hits">2</span> <code class="ruby"> redirect_to projects_path</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="46"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="47"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="48"> <span class="hits">1</span> <code class="ruby"> private</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="49"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="50"> <span class="hits">1</span> <code class="ruby"> def set_project</code> </li> </div> <div> <li class="covered" data-hits="14" data-linenumber="51"> <span class="hits">14</span> <code class="ruby"> @project = current_user.projects.find_by(id: params[:id])</code> </li> </div> <div> <li class="covered" data-hits="14" data-linenumber="52"> <span class="hits">14</span> <code class="ruby"> if @project.nil?</code> </li> </div> <div> <li class="covered" data-hits="6" data-linenumber="53"> <span class="hits">6</span> <code class="ruby"> redirect_to root_path</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="54"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="55"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="56"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="57"> <span class="hits">1</span> <code class="ruby"> def project_params</code> </li> </div> <div> <li class="covered" data-hits="9" data-linenumber="58"> <span class="hits">9</span> <code class="ruby"> params.require(:project).permit(:name, :description)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="59"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="60"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="f414220cec3f49380a2ebaff612a12427b944efd"> <div class="header"> <h3>app/controllers/tasks_controller.rb</h3> <h4> <span class="green"> 98.0% </span> lines covered </h4> <div class="t-line-summary"> <b>50</b> relevant lines. <span class="green"><b>49</b> lines covered</span> and <span class="red"><b>1</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">class TasksController < ApplicationController</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="2"> <span class="hits">1</span> <code class="ruby"> before_action :authenticate_user!</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="3"> <span class="hits">1</span> <code class="ruby"> before_action :set_project</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="4"> <span class="hits">1</span> <code class="ruby"> before_action :set_task, only: [ :show, :edit, :update, :destroy, :update_status ]</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="5"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="6"> <span class="hits">1</span> <code class="ruby"> def index</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="7"> <span class="hits">3</span> <code class="ruby"> @project = current_user.projects.find(params[:project_id])</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="8"> <span class="hits">3</span> <code class="ruby"> @tasks_by_status = @project.tasks.group_by(&:status)</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="9"> <span class="hits">3</span> <code class="ruby"> @statuses = [ "To Do", "In Progress", "In Testing", "Rejected", "Done" ]</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="10"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="11"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="12"> <span class="hits">1</span> <code class="ruby"> def show</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="13"> <span class="hits">1</span> <code class="ruby"> redirect_to project_tasks_path(@project)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="14"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="15"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="16"> <span class="hits">1</span> <code class="ruby"> def new</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="17"> <span class="hits">1</span> <code class="ruby"> redirect_to project_tasks_path(@project)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="18"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="19"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="20"> <span class="hits">1</span> <code class="ruby"> def create</code> </li> </div> <div> <li class="covered" data-hits="5" data-linenumber="21"> <span class="hits">5</span> <code class="ruby"> @task = @project.tasks.new(task_params.merge(status: "To Do"))</code> </li> </div> <div> <li class="covered" data-hits="5" data-linenumber="22"> <span class="hits">5</span> <code class="ruby"> @task.save</code> </li> </div> <div> <li class="covered" data-hits="5" data-linenumber="23"> <span class="hits">5</span> <code class="ruby"> redirect_to project_tasks_path(@project)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="24"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="25"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="26"> <span class="hits">1</span> <code class="ruby"> def edit</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="27"> <span class="hits">1</span> <code class="ruby"> respond_to do |format|</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="28"> <span class="hits">1</span> <code class="ruby"> format.js</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="29"> <span class="hits">2</span> <code class="ruby"> format.any { redirect_to project_tasks_path(@project) }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="30"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="31"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="32"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="33"> <span class="hits">1</span> <code class="ruby"> def update</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="34"> <span class="hits">3</span> <code class="ruby"> @task.update(task_params)</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="35"> <span class="hits">3</span> <code class="ruby"> redirect_to project_tasks_path(@project)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="36"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="37"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="38"> <span class="hits">1</span> <code class="ruby"> def destroy</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="39"> <span class="hits">2</span> <code class="ruby"> @task.destroy</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="40"> <span class="hits">2</span> <code class="ruby"> redirect_to project_tasks_path(@project)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="41"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="42"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="43"> <span class="hits">1</span> <code class="ruby"> def update_status</code> </li> </div> <div> <li class="covered" data-hits="5" data-linenumber="44"> <span class="hits">5</span> <code class="ruby"> old_status = @task.status</code> </li> </div> <div> <li class="covered" data-hits="5" data-linenumber="45"> <span class="hits">5</span> <code class="ruby"> new_status = task_params[:status]</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="46"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="5" data-linenumber="47"> <span class="hits">5</span> <code class="ruby"> if old_status == new_status</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="48"> <span class="hits">1</span> <code class="ruby"> render json: { message: "Status not changed" }, status: :ok</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="49"> <span class="hits">1</span> <code class="ruby"> return</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="50"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="51"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="4" data-linenumber="52"> <span class="hits">4</span> <code class="ruby"> unless valid_status_transitions?(old_status, new_status)</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="53"> <span class="hits">2</span> <code class="ruby"> render json: { errors: [ "Invalid status transition from #{old_status} to #{new_status}" ] }, status: :unprocessable_entity</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="54"> <span class="hits">2</span> <code class="ruby"> return</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="55"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="56"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="57"> <span class="hits">2</span> <code class="ruby"> if @task.update(status: new_status)</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="58"> <span class="hits">2</span> <code class="ruby"> render json: { message: "Status updated successfully" }, status: :ok</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="59"> <code class="ruby"> else</code> </li> </div> <div> <li class="missed" data-hits="0" data-linenumber="60"> <code class="ruby"> render json: { errors: @task.errors.full_messages }, status: :unprocessable_entity</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="61"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="62"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="63"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="64"> <span class="hits">1</span> <code class="ruby"> private</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="65"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="66"> <span class="hits">1</span> <code class="ruby"> def valid_status_transitions?(old_status, new_status)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="67"> <code class="ruby"> allowed_transitions = {</code> </li> </div> <div> <li class="covered" data-hits="4" data-linenumber="68"> <span class="hits">4</span> <code class="ruby"> "To Do" => [ "In Progress" ],</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="69"> <code class="ruby"> "In Progress" => [ "In Testing", "To Do" ],</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="70"> <code class="ruby"> "In Testing" => [ "Done", "Rejected" ],</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="71"> <code class="ruby"> "Rejected" => [ "In Progress" ]</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="72"> <code class="ruby"> }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="73"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="4" data-linenumber="74"> <span class="hits">4</span> <code class="ruby"> allowed_transitions[old_status]&.include?(new_status) || false</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="75"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="76"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="77"> <span class="hits">1</span> <code class="ruby"> def set_project</code> </li> </div> <div> <li class="covered" data-hits="33" data-linenumber="78"> <span class="hits">33</span> <code class="ruby"> @project = current_user.projects.find_by(id: params[:project_id])</code> </li> </div> <div> <li class="covered" data-hits="33" data-linenumber="79"> <span class="hits">33</span> <code class="ruby"> if @project.nil?</code> </li> </div> <div> <li class="covered" data-hits="12" data-linenumber="80"> <span class="hits">12</span> <code class="ruby"> redirect_to root_path</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="81"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="82"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="83"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="84"> <span class="hits">1</span> <code class="ruby"> def set_task</code> </li> </div> <div> <li class="covered" data-hits="12" data-linenumber="85"> <span class="hits">12</span> <code class="ruby"> @task = @project.tasks.find(params[:id])</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="86"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="87"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="88"> <span class="hits">1</span> <code class="ruby"> def task_params</code> </li> </div> <div> <li class="covered" data-hits="13" data-linenumber="89"> <span class="hits">13</span> <code class="ruby"> params.require(:task).permit(:status, :title, :description)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="90"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="91"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="1cac831cfa942c47affe5dfa7390afa634123b74"> <div class="header"> <h3>app/helpers/application_helper.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>1</b> relevant lines. <span class="green"><b>1</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">module ApplicationHelper</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="2"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="f9363ff9c5164c10825f9f5511da835040b53002"> <div class="header"> <h3>app/helpers/home_helper.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>1</b> relevant lines. <span class="green"><b>1</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">module HomeHelper</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="2"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="24e31dbe11fdb72818689cb6961d803ddff8c40f"> <div class="header"> <h3>app/helpers/projects_helper.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>1</b> relevant lines. <span class="green"><b>1</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">module ProjectsHelper</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="2"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="d6b734e6896f43bd730ce270a5398eb453e3450b"> <div class="header"> <h3>app/helpers/tasks_helper.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>1</b> relevant lines. <span class="green"><b>1</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">module TasksHelper</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="2"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="ec171751af444de0cb219a99face065e22b9ffc1"> <div class="header"> <h3>app/models/application_record.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>2</b> relevant lines. <span class="green"><b>2</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">class ApplicationRecord < ActiveRecord::Base</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="2"> <span class="hits">1</span> <code class="ruby"> primary_abstract_class</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="3"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="1d7947a620dac982a4abf5b1e3e63e618fc33250"> <div class="header"> <h3>app/models/project.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>4</b> relevant lines. <span class="green"><b>4</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">class Project < ApplicationRecord</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="2"> <span class="hits">1</span> <code class="ruby"> belongs_to :user</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="3"> <span class="hits">1</span> <code class="ruby"> has_many :tasks, dependent: :destroy</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="4"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="5"> <span class="hits">1</span> <code class="ruby"> validates :name, presence: true</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="6"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="85bc89636446c489c114257e37dbfab4489fb2e8"> <div class="header"> <h3>app/models/task.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>4</b> relevant lines. <span class="green"><b>4</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">class Task < ApplicationRecord</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="2"> <span class="hits">1</span> <code class="ruby"> belongs_to :project</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="3"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="4"> <span class="hits">1</span> <code class="ruby"> validates :title, presence: true</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="5"> <span class="hits">1</span> <code class="ruby"> validates :status, presence: true</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="6"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="19c2d4139ccca24373711fa573fd8a2ec002ccd5"> <div class="header"> <h3>app/models/user.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>6</b> relevant lines. <span class="green"><b>6</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">class User < ApplicationRecord</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="2"> <span class="hits">1</span> <code class="ruby"> devise :database_authenticatable, :registerable,</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="3"> <code class="ruby"> :recoverable, :rememberable, :validatable</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="4"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="5"> <span class="hits">1</span> <code class="ruby"> has_many :projects, dependent: :destroy</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="6"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="7"> <span class="hits">1</span> <code class="ruby"> validates :username, presence: true, uniqueness: true, length: { maximum: 35 }</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="8"> <span class="hits">1</span> <code class="ruby"> validates :email, presence: true, uniqueness: true, format: { with: URI::MailTo::EMAIL_REGEXP }</code> </li> </div> <div> <li class="covered" data-hits="80" data-linenumber="9"> <span class="hits">80</span> <code class="ruby"> validates :encrypted_password, length: { minimum: 6 }, if: -> { new_record? || !password.nil? }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="10"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="f49ef72e78dd2c00fda06681259d8fbf86ec9be8"> <div class="header"> <h3>config/application.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>7</b> relevant lines. <span class="green"><b>7</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">require_relative "boot"</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="2"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="3"> <span class="hits">1</span> <code class="ruby">require "rails/all"</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="4"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="5"> <code class="ruby"># Require the gems listed in Gemfile, including any gems</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="6"> <code class="ruby"># you've limited to :test, :development, or :production.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="7"> <span class="hits">1</span> <code class="ruby">Bundler.require(*Rails.groups)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="8"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="9"> <span class="hits">1</span> <code class="ruby">module SystemManagmentProject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="10"> <span class="hits">1</span> <code class="ruby"> class Application < Rails::Application</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="11"> <code class="ruby"> # Initialize configuration defaults for originally generated Rails version.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="12"> <span class="hits">1</span> <code class="ruby"> config.load_defaults 8.0</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="13"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="14"> <code class="ruby"> # Please, add to the `ignore` list any other `lib` subdirectories that do</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="15"> <code class="ruby"> # not contain `.rb` files, or that should not be reloaded or eager loaded.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="16"> <code class="ruby"> # Common ones are `templates`, `generators`, or `middleware`, for example.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="17"> <span class="hits">1</span> <code class="ruby"> config.autoload_lib(ignore: %w[assets tasks])</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="18"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="19"> <code class="ruby"> # Configuration for the application, engines, and railties goes here.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="20"> <code class="ruby"> #</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="21"> <code class="ruby"> # These settings can be overridden in specific environments using the files</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="22"> <code class="ruby"> # in config/environments, which are processed later.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="23"> <code class="ruby"> #</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="24"> <code class="ruby"> # config.time_zone = "Central Time (US & Canada)"</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="25"> <code class="ruby"> # config.eager_load_paths << Rails.root.join("extras")</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="26"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="27"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="49620b175d4732e2ab66e27b5b27c01424cd07cf"> <div class="header"> <h3>config/boot.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>3</b> relevant lines. <span class="green"><b>3</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="2"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="3"> <span class="hits">1</span> <code class="ruby">require "bundler/setup" # Set up gems listed in the Gemfile.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="4"> <span class="hits">1</span> <code class="ruby">require "bootsnap/setup" # Speed up boot time by caching expensive operations.</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="e135cdcffbbedd5444edf041508f810731853f4f"> <div class="header"> <h3>config/environment.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>2</b> relevant lines. <span class="green"><b>2</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="never" data-hits="" data-linenumber="1"> <code class="ruby"># Load the Rails application.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="2"> <span class="hits">1</span> <code class="ruby">require_relative "application"</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="3"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="4"> <code class="ruby"># Initialize the Rails application.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="5"> <span class="hits">1</span> <code class="ruby">Rails.application.initialize!</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="89c5ad5598366a2d7811c3b0760e7e29e696c2ea"> <div class="header"> <h3>config/environments/test.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>13</b> relevant lines. <span class="green"><b>13</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="never" data-hits="" data-linenumber="1"> <code class="ruby"># The test environment is used exclusively to run your application's</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="2"> <code class="ruby"># test suite. You never need to work with it otherwise. Remember that</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="3"> <code class="ruby"># your test database is "scratch space" for the test suite and is wiped</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="4"> <code class="ruby"># and recreated between test runs. Don't rely on the data there!</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="5"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="6"> <span class="hits">1</span> <code class="ruby">Rails.application.configure do</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="7"> <code class="ruby"> # Settings specified here will take precedence over those in config/application.rb.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="8"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="9"> <code class="ruby"> # While tests run files are not watched, reloading is not necessary.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="10"> <span class="hits">1</span> <code class="ruby"> config.enable_reloading = false</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="11"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="12"> <code class="ruby"> # Eager loading loads your entire application. When running a single test locally,</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="13"> <code class="ruby"> # this is usually not necessary, and can slow down your test suite. However, it's</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="14"> <code class="ruby"> # recommended that you enable it in continuous integration systems to ensure eager</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="15"> <code class="ruby"> # loading is working properly before deploying your code.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="16"> <span class="hits">1</span> <code class="ruby"> config.eager_load = ENV["CI"].present?</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="17"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="18"> <code class="ruby"> # Configure public file server for tests with cache-control for performance.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="19"> <span class="hits">1</span> <code class="ruby"> config.public_file_server.headers = { "cache-control" => "public, max-age=3600" }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="20"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="21"> <code class="ruby"> # Show full error reports.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="22"> <span class="hits">1</span> <code class="ruby"> config.consider_all_requests_local = true</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="23"> <span class="hits">1</span> <code class="ruby"> config.cache_store = :null_store</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="24"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="25"> <code class="ruby"> # Render exception templates for rescuable exceptions and raise for other exceptions.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="26"> <span class="hits">1</span> <code class="ruby"> config.action_dispatch.show_exceptions = :rescuable</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="27"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="28"> <code class="ruby"> # Disable request forgery protection in test environment.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="29"> <span class="hits">1</span> <code class="ruby"> config.action_controller.allow_forgery_protection = false</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="30"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="31"> <code class="ruby"> # Store uploaded files on the local file system in a temporary directory.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="32"> <span class="hits">1</span> <code class="ruby"> config.active_storage.service = :test</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="33"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="34"> <code class="ruby"> # Tell Action Mailer not to deliver emails to the real world.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="35"> <code class="ruby"> # The :test delivery method accumulates sent emails in the</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="36"> <code class="ruby"> # ActionMailer::Base.deliveries array.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="37"> <span class="hits">1</span> <code class="ruby"> config.action_mailer.delivery_method = :test</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="38"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="39"> <code class="ruby"> # Set host to be used by links generated in mailer templates.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="40"> <span class="hits">1</span> <code class="ruby"> config.action_mailer.default_url_options = { host: "example.com" }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="41"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="42"> <code class="ruby"> # Print deprecation notices to the stderr.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="43"> <span class="hits">1</span> <code class="ruby"> config.active_support.deprecation = :stderr</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="44"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="45"> <code class="ruby"> # Raises error for missing translations.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="46"> <code class="ruby"> # config.i18n.raise_on_missing_translations = true</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="47"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="48"> <code class="ruby"> # Annotate rendered view with file names.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="49"> <code class="ruby"> # config.action_view.annotate_rendered_view_with_filenames = true</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="50"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="51"> <code class="ruby"> # Raise error when a before_action's only/except options reference missing actions.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="52"> <span class="hits">1</span> <code class="ruby"> config.action_controller.raise_on_missing_callback_actions = true</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="53"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="816cb4a0d8b6a85f284787c1bdf371b627481566"> <div class="header"> <h3>config/initializers/assets.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>1</b> relevant lines. <span class="green"><b>1</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="never" data-hits="" data-linenumber="1"> <code class="ruby"># Be sure to restart your server when you modify this file.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="2"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="3"> <code class="ruby"># Version of your assets, change this if you want to expire all your assets.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="4"> <span class="hits">1</span> <code class="ruby">Rails.application.config.assets.version = "1.0"</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="5"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="6"> <code class="ruby"># Add additional assets to the asset load path.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="7"> <code class="ruby"># Rails.application.config.assets.paths << Emoji.images_path</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="c63045904ba6d0c124a1ad7eac0da38fea5d689f"> <div class="header"> <h3>config/initializers/content_security_policy.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>0</b> relevant lines. <span class="green"><b>0</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="never" data-hits="" data-linenumber="1"> <code class="ruby"># Be sure to restart your server when you modify this file.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="2"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="3"> <code class="ruby"># Define an application-wide content security policy.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="4"> <code class="ruby"># See the Securing Rails Applications Guide for more information:</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="5"> <code class="ruby"># https://guides.rubyonrails.org/security.html#content-security-policy-header</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="6"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="7"> <code class="ruby"># Rails.application.configure do</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="8"> <code class="ruby"># config.content_security_policy do |policy|</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="9"> <code class="ruby"># policy.default_src :self, :https</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="10"> <code class="ruby"># policy.font_src :self, :https, :data</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="11"> <code class="ruby"># policy.img_src :self, :https, :data</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="12"> <code class="ruby"># policy.object_src :none</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="13"> <code class="ruby"># policy.script_src :self, :https</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="14"> <code class="ruby"># policy.style_src :self, :https</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="15"> <code class="ruby"># # Specify URI for violation reports</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="16"> <code class="ruby"># # policy.report_uri "/csp-violation-report-endpoint"</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="17"> <code class="ruby"># end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="18"> <code class="ruby">#</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="19"> <code class="ruby"># # Generate session nonces for permitted importmap, inline scripts, and inline styles.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="20"> <code class="ruby"># config.content_security_policy_nonce_generator = ->(request) { request.session.id.to_s }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="21"> <code class="ruby"># config.content_security_policy_nonce_directives = %w(script-src style-src)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="22"> <code class="ruby">#</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="23"> <code class="ruby"># # Report violations without enforcing the policy.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="24"> <code class="ruby"># # config.content_security_policy_report_only = true</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="25"> <code class="ruby"># end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="05c13c9d54f9a46a2db207f8ca8576491bb640a7"> <div class="header"> <h3>config/initializers/devise.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>15</b> relevant lines. <span class="green"><b>15</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="never" data-hits="" data-linenumber="1"> <code class="ruby"># frozen_string_literal: true</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="2"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="3"> <code class="ruby"># Assuming you have not yet modified this file, each configuration option below</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="4"> <code class="ruby"># is set to its default value. Note that some are commented out while others</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="5"> <code class="ruby"># are not: uncommented lines are intended to protect your configuration from</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="6"> <code class="ruby"># breaking changes in upgrades (i.e., in the event that future versions of</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="7"> <code class="ruby"># Devise change the default values for those options).</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="8"> <code class="ruby">#</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="9"> <code class="ruby"># Use this hook to configure devise mailer, warden hooks and so forth.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="10"> <code class="ruby"># Many of these configuration options can be set straight in your model.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="11"> <span class="hits">1</span> <code class="ruby">Devise.setup do |config|</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="12"> <code class="ruby"> # The secret key used by Devise. Devise uses this key to generate</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="13"> <code class="ruby"> # random tokens. Changing this key will render invalid all existing</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="14"> <code class="ruby"> # confirmation, reset password and unlock tokens in the database.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="15"> <code class="ruby"> # Devise will use the `secret_key_base` as its `secret_key`</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="16"> <code class="ruby"> # by default. You can change it below and use your own secret key.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="17"> <code class="ruby"> # config.secret_key = 'bdc3878694d820d9400b2fd62bae40321794d9654a0d2b7e269f10a08d80d4ef3799c62bd2b51c8a537ccabd355ebefd8b8e9b23788b02c73fd2fe7a21ba0444'</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="18"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="19"> <code class="ruby"> # ==> Controller configuration</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="20"> <code class="ruby"> # Configure the parent class to the devise controllers.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="21"> <code class="ruby"> # config.parent_controller = 'DeviseController'</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="22"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="23"> <code class="ruby"> # ==> Mailer Configuration</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="24"> <code class="ruby"> # Configure the e-mail address which will be shown in Devise::Mailer,</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="25"> <code class="ruby"> # note that it will be overwritten if you use your own mailer class</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="26"> <code class="ruby"> # with default "from" parameter.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="27"> <span class="hits">1</span> <code class="ruby"> config.mailer_sender = 'please-change-me-at-config-initializers-devise@example.com'</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="28"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="29"> <code class="ruby"> # Configure the class responsible to send e-mails.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="30"> <code class="ruby"> # config.mailer = 'Devise::Mailer'</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="31"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="32"> <code class="ruby"> # Configure the parent class responsible to send e-mails.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="33"> <code class="ruby"> # config.parent_mailer = 'ActionMailer::Base'</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="34"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="35"> <code class="ruby"> # ==> ORM configuration</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="36"> <code class="ruby"> # Load and configure the ORM. Supports :active_record (default) and</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="37"> <code class="ruby"> # :mongoid (bson_ext recommended) by default. Other ORMs may be</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="38"> <code class="ruby"> # available as additional gems.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="39"> <span class="hits">1</span> <code class="ruby"> require 'devise/orm/active_record'</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="40"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="41"> <code class="ruby"> # ==> Configuration for any authentication mechanism</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="42"> <code class="ruby"> # Configure which keys are used when authenticating a user. The default is</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="43"> <code class="ruby"> # just :email. You can configure it to use [:username, :subdomain], so for</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="44"> <code class="ruby"> # authenticating a user, both parameters are required. Remember that those</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="45"> <code class="ruby"> # parameters are used only when authenticating and not when retrieving from</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="46"> <code class="ruby"> # session. If you need permissions, you should implement that in a before filter.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="47"> <code class="ruby"> # You can also supply a hash where the value is a boolean determining whether</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="48"> <code class="ruby"> # or not authentication should be aborted when the value is not present.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="49"> <code class="ruby"> # config.authentication_keys = [:email]</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="50"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="51"> <code class="ruby"> # Configure parameters from the request object used for authentication. Each entry</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="52"> <code class="ruby"> # given should be a request method and it will automatically be passed to the</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="53"> <code class="ruby"> # find_for_authentication method and considered in your model lookup. For instance,</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="54"> <code class="ruby"> # if you set :request_keys to [:subdomain], :subdomain will be used on authentication.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="55"> <code class="ruby"> # The same considerations mentioned for authentication_keys also apply to request_keys.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="56"> <code class="ruby"> # config.request_keys = []</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="57"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="58"> <code class="ruby"> # Configure which authentication keys should be case-insensitive.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="59"> <code class="ruby"> # These keys will be downcased upon creating or modifying a user and when used</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="60"> <code class="ruby"> # to authenticate or find a user. Default is :email.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="61"> <span class="hits">1</span> <code class="ruby"> config.case_insensitive_keys = [:email]</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="62"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="63"> <code class="ruby"> # Configure which authentication keys should have whitespace stripped.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="64"> <code class="ruby"> # These keys will have whitespace before and after removed upon creating or</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="65"> <code class="ruby"> # modifying a user and when used to authenticate or find a user. Default is :email.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="66"> <span class="hits">1</span> <code class="ruby"> config.strip_whitespace_keys = [:email]</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="67"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="68"> <code class="ruby"> # Tell if authentication through request.params is enabled. True by default.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="69"> <code class="ruby"> # It can be set to an array that will enable params authentication only for the</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="70"> <code class="ruby"> # given strategies, for example, `config.params_authenticatable = [:database]` will</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="71"> <code class="ruby"> # enable it only for database (email + password) authentication.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="72"> <code class="ruby"> # config.params_authenticatable = true</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="73"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="74"> <code class="ruby"> # Tell if authentication through HTTP Auth is enabled. False by default.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="75"> <code class="ruby"> # It can be set to an array that will enable http authentication only for the</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="76"> <code class="ruby"> # given strategies, for example, `config.http_authenticatable = [:database]` will</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="77"> <code class="ruby"> # enable it only for database authentication.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="78"> <code class="ruby"> # For API-only applications to support authentication "out-of-the-box", you will likely want to</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="79"> <code class="ruby"> # enable this with :database unless you are using a custom strategy.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="80"> <code class="ruby"> # The supported strategies are:</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="81"> <code class="ruby"> # :database = Support basic authentication with authentication key + password</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="82"> <code class="ruby"> # config.http_authenticatable = false</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="83"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="84"> <code class="ruby"> # If 401 status code should be returned for AJAX requests. True by default.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="85"> <code class="ruby"> # config.http_authenticatable_on_xhr = true</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="86"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="87"> <code class="ruby"> # The realm used in Http Basic Authentication. 'Application' by default.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="88"> <code class="ruby"> # config.http_authentication_realm = 'Application'</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="89"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="90"> <code class="ruby"> # It will change confirmation, password recovery and other workflows</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="91"> <code class="ruby"> # to behave the same regardless if the e-mail provided was right or wrong.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="92"> <code class="ruby"> # Does not affect registerable.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="93"> <code class="ruby"> # config.paranoid = true</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="94"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="95"> <code class="ruby"> # By default Devise will store the user in session. You can skip storage for</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="96"> <code class="ruby"> # particular strategies by setting this option.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="97"> <code class="ruby"> # Notice that if you are skipping storage for all authentication paths, you</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="98"> <code class="ruby"> # may want to disable generating routes to Devise's sessions controller by</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="99"> <code class="ruby"> # passing skip: :sessions to `devise_for` in your config/routes.rb</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="100"> <span class="hits">1</span> <code class="ruby"> config.skip_session_storage = [:http_auth]</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="101"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="102"> <code class="ruby"> # By default, Devise cleans up the CSRF token on authentication to</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="103"> <code class="ruby"> # avoid CSRF token fixation attacks. This means that, when using AJAX</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="104"> <code class="ruby"> # requests for sign in and sign up, you need to get a new CSRF token</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="105"> <code class="ruby"> # from the server. You can disable this option at your own risk.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="106"> <code class="ruby"> # config.clean_up_csrf_token_on_authentication = true</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="107"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="108"> <code class="ruby"> # When false, Devise will not attempt to reload routes on eager load.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="109"> <code class="ruby"> # This can reduce the time taken to boot the app but if your application</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="110"> <code class="ruby"> # requires the Devise mappings to be loaded during boot time the application</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="111"> <code class="ruby"> # won't boot properly.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="112"> <code class="ruby"> # config.reload_routes = true</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="113"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="114"> <code class="ruby"> # ==> Configuration for :database_authenticatable</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="115"> <code class="ruby"> # For bcrypt, this is the cost for hashing the password and defaults to 12. If</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="116"> <code class="ruby"> # using other algorithms, it sets how many times you want the password to be hashed.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="117"> <code class="ruby"> # The number of stretches used for generating the hashed password are stored</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="118"> <code class="ruby"> # with the hashed password. This allows you to change the stretches without</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="119"> <code class="ruby"> # invalidating existing passwords.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="120"> <code class="ruby"> #</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="121"> <code class="ruby"> # Limiting the stretches to just one in testing will increase the performance of</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="122"> <code class="ruby"> # your test suite dramatically. However, it is STRONGLY RECOMMENDED to not use</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="123"> <code class="ruby"> # a value less than 10 in other environments. Note that, for bcrypt (the default</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="124"> <code class="ruby"> # algorithm), the cost increases exponentially with the number of stretches (e.g.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="125"> <code class="ruby"> # a value of 20 is already extremely slow: approx. 60 seconds for 1 calculation).</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="126"> <span class="hits">1</span> <code class="ruby"> config.stretches = Rails.env.test? ? 1 : 12</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="127"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="128"> <code class="ruby"> # Set up a pepper to generate the hashed password.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="129"> <code class="ruby"> # config.pepper = 'd4fbe01b8679ecb271dcba323c5506edbcafbad073493692c6d5326e40ff56c6a22bddba87dd72fdca9a61b2d559733c4f649e4545da8bd60a3468526c1557ee'</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="130"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="131"> <code class="ruby"> # Send a notification to the original email when the user's email is changed.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="132"> <code class="ruby"> # config.send_email_changed_notification = false</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="133"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="134"> <code class="ruby"> # Send a notification email when the user's password is changed.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="135"> <code class="ruby"> # config.send_password_change_notification = false</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="136"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="137"> <code class="ruby"> # ==> Configuration for :confirmable</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="138"> <code class="ruby"> # A period that the user is allowed to access the website even without</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="139"> <code class="ruby"> # confirming their account. For instance, if set to 2.days, the user will be</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="140"> <code class="ruby"> # able to access the website for two days without confirming their account,</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="141"> <code class="ruby"> # access will be blocked just in the third day.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="142"> <code class="ruby"> # You can also set it to nil, which will allow the user to access the website</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="143"> <code class="ruby"> # without confirming their account.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="144"> <code class="ruby"> # Default is 0.days, meaning the user cannot access the website without</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="145"> <code class="ruby"> # confirming their account.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="146"> <code class="ruby"> # config.allow_unconfirmed_access_for = 2.days</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="147"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="148"> <code class="ruby"> # A period that the user is allowed to confirm their account before their</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="149"> <code class="ruby"> # token becomes invalid. For example, if set to 3.days, the user can confirm</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="150"> <code class="ruby"> # their account within 3 days after the mail was sent, but on the fourth day</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="151"> <code class="ruby"> # their account can't be confirmed with the token any more.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="152"> <code class="ruby"> # Default is nil, meaning there is no restriction on how long a user can take</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="153"> <code class="ruby"> # before confirming their account.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="154"> <code class="ruby"> # config.confirm_within = 3.days</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="155"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="156"> <code class="ruby"> # If true, requires any email changes to be confirmed (exactly the same way as</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="157"> <code class="ruby"> # initial account confirmation) to be applied. Requires additional unconfirmed_email</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="158"> <code class="ruby"> # db field (see migrations). Until confirmed, new email is stored in</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="159"> <code class="ruby"> # unconfirmed_email column, and copied to email column on successful confirmation.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="160"> <span class="hits">1</span> <code class="ruby"> config.reconfirmable = true</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="161"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="162"> <code class="ruby"> # Defines which key will be used when confirming an account</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="163"> <code class="ruby"> # config.confirmation_keys = [:email]</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="164"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="165"> <code class="ruby"> # ==> Configuration for :rememberable</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="166"> <code class="ruby"> # The time the user will be remembered without asking for credentials again.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="167"> <code class="ruby"> # config.remember_for = 2.weeks</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="168"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="169"> <code class="ruby"> # Invalidates all the remember me tokens when the user signs out.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="170"> <span class="hits">1</span> <code class="ruby"> config.expire_all_remember_me_on_sign_out = true</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="171"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="172"> <code class="ruby"> # If true, extends the user's remember period when remembered via cookie.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="173"> <code class="ruby"> # config.extend_remember_period = false</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="174"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="175"> <code class="ruby"> # Options to be passed to the created cookie. For instance, you can set</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="176"> <code class="ruby"> # secure: true in order to force SSL only cookies.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="177"> <code class="ruby"> # config.rememberable_options = {}</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="178"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="179"> <code class="ruby"> # ==> Configuration for :validatable</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="180"> <code class="ruby"> # Range for password length.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="181"> <span class="hits">1</span> <code class="ruby"> config.password_length = 6..128</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="182"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="183"> <code class="ruby"> # Email regex used to validate email formats. It simply asserts that</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="184"> <code class="ruby"> # one (and only one) @ exists in the given string. This is mainly</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="185"> <code class="ruby"> # to give user feedback and not to assert the e-mail validity.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="186"> <span class="hits">1</span> <code class="ruby"> config.email_regexp = /\A[^@\s]+@[^@\s]+\z/</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="187"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="188"> <code class="ruby"> # ==> Configuration for :timeoutable</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="189"> <code class="ruby"> # The time you want to timeout the user session without activity. After this</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="190"> <code class="ruby"> # time the user will be asked for credentials again. Default is 30 minutes.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="191"> <code class="ruby"> # config.timeout_in = 30.minutes</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="192"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="193"> <code class="ruby"> # ==> Configuration for :lockable</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="194"> <code class="ruby"> # Defines which strategy will be used to lock an account.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="195"> <code class="ruby"> # :failed_attempts = Locks an account after a number of failed attempts to sign in.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="196"> <code class="ruby"> # :none = No lock strategy. You should handle locking by yourself.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="197"> <code class="ruby"> # config.lock_strategy = :failed_attempts</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="198"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="199"> <code class="ruby"> # Defines which key will be used when locking and unlocking an account</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="200"> <code class="ruby"> # config.unlock_keys = [:email]</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="201"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="202"> <code class="ruby"> # Defines which strategy will be used to unlock an account.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="203"> <code class="ruby"> # :email = Sends an unlock link to the user email</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="204"> <code class="ruby"> # :time = Re-enables login after a certain amount of time (see :unlock_in below)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="205"> <code class="ruby"> # :both = Enables both strategies</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="206"> <code class="ruby"> # :none = No unlock strategy. You should handle unlocking by yourself.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="207"> <code class="ruby"> # config.unlock_strategy = :both</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="208"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="209"> <code class="ruby"> # Number of authentication tries before locking an account if lock_strategy</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="210"> <code class="ruby"> # is failed attempts.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="211"> <code class="ruby"> # config.maximum_attempts = 20</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="212"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="213"> <code class="ruby"> # Time interval to unlock the account if :time is enabled as unlock_strategy.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="214"> <code class="ruby"> # config.unlock_in = 1.hour</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="215"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="216"> <code class="ruby"> # Warn on the last attempt before the account is locked.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="217"> <code class="ruby"> # config.last_attempt_warning = true</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="218"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="219"> <code class="ruby"> # ==> Configuration for :recoverable</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="220"> <code class="ruby"> #</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="221"> <code class="ruby"> # Defines which key will be used when recovering the password for an account</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="222"> <code class="ruby"> # config.reset_password_keys = [:email]</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="223"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="224"> <code class="ruby"> # Time interval you can reset your password with a reset password key.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="225"> <code class="ruby"> # Don't put a too small interval or your users won't have the time to</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="226"> <code class="ruby"> # change their passwords.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="227"> <span class="hits">1</span> <code class="ruby"> config.reset_password_within = 6.hours</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="228"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="229"> <code class="ruby"> # When set to false, does not sign a user in automatically after their password is</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="230"> <code class="ruby"> # reset. Defaults to true, so a user is signed in automatically after a reset.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="231"> <code class="ruby"> # config.sign_in_after_reset_password = true</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="232"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="233"> <code class="ruby"> # ==> Configuration for :encryptable</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="234"> <code class="ruby"> # Allow you to use another hashing or encryption algorithm besides bcrypt (default).</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="235"> <code class="ruby"> # You can use :sha1, :sha512 or algorithms from others authentication tools as</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="236"> <code class="ruby"> # :clearance_sha1, :authlogic_sha512 (then you should set stretches above to 20</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="237"> <code class="ruby"> # for default behavior) and :restful_authentication_sha1 (then you should set</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="238"> <code class="ruby"> # stretches to 10, and copy REST_AUTH_SITE_KEY to pepper).</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="239"> <code class="ruby"> #</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="240"> <code class="ruby"> # Require the `devise-encryptable` gem when using anything other than bcrypt</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="241"> <code class="ruby"> # config.encryptor = :sha512</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="242"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="243"> <code class="ruby"> # ==> Scopes configuration</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="244"> <code class="ruby"> # Turn scoped views on. Before rendering "sessions/new", it will first check for</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="245"> <code class="ruby"> # "users/sessions/new". It's turned off by default because it's slower if you</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="246"> <code class="ruby"> # are using only default views.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="247"> <code class="ruby"> # config.scoped_views = false</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="248"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="249"> <code class="ruby"> # Configure the default scope given to Warden. By default it's the first</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="250"> <code class="ruby"> # devise role declared in your routes (usually :user).</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="251"> <code class="ruby"> # config.default_scope = :user</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="252"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="253"> <code class="ruby"> # Set this configuration to false if you want /users/sign_out to sign out</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="254"> <code class="ruby"> # only the current scope. By default, Devise signs out all scopes.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="255"> <code class="ruby"> # config.sign_out_all_scopes = true</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="256"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="257"> <code class="ruby"> # ==> Navigation configuration</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="258"> <code class="ruby"> # Lists the formats that should be treated as navigational. Formats like</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="259"> <code class="ruby"> # :html should redirect to the sign in page when the user does not have</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="260"> <code class="ruby"> # access, but formats like :xml or :json, should return 401.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="261"> <code class="ruby"> #</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="262"> <code class="ruby"> # If you have any extra navigational formats, like :iphone or :mobile, you</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="263"> <code class="ruby"> # should add them to the navigational formats lists.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="264"> <code class="ruby"> #</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="265"> <code class="ruby"> # The "*/*" below is required to match Internet Explorer requests.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="266"> <code class="ruby"> # config.navigational_formats = ['*/*', :html, :turbo_stream]</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="267"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="268"> <code class="ruby"> # The default HTTP method used to sign out a resource. Default is :delete.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="269"> <span class="hits">1</span> <code class="ruby"> config.sign_out_via = :delete</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="270"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="271"> <code class="ruby"> # ==> OmniAuth</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="272"> <code class="ruby"> # Add a new OmniAuth provider. Check the wiki for more information on setting</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="273"> <code class="ruby"> # up on your models and hooks.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="274"> <code class="ruby"> # config.omniauth :github, 'APP_ID', 'APP_SECRET', scope: 'user,public_repo'</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="275"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="276"> <code class="ruby"> # ==> Warden configuration</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="277"> <code class="ruby"> # If you want to use other strategies, that are not supported by Devise, or</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="278"> <code class="ruby"> # change the failure app, you can configure them inside the config.warden block.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="279"> <code class="ruby"> #</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="280"> <code class="ruby"> # config.warden do |manager|</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="281"> <code class="ruby"> # manager.intercept_401 = false</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="282"> <code class="ruby"> # manager.default_strategies(scope: :user).unshift :some_external_strategy</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="283"> <code class="ruby"> # end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="284"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="285"> <code class="ruby"> # ==> Mountable engine configurations</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="286"> <code class="ruby"> # When using Devise inside an engine, let's call it `MyEngine`, and this engine</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="287"> <code class="ruby"> # is mountable, there are some extra configurations to be taken into account.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="288"> <code class="ruby"> # The following options are available, assuming the engine is mounted as:</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="289"> <code class="ruby"> #</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="290"> <code class="ruby"> # mount MyEngine, at: '/my_engine'</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="291"> <code class="ruby"> #</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="292"> <code class="ruby"> # The router that invoked `devise_for`, in the example above, would be:</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="293"> <code class="ruby"> # config.router_name = :my_engine</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="294"> <code class="ruby"> #</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="295"> <code class="ruby"> # When using OmniAuth, Devise cannot automatically set OmniAuth path,</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="296"> <code class="ruby"> # so you need to do it manually. For the users scope, it would be:</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="297"> <code class="ruby"> # config.omniauth_path_prefix = '/my_engine/users/auth'</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="298"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="299"> <code class="ruby"> # ==> Hotwire/Turbo configuration</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="300"> <code class="ruby"> # When using Devise with Hotwire/Turbo, the http status for error responses</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="301"> <code class="ruby"> # and some redirects must match the following. The default in Devise for existing</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="302"> <code class="ruby"> # apps is `200 OK` and `302 Found` respectively, but new apps are generated with</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="303"> <code class="ruby"> # these new defaults that match Hotwire/Turbo behavior.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="304"> <code class="ruby"> # Note: These might become the new default in future versions of Devise.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="305"> <span class="hits">1</span> <code class="ruby"> config.responder.error_status = :unprocessable_entity</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="306"> <span class="hits">1</span> <code class="ruby"> config.responder.redirect_status = :see_other</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="307"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="308"> <code class="ruby"> # ==> Configuration for :registerable</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="309"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="310"> <code class="ruby"> # When set to false, does not sign a user in automatically after their password is</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="311"> <code class="ruby"> # changed. Defaults to true, so a user is signed in automatically after changing a password.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="312"> <code class="ruby"> # config.sign_in_after_change_password = true</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="313"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="49ec07b3851f8122736b24a193c020b601d03959"> <div class="header"> <h3>config/initializers/filter_parameter_logging.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>1</b> relevant lines. <span class="green"><b>1</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="never" data-hits="" data-linenumber="1"> <code class="ruby"># Be sure to restart your server when you modify this file.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="2"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="3"> <code class="ruby"># Configure parameters to be partially matched (e.g. passw matches password) and filtered from the log file.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="4"> <code class="ruby"># Use this to limit dissemination of sensitive information.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="5"> <code class="ruby"># See the ActiveSupport::ParameterFilter documentation for supported notations and behaviors.</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="6"> <span class="hits">1</span> <code class="ruby">Rails.application.config.filter_parameters += [</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="7"> <code class="ruby"> :passw, :email, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn, :cvv, :cvc</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="8"> <code class="ruby">]</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="fb5a9ddf88b01f670f396492d32d37fda6fb2231"> <div class="header"> <h3>config/initializers/inflections.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>0</b> relevant lines. <span class="green"><b>0</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="never" data-hits="" data-linenumber="1"> <code class="ruby"># Be sure to restart your server when you modify this file.</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="2"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="3"> <code class="ruby"># Add new inflection rules using the following format. Inflections</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="4"> <code class="ruby"># are locale specific, and you may define rules for as many different</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="5"> <code class="ruby"># locales as you wish. All of these examples are active by default:</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="6"> <code class="ruby"># ActiveSupport::Inflector.inflections(:en) do |inflect|</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="7"> <code class="ruby"># inflect.plural /^(ox)$/i, "\\1en"</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="8"> <code class="ruby"># inflect.singular /^(ox)en/i, "\\1"</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="9"> <code class="ruby"># inflect.irregular "person", "people"</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="10"> <code class="ruby"># inflect.uncountable %w( fish sheep )</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="11"> <code class="ruby"># end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="12"> <code class="ruby"></code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="13"> <code class="ruby"># These inflection rules are supported but not enabled by default:</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="14"> <code class="ruby"># ActiveSupport::Inflector.inflections(:en) do |inflect|</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="15"> <code class="ruby"># inflect.acronym "RESTful"</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="16"> <code class="ruby"># end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="2a7f925ea1ea9ab49ebff24f789bdf5c40bd0888"> <div class="header"> <h3>config/routes.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>10</b> relevant lines. <span class="green"><b>10</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">Rails.application.routes.draw do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="2"> <span class="hits">1</span> <code class="ruby"> devise_for :users</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="3"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="4"> <span class="hits">1</span> <code class="ruby"> root "home#index"</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="5"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="6"> <span class="hits">1</span> <code class="ruby"> resources :projects</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="7"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="8"> <span class="hits">1</span> <code class="ruby"> resources :projects do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="9"> <span class="hits">1</span> <code class="ruby"> resources :tasks</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="10"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="11"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="12"> <span class="hits">1</span> <code class="ruby"> resources :projects do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="13"> <span class="hits">1</span> <code class="ruby"> resources :tasks do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="14"> <span class="hits">1</span> <code class="ruby"> member do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="15"> <span class="hits">1</span> <code class="ruby"> patch :update_status</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="16"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="17"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="18"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="19"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="fc534fa537c0e96be846e4a2d524522ea30bef40"> <div class="header"> <h3>spec/controllers/tasks_controller_spec.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>190</b> relevant lines. <span class="green"><b>190</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">require "rails_helper"</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="2"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="3"> <span class="hits">1</span> <code class="ruby">RSpec.describe TasksController, type: :controller do</code> </li> </div> <div> <li class="covered" data-hits="35" data-linenumber="4"> <span class="hits">35</span> <code class="ruby"> let(:user) { create(:user) }</code> </li> </div> <div> <li class="covered" data-hits="13" data-linenumber="5"> <span class="hits">13</span> <code class="ruby"> let(:other_user) { create(:user) }</code> </li> </div> <div> <li class="covered" data-hits="23" data-linenumber="6"> <span class="hits">23</span> <code class="ruby"> let(:project) { create(:project, user: user) }</code> </li> </div> <div> <li class="covered" data-hits="13" data-linenumber="7"> <span class="hits">13</span> <code class="ruby"> let(:other_project) { create(:project, user: other_user) }</code> </li> </div> <div> <li class="covered" data-hits="6" data-linenumber="8"> <span class="hits">6</span> <code class="ruby"> let(:task) { create(:task, project: project) }</code> </li> </div> <div> <li class="covered" data-hits="5" data-linenumber="9"> <span class="hits">5</span> <code class="ruby"> let(:other_task) { create(:task, project: other_project) }</code> </li> </div> <div> <li class="covered" data-hits="6" data-linenumber="10"> <span class="hits">6</span> <code class="ruby"> let(:valid_attributes) { attributes_for(:task) }</code> </li> </div> <div> <li class="covered" data-hits="5" data-linenumber="11"> <span class="hits">5</span> <code class="ruby"> let(:new_attributes) { { title: 'Updated Task', description: 'Updated Description' } }</code> </li> </div> <div> <li class="covered" data-hits="4" data-linenumber="12"> <span class="hits">4</span> <code class="ruby"> let(:invalid_attributes) { { title: '' } }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="13"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="14"> <span class="hits">1</span> <code class="ruby"> describe "GET #index" do</code> </li> </div> <div> <li class="covered" data-hits="6" data-linenumber="15"> <span class="hits">6</span> <code class="ruby"> subject { get :index, params: params }</code> </li> </div> <div> <li class="covered" data-hits="5" data-linenumber="16"> <span class="hits">5</span> <code class="ruby"> let(:params) { { project_id: project.id } }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="17"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="18"> <span class="hits">1</span> <code class="ruby"> describe "without login" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="19"> <span class="hits">1</span> <code class="ruby"> it "redirects to login page" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="20"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="21"> <span class="hits">1</span> <code class="ruby"> expect(response).to redirect_to(new_user_session_path)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="22"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="23"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="24"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="25"> <span class="hits">1</span> <code class="ruby"> describe "with login" do</code> </li> </div> <div> <li class="covered" data-hits="5" data-linenumber="26"> <span class="hits">5</span> <code class="ruby"> before { sign_in user }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="27"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="28"> <span class="hits">1</span> <code class="ruby"> context "with user's project" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="29"> <span class="hits">1</span> <code class="ruby"> it "returns a success response" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="30"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="31"> <span class="hits">1</span> <code class="ruby"> expect(response).to be_successful</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="32"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="33"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="34"> <span class="hits">1</span> <code class="ruby"> it "groups tasks by status" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="35"> <span class="hits">1</span> <code class="ruby"> create(:task, project: project, status: "To Do")</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="36"> <span class="hits">1</span> <code class="ruby"> create(:task, project: project, status: "In Progress")</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="37"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="38"> <span class="hits">1</span> <code class="ruby"> expect(assigns(:tasks_by_status).keys).to include("To Do", "In Progress")</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="39"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="40"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="41"> <span class="hits">1</span> <code class="ruby"> it "sets available statuses" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="42"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="43"> <span class="hits">1</span> <code class="ruby"> expect(assigns(:statuses)).to eq([ "To Do", "In Progress", "In Testing", "Rejected", "Done" ])</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="44"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="45"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="46"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="47"> <span class="hits">1</span> <code class="ruby"> context "with other user's project" do</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="48"> <span class="hits">2</span> <code class="ruby"> let(:params) { { project_id: other_project.id } }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="49"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="50"> <span class="hits">1</span> <code class="ruby"> it "redirects to root path" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="51"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="52"> <span class="hits">1</span> <code class="ruby"> expect(response).to redirect_to(root_path)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="53"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="54"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="55"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="56"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="57"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="58"> <span class="hits">1</span> <code class="ruby"> describe "GET #show" do</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="59"> <span class="hits">3</span> <code class="ruby"> subject { get :show, params: params }</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="60"> <span class="hits">3</span> <code class="ruby"> before { sign_in user }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="61"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="62"> <span class="hits">1</span> <code class="ruby"> context "with user's task" do</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="63"> <span class="hits">2</span> <code class="ruby"> let(:params) { { project_id: project.id, id: task.id } }</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="64"> <span class="hits">1</span> <code class="ruby"> it "returns a success response" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="65"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="66"> <span class="hits">1</span> <code class="ruby"> expect(response).to redirect_to(project_tasks_path)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="67"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="68"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="69"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="70"> <span class="hits">1</span> <code class="ruby"> context "with other user's task" do</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="71"> <span class="hits">2</span> <code class="ruby"> let(:params) { { project_id: other_project.id, id: other_task.id } }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="72"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="73"> <span class="hits">1</span> <code class="ruby"> it "redirects to root path" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="74"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="75"> <span class="hits">1</span> <code class="ruby"> expect(response).to redirect_to(root_path)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="76"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="77"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="78"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="79"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="80"> <span class="hits">1</span> <code class="ruby"> describe "GET #new" do</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="81"> <span class="hits">3</span> <code class="ruby"> subject { get :new, params: params }</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="82"> <span class="hits">3</span> <code class="ruby"> before { sign_in user }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="83"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="84"> <span class="hits">1</span> <code class="ruby"> context "with current user's project" do</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="85"> <span class="hits">2</span> <code class="ruby"> let(:params) { { project_id: project.id } }</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="86"> <span class="hits">1</span> <code class="ruby"> it "redirect to project tasks path" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="87"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="88"> <span class="hits">1</span> <code class="ruby"> expect(response).to redirect_to(project_tasks_path)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="89"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="90"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="91"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="92"> <span class="hits">1</span> <code class="ruby"> context "with other user's project" do</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="93"> <span class="hits">2</span> <code class="ruby"> let(:params) { { project_id: other_project.id } }</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="94"> <span class="hits">1</span> <code class="ruby"> it "redirect to root path" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="95"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="96"> <span class="hits">1</span> <code class="ruby"> expect(response).to redirect_to(root_path)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="97"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="98"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="99"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="100"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="101"> <span class="hits">1</span> <code class="ruby"> describe "POST #create" do</code> </li> </div> <div> <li class="covered" data-hits="8" data-linenumber="102"> <span class="hits">8</span> <code class="ruby"> subject { post :create, params: params }</code> </li> </div> <div> <li class="covered" data-hits="8" data-linenumber="103"> <span class="hits">8</span> <code class="ruby"> before { sign_in user }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="104"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="105"> <span class="hits">1</span> <code class="ruby"> context "with valid params" do</code> </li> </div> <div> <li class="covered" data-hits="4" data-linenumber="106"> <span class="hits">4</span> <code class="ruby"> let(:params) { { project_id: project.id, task: valid_attributes } }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="107"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="108"> <span class="hits">1</span> <code class="ruby"> it "creates a new Task" do</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="109"> <span class="hits">2</span> <code class="ruby"> expect { subject }.to change(Task, :count).by(1)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="110"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="111"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="112"> <span class="hits">1</span> <code class="ruby"> it "sets default status to 'To Do'" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="113"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="114"> <span class="hits">1</span> <code class="ruby"> expect(Task.last.status).to eq("To Do")</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="115"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="116"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="117"> <span class="hits">1</span> <code class="ruby"> it "redirects to project tasks path" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="118"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="119"> <span class="hits">1</span> <code class="ruby"> expect(response).to redirect_to(project_tasks_path(project))</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="120"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="121"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="122"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="123"> <span class="hits">1</span> <code class="ruby"> context "with invalid params" do</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="124"> <span class="hits">3</span> <code class="ruby"> let(:params) { { project_id: project.id, task: invalid_attributes } }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="125"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="126"> <span class="hits">1</span> <code class="ruby"> it "does not create a new Task" do</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="127"> <span class="hits">2</span> <code class="ruby"> expect { subject }.not_to change(Task, :count)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="128"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="129"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="130"> <span class="hits">1</span> <code class="ruby"> it "redirects to project tasks path" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="131"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="132"> <span class="hits">1</span> <code class="ruby"> expect(response).to redirect_to(project_tasks_path(project))</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="133"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="134"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="135"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="136"> <span class="hits">1</span> <code class="ruby"> context "with other user's project" do</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="137"> <span class="hits">3</span> <code class="ruby"> let(:params) { { project_id: other_project.id, task: valid_attributes } }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="138"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="139"> <span class="hits">1</span> <code class="ruby"> it "does not create a task" do</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="140"> <span class="hits">2</span> <code class="ruby"> expect { subject }.not_to change(Task, :count)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="141"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="142"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="143"> <span class="hits">1</span> <code class="ruby"> it "redirects to root path" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="144"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="145"> <span class="hits">1</span> <code class="ruby"> expect(response).to redirect_to(root_path)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="146"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="147"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="148"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="149"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="150"> <span class="hits">1</span> <code class="ruby"> describe "GET #edit" do</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="151"> <span class="hits">3</span> <code class="ruby"> subject { get :edit, params: params }</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="152"> <span class="hits">2</span> <code class="ruby"> let(:params) { { project_id: project.id, id: task.id } }</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="153"> <span class="hits">3</span> <code class="ruby"> before { sign_in user }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="154"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="155"> <span class="hits">1</span> <code class="ruby"> it "redirected to project tasks path" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="156"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="157"> <span class="hits">1</span> <code class="ruby"> expect(response).to redirect_to(project_tasks_path)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="158"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="159"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="160"> <span class="hits">1</span> <code class="ruby"> context "with other user's task" do</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="161"> <span class="hits">2</span> <code class="ruby"> let(:params) { { project_id: other_project.id, id: other_task.id } }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="162"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="163"> <span class="hits">1</span> <code class="ruby"> it "redirects to root path" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="164"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="165"> <span class="hits">1</span> <code class="ruby"> expect(response).to redirect_to(root_path)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="166"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="167"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="168"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="169"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="170"> <span class="hits">1</span> <code class="ruby"> describe "PUT #update" do</code> </li> </div> <div> <li class="covered" data-hits="6" data-linenumber="171"> <span class="hits">6</span> <code class="ruby"> subject { put :update, params: params }</code> </li> </div> <div> <li class="covered" data-hits="6" data-linenumber="172"> <span class="hits">6</span> <code class="ruby"> before { sign_in user }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="173"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="174"> <span class="hits">1</span> <code class="ruby"> context "with valid params" do</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="175"> <span class="hits">3</span> <code class="ruby"> let(:params) { { project_id: project.id, id: task.id, task: new_attributes } }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="176"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="177"> <span class="hits">1</span> <code class="ruby"> it "updates the requested task" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="178"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="179"> <span class="hits">1</span> <code class="ruby"> task.reload</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="180"> <span class="hits">1</span> <code class="ruby"> expect(task.title).to eq('Updated Task')</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="181"> <span class="hits">1</span> <code class="ruby"> expect(task.description).to eq('Updated Description')</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="182"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="183"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="184"> <span class="hits">1</span> <code class="ruby"> it "redirects to project tasks path" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="185"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="186"> <span class="hits">1</span> <code class="ruby"> expect(response).to redirect_to(project_tasks_path(project))</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="187"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="188"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="189"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="190"> <span class="hits">1</span> <code class="ruby"> context "with invalid params" do</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="191"> <span class="hits">2</span> <code class="ruby"> let(:params) { { project_id: project.id, id: task.id, task: invalid_attributes } }</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="192"> <span class="hits">2</span> <code class="ruby"> let(:original_title) { task.title }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="193"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="194"> <span class="hits">1</span> <code class="ruby"> it "does not update the task" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="195"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="196"> <span class="hits">1</span> <code class="ruby"> task.reload</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="197"> <span class="hits">1</span> <code class="ruby"> expect(task.title).to eq(original_title)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="198"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="199"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="200"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="201"> <span class="hits">1</span> <code class="ruby"> context "with other user's task" do</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="202"> <span class="hits">3</span> <code class="ruby"> let(:params) { { project_id: other_project.id, id: other_task.id, task: new_attributes } }</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="203"> <span class="hits">2</span> <code class="ruby"> let(:original_title) { other_task.title }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="204"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="205"> <span class="hits">1</span> <code class="ruby"> it "does not update the task" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="206"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="207"> <span class="hits">1</span> <code class="ruby"> other_task.reload</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="208"> <span class="hits">1</span> <code class="ruby"> expect(other_task.title).to eq(original_title)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="209"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="210"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="211"> <span class="hits">1</span> <code class="ruby"> it "redirects to root path" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="212"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="213"> <span class="hits">1</span> <code class="ruby"> expect(response).to redirect_to(root_path)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="214"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="215"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="216"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="217"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="218"> <span class="hits">1</span> <code class="ruby"> describe "DELETE #destroy" do</code> </li> </div> <div> <li class="covered" data-hits="5" data-linenumber="219"> <span class="hits">5</span> <code class="ruby"> subject { delete :destroy, params: params }</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="220"> <span class="hits">3</span> <code class="ruby"> let(:params) { { project_id: project.id, id: task.id } }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="221"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="5" data-linenumber="222"> <span class="hits">5</span> <code class="ruby"> before { sign_in user }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="223"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="224"> <span class="hits">1</span> <code class="ruby"> context "with user's task" do</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="225"> <span class="hits">3</span> <code class="ruby"> let!(:task) { create(:task, project: project) }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="226"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="227"> <span class="hits">1</span> <code class="ruby"> it "destroys the requested task" do</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="228"> <span class="hits">2</span> <code class="ruby"> expect { subject }.to change(Task, :count).by(-1)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="229"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="230"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="231"> <span class="hits">1</span> <code class="ruby"> it "redirects to project tasks path" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="232"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="233"> <span class="hits">1</span> <code class="ruby"> expect(response).to redirect_to(project_tasks_path(project))</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="234"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="235"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="236"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="237"> <span class="hits">1</span> <code class="ruby"> context "with other user's task" do</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="238"> <span class="hits">3</span> <code class="ruby"> let(:params) { { project_id: other_project.id, id: other_task.id } }</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="239"> <span class="hits">3</span> <code class="ruby"> let!(:other_task) { create(:task, project: other_project) }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="240"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="241"> <span class="hits">1</span> <code class="ruby"> it "does not destroy the task" do</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="242"> <span class="hits">2</span> <code class="ruby"> expect { subject }.not_to change(Task, :count)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="243"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="244"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="245"> <span class="hits">1</span> <code class="ruby"> it "redirects to root path" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="246"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="247"> <span class="hits">1</span> <code class="ruby"> expect(response).to redirect_to(root_path)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="248"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="249"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="250"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="251"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="252"> <span class="hits">1</span> <code class="ruby"> describe "PATCH #update_status" do</code> </li> </div> <div> <li class="covered" data-hits="8" data-linenumber="253"> <span class="hits">8</span> <code class="ruby"> subject { patch :update_status, params: params, format: :json }</code> </li> </div> <div> <li class="covered" data-hits="8" data-linenumber="254"> <span class="hits">8</span> <code class="ruby"> before { sign_in user }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="255"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="256"> <span class="hits">1</span> <code class="ruby"> context "with valid status transition" do</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="257"> <span class="hits">3</span> <code class="ruby"> let(:task) { create(:task, project: project, status: "To Do") }</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="258"> <span class="hits">3</span> <code class="ruby"> let(:params) { { project_id: project.id, id: task.id, task: { status: "In Progress" } } }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="259"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="260"> <span class="hits">1</span> <code class="ruby"> it "updates the task status" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="261"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="262"> <span class="hits">1</span> <code class="ruby"> task.reload</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="263"> <span class="hits">1</span> <code class="ruby"> expect(task.status).to eq("In Progress")</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="264"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="265"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="266"> <span class="hits">1</span> <code class="ruby"> it "returns success response" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="267"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="268"> <span class="hits">1</span> <code class="ruby"> expect(response).to have_http_status(:ok)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="269"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="270"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="271"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="272"> <span class="hits">1</span> <code class="ruby"> context "with invalid status transition" do</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="273"> <span class="hits">3</span> <code class="ruby"> let(:task) { create(:task, project: project, status: "To Do") }</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="274"> <span class="hits">3</span> <code class="ruby"> let(:params) { { project_id: project.id, id: task.id, task: { status: "Done" } } }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="275"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="276"> <span class="hits">1</span> <code class="ruby"> it "does not update the task status" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="277"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="278"> <span class="hits">1</span> <code class="ruby"> task.reload</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="279"> <span class="hits">1</span> <code class="ruby"> expect(task.status).to eq("To Do")</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="280"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="281"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="282"> <span class="hits">1</span> <code class="ruby"> it "returns unprocessable_entity response" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="283"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="284"> <span class="hits">1</span> <code class="ruby"> expect(response).to have_http_status(:unprocessable_entity)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="285"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="286"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="287"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="288"> <span class="hits">1</span> <code class="ruby"> context "with same status" do</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="289"> <span class="hits">2</span> <code class="ruby"> let(:task) { create(:task, project: project, status: "To Do") }</code> </li> </div> <div> <li class="covered" data-hits="2" data-linenumber="290"> <span class="hits">2</span> <code class="ruby"> let(:params) { { project_id: project.id, id: task.id, task: { status: "To Do" } } }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="291"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="292"> <span class="hits">1</span> <code class="ruby"> it "returns ok response with message" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="293"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="294"> <span class="hits">1</span> <code class="ruby"> expect(response).to have_http_status(:ok)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="295"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="296"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="297"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="298"> <span class="hits">1</span> <code class="ruby"> context "with other user's task" do</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="299"> <span class="hits">3</span> <code class="ruby"> let(:other_task) { create(:task, project: other_project, status: "To Do") }</code> </li> </div> <div> <li class="covered" data-hits="3" data-linenumber="300"> <span class="hits">3</span> <code class="ruby"> let(:params) { { project_id: other_project.id, id: other_task.id, task: { status: "In Progress" } } }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="301"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="302"> <span class="hits">1</span> <code class="ruby"> it "does not update the task status" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="303"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="304"> <span class="hits">1</span> <code class="ruby"> other_task.reload</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="305"> <span class="hits">1</span> <code class="ruby"> expect(other_task.status).to eq("To Do")</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="306"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="307"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="308"> <span class="hits">1</span> <code class="ruby"> it "redirects to root path" do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="309"> <span class="hits">1</span> <code class="ruby"> subject</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="310"> <span class="hits">1</span> <code class="ruby"> expect(response).to redirect_to(root_path)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="311"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="312"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="313"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="314"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="3b2cf14c5150ee004eb8cffdcc8ef8061f67890c"> <div class="header"> <h3>spec/factories/project.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>5</b> relevant lines. <span class="green"><b>5</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">FactoryBot.define do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="2"> <span class="hits">1</span> <code class="ruby"> factory :project do</code> </li> </div> <div> <li class="covered" data-hits="55" data-linenumber="3"> <span class="hits">55</span> <code class="ruby"> name { FFaker::Product.product_name }</code> </li> </div> <div> <li class="covered" data-hits="57" data-linenumber="4"> <span class="hits">57</span> <code class="ruby"> description { FFaker::Lorem.paragraph }</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="5"> <span class="hits">1</span> <code class="ruby"> association :user</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="6"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="7"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="801ae0d8c74f05df564b364c60a99d4b2f747156"> <div class="header"> <h3>spec/factories/task.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>16</b> relevant lines. <span class="green"><b>16</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">FactoryBot.define do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="2"> <span class="hits">1</span> <code class="ruby"> factory :task do</code> </li> </div> <div> <li class="covered" data-hits="28" data-linenumber="3"> <span class="hits">28</span> <code class="ruby"> title { FFaker::Lorem.sentence }</code> </li> </div> <div> <li class="covered" data-hits="28" data-linenumber="4"> <span class="hits">28</span> <code class="ruby"> description { FFaker::Lorem.paragraph }</code> </li> </div> <div> <li class="covered" data-hits="19" data-linenumber="5"> <span class="hits">19</span> <code class="ruby"> status { "To Do" }</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="6"> <span class="hits">1</span> <code class="ruby"> association :project</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="7"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="8"> <span class="hits">1</span> <code class="ruby"> trait :to_do do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="9"> <span class="hits">1</span> <code class="ruby"> status { "To Do" }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="10"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="11"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="12"> <span class="hits">1</span> <code class="ruby"> trait :in_progress do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="13"> <span class="hits">1</span> <code class="ruby"> status { "In Progress" }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="14"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="15"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="16"> <span class="hits">1</span> <code class="ruby"> trait :in_testing do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="17"> <span class="hits">1</span> <code class="ruby"> status { "In Testing" }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="18"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="19"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="20"> <span class="hits">1</span> <code class="ruby"> trait :rejected do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="21"> <span class="hits">1</span> <code class="ruby"> status { "Rejected" }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="22"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="23"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="24"> <span class="hits">1</span> <code class="ruby"> trait :done do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="25"> <span class="hits">1</span> <code class="ruby"> status { "Done" }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="26"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="27"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="28"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="3e7761d7977aafeed3e6c0e50f2588b1e0e5a46c"> <div class="header"> <h3>spec/factories/user.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>6</b> relevant lines. <span class="green"><b>6</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">FactoryBot.define do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="2"> <span class="hits">1</span> <code class="ruby"> factory :user do</code> </li> </div> <div> <li class="covered" data-hits="80" data-linenumber="3"> <span class="hits">80</span> <code class="ruby"> username { FFaker::Name.name }</code> </li> </div> <div> <li class="covered" data-hits="80" data-linenumber="4"> <span class="hits">80</span> <code class="ruby"> email { FFaker::Internet.email }</code> </li> </div> <div> <li class="covered" data-hits="80" data-linenumber="5"> <span class="hits">80</span> <code class="ruby"> password { 'password' }</code> </li> </div> <div> <li class="covered" data-hits="80" data-linenumber="6"> <span class="hits">80</span> <code class="ruby"> password_confirmation { 'password' }</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="7"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="8"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="93056a6775799342531239fa9ae2130da8628435"> <div class="header"> <h3>spec/support/database_cleaner.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>8</b> relevant lines. <span class="green"><b>8</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">RSpec.configure do |config|</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="2"> <span class="hits">1</span> <code class="ruby"> config.before(:suite) do</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="3"> <span class="hits">1</span> <code class="ruby"> DatabaseCleaner.clean_with(:truncation)</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="4"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="5"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="6"> <span class="hits">1</span> <code class="ruby"> config.before(:each) do</code> </li> </div> <div> <li class="covered" data-hits="62" data-linenumber="7"> <span class="hits">62</span> <code class="ruby"> DatabaseCleaner.strategy = :truncation # Capybara.current_driver == :rack_test ? transaction : :truncation</code> </li> </div> <div> <li class="covered" data-hits="62" data-linenumber="8"> <span class="hits">62</span> <code class="ruby"> DatabaseCleaner.start</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="9"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="10"> <code class="ruby"></code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="11"> <span class="hits">1</span> <code class="ruby"> config.after(:each) do</code> </li> </div> <div> <li class="covered" data-hits="62" data-linenumber="12"> <span class="hits">62</span> <code class="ruby"> DatabaseCleaner.clean</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="13"> <code class="ruby"> end</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="14"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="5a8620f807f9f3bc5a1c2d1d7330f967379bff3f"> <div class="header"> <h3>spec/support/devise.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>2</b> relevant lines. <span class="green"><b>2</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">RSpec.configure do |config|</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="2"> <span class="hits">1</span> <code class="ruby"> config.include Devise::Test::ControllerHelpers, type: :controller</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="3"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> <div class="source_table" id="c10871a2282fa0da548f8c38391384b5091dff9e"> <div class="header"> <h3>spec/support/factory_bot.rb</h3> <h4> <span class="green"> 100.0% </span> lines covered </h4> <div class="t-line-summary"> <b>2</b> relevant lines. <span class="green"><b>2</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> <div> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> <code class="ruby">RSpec.configure do |config|</code> </li> </div> <div> <li class="covered" data-hits="1" data-linenumber="2"> <span class="hits">1</span> <code class="ruby"> config.include FactoryBot::Syntax::Methods</code> </li> </div> <div> <li class="never" data-hits="" data-linenumber="3"> <code class="ruby">end</code> </li> </div> </ol> </pre> </div> </div> </div> </body> </html>