coverage/index.html in trusty-cms-2.0.21 vs coverage/index.html in trusty-cms-2.0.22

- old
+ new

@@ -3,40 +3,40 @@ <head> <title>Code coverage for Trusty-cms</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <script src='./assets/0.10.0/application.js' type='text/javascript'></script> <link href='./assets/0.10.0/application.css' media='screen, projection, print' rel='stylesheet' type='text/css'> - <link rel="shortcut icon" type="image/png" href="./assets/0.10.0/favicon_red.png" /> + <link rel="shortcut icon" type="image/png" href="./assets/0.10.0/favicon_yellow.png" /> <link rel="icon" type="image/png" href="./assets/0.10.0/favicon.png" /> </head> <body> <div id="loading"> <img src="./assets/0.10.0/loading.gif" alt="loading"/> </div> <div id="wrapper" style="display:none;"> - <div class="timestamp">Generated <abbr class="timeago" title="2016-05-31T08:32:14-04:00">2016-05-31T08:32:14-04:00</abbr></div> + <div class="timestamp">Generated <abbr class="timeago" title="2016-07-13T10:56:47-04:00">2016-07-13T10:56:47-04: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="red">57.69%</span></span> + (<span class="covered_percent"><span class="yellow">83.05%</span></span> covered at <span class="covered_strength"> <span class="green"> - 1.33 + 15.42 </span> </span> hits/line) </h2> <a name="AllFiles"></a> <div> - <b>15</b> files in total. - <b>527</b> relevant lines. - <span class="green"><b>304</b> lines covered</span> and - <span class="red"><b>223</b> lines missed </span> + <b>54</b> files in total. + <b>1451</b> relevant lines. + <span class="green"><b>1205</b> lines covered</span> and + <span class="red"><b>246</b> lines missed </span> </div> <table class="file_list"> <thead> <tr> <th>File</th> @@ -49,110 +49,420 @@ </tr> </thead> <tbody> <tr> - <td class="strong"><a href="#7948f870edaadd3e575d89cc132d72051ee743fa" class="src_link" title="app/controllers/admin/password_resets_controller.rb">app/controllers/admin/password_resets_controller.rb</a></td> - <td class="red strong">72.22 %</td> - <td>29</td> - <td>18</td> - <td>13</td> + <td class="strong"><a href="#f599caf63215e126813bbd891071cc4dd1d3b8db" class="src_link" title="app/controllers/admin/configuration_controller.rb">app/controllers/admin/configuration_controller.rb</a></td> + <td class="red strong">79.17 %</td> + <td>50</td> + <td>24</td> + <td>19</td> <td>5</td> - <td>1.4</td> + <td>2.1</td> </tr> <tr> + <td class="strong"><a href="#17657aadafa48e20fcb3bd8e5e210965c961320a" class="src_link" title="app/controllers/admin/extensions_controller.rb">app/controllers/admin/extensions_controller.rb</a></td> + <td class="red strong">60.0 %</td> + <td>11</td> + <td>5</td> + <td>3</td> + <td>2</td> + <td>0.6</td> + </tr> + + <tr> + <td class="strong"><a href="#21519a85f829e2fbd7235984e406553be64b6b27" class="src_link" title="app/controllers/admin/layouts_controller.rb">app/controllers/admin/layouts_controller.rb</a></td> + <td class="green strong">100.0 %</td> + <td>8</td> + <td>3</td> + <td>3</td> + <td>0</td> + <td>1.0</td> + </tr> + + <tr> + <td class="strong"><a href="#325babca4b7e56052d91c8b2915714d266a831a1" class="src_link" title="app/controllers/admin/page_parts_controller.rb">app/controllers/admin/page_parts_controller.rb</a></td> + <td class="green strong">100.0 %</td> + <td>9</td> + <td>6</td> + <td>6</td> + <td>0</td> + <td>1.0</td> + </tr> + + <tr> + <td class="strong"><a href="#12b0c87d1b29324b336517e5a0d2d4df2cc9de32" class="src_link" title="app/controllers/admin/pages_controller.rb">app/controllers/admin/pages_controller.rb</a></td> + <td class="red strong">75.0 %</td> + <td>100</td> + <td>64</td> + <td>48</td> + <td>16</td> + <td>8.3</td> + </tr> + + <tr> + <td class="strong"><a href="#327c19329660164ad68bedbd54229068fb659364" class="src_link" title="app/controllers/admin/preferences_controller.rb">app/controllers/admin/preferences_controller.rb</a></td> + <td class="yellow strong">82.35 %</td> + <td>29</td> + <td>17</td> + <td>14</td> + <td>3</td> + <td>1.0</td> + </tr> + + <tr> + <td class="strong"><a href="#977407fe9a2d9fadbb1030a030adcae347c6b0e4" class="src_link" title="app/controllers/admin/resource_controller.rb">app/controllers/admin/resource_controller.rb</a></td> + <td class="yellow strong">85.83 %</td> + <td>244</td> + <td>120</td> + <td>103</td> + <td>17</td> + <td>6.7</td> + </tr> + + <tr> + <td class="strong"><a href="#12f7b293396af1e7bb429783083e0914ad715492" class="src_link" title="app/controllers/admin/users_controller.rb">app/controllers/admin/users_controller.rb</a></td> + <td class="red strong">45.45 %</td> + <td>40</td> + <td>22</td> + <td>10</td> + <td>12</td> + <td>0.5</td> + </tr> + + <tr> + <td class="strong"><a href="#0548274635e28f0ade382b1fa914b469704b942f" class="src_link" title="app/controllers/admin/welcome_controller.rb">app/controllers/admin/welcome_controller.rb</a></td> + <td class="green strong">93.33 %</td> + <td>48</td> + <td>30</td> + <td>28</td> + <td>2</td> + <td>10.7</td> + </tr> + + <tr> <td class="strong"><a href="#24df5092852a2bbf884d9a6bfe4815b19056ea68" class="src_link" title="app/controllers/application_controller.rb">app/controllers/application_controller.rb</a></td> - <td class="red strong">64.15 %</td> + <td class="red strong">77.36 %</td> <td>103</td> <td>53</td> + <td>41</td> + <td>12</td> + <td>34.0</td> + </tr> + + <tr> + <td class="strong"><a href="#41a9856bd8ee68d9d8cbdb50d567363cd4411956" class="src_link" title="app/controllers/site_controller.rb">app/controllers/site_controller.rb</a></td> + <td class="red strong">52.46 %</td> + <td>103</td> + <td>61</td> + <td>32</td> + <td>29</td> + <td>3.5</td> + </tr> + + <tr> + <td class="strong"><a href="#9b973efca458788c05c2f1159ddf02033a2951e2" class="src_link" title="app/helpers/admin/configuration_helper.rb">app/helpers/admin/configuration_helper.rb</a></td> + <td class="green strong">90.48 %</td> + <td>81</td> + <td>42</td> + <td>38</td> + <td>4</td> + <td>20.1</td> + </tr> + + <tr> + <td class="strong"><a href="#a60b971bc58b9cda32471f0b9507a73bde5812c2" class="src_link" title="app/helpers/admin/extensions_helper.rb">app/helpers/admin/extensions_helper.rb</a></td> + <td class="green strong">100.0 %</td> + <td>2</td> + <td>1</td> + <td>1</td> + <td>0</td> + <td>1.0</td> + </tr> + + <tr> + <td class="strong"><a href="#f1b71910ed03a14a4fc4cce2c151914e870c1588" class="src_link" title="app/helpers/admin/layouts_helper.rb">app/helpers/admin/layouts_helper.rb</a></td> + <td class="green strong">100.0 %</td> + <td>3</td> + <td>1</td> + <td>1</td> + <td>0</td> + <td>1.0</td> + </tr> + + <tr> + <td class="strong"><a href="#352ca55a4f63d046b73dfeec822cb6b55487185d" class="src_link" title="app/helpers/admin/node_helper.rb">app/helpers/admin/node_helper.rb</a></td> + <td class="red strong">60.71 %</td> + <td>110</td> + <td>56</td> <td>34</td> - <td>19</td> - <td>2.5</td> + <td>22</td> + <td>1.8</td> </tr> <tr> + <td class="strong"><a href="#07cdad2482cd19a92b6c1e2ed1c9d59c7b7b0a2a" class="src_link" title="app/helpers/admin/pages_helper.rb">app/helpers/admin/pages_helper.rb</a></td> + <td class="red strong">75.0 %</td> + <td>29</td> + <td>16</td> + <td>12</td> + <td>4</td> + <td>3.1</td> + </tr> + + <tr> + <td class="strong"><a href="#781d9751547430b5f53e45c0a93bbe1399c262fa" class="src_link" title="app/helpers/admin/preferences_helper.rb">app/helpers/admin/preferences_helper.rb</a></td> + <td class="green strong">100.0 %</td> + <td>3</td> + <td>1</td> + <td>1</td> + <td>0</td> + <td>1.0</td> + </tr> + + <tr> + <td class="strong"><a href="#f67b3ce4ba5dfcbf735dc48d7e441eb59a706783" class="src_link" title="app/helpers/admin/references_helper.rb">app/helpers/admin/references_helper.rb</a></td> + <td class="red strong">31.82 %</td> + <td>46</td> + <td>22</td> + <td>7</td> + <td>15</td> + <td>0.3</td> + </tr> + + <tr> <td class="strong"><a href="#024a60096d1599d436568bc78004ef69dd2dbf20" class="src_link" title="app/helpers/admin/regions_helper.rb">app/helpers/admin/regions_helper.rb</a></td> - <td class="red strong">15.79 %</td> + <td class="green strong">94.74 %</td> <td>29</td> <td>19</td> - <td>3</td> - <td>16</td> - <td>0.2</td> + <td>18</td> + <td>1</td> + <td>164.8</td> </tr> <tr> + <td class="strong"><a href="#c36f97396afab7acde2fbe5a063b597d0b40f848" class="src_link" title="app/helpers/admin/resource_helper.rb">app/helpers/admin/resource_helper.rb</a></td> + <td class="green strong">100.0 %</td> + <td>2</td> + <td>1</td> + <td>1</td> + <td>0</td> + <td>1.0</td> + </tr> + + <tr> + <td class="strong"><a href="#b5b66cc2c9ceed019da04d236c18a819343756d7" class="src_link" title="app/helpers/admin/users_helper.rb">app/helpers/admin/users_helper.rb</a></td> + <td class="red strong">33.33 %</td> + <td>8</td> + <td>6</td> + <td>2</td> + <td>4</td> + <td>0.3</td> + </tr> + + <tr> + <td class="strong"><a href="#84bf416885112758ab122c8fd5353d9486d18756" class="src_link" title="app/helpers/admin/welcome_helper.rb">app/helpers/admin/welcome_helper.rb</a></td> + <td class="green strong">100.0 %</td> + <td>2</td> + <td>1</td> + <td>1</td> + <td>0</td> + <td>1.0</td> + </tr> + + <tr> <td class="strong"><a href="#e8ceba241b247e5465fc091266d42235281b188b" class="src_link" title="app/helpers/application_helper.rb">app/helpers/application_helper.rb</a></td> - <td class="red strong">28.57 %</td> + <td class="yellow strong">80.16 %</td> <td>239</td> <td>126</td> - <td>36</td> - <td>90</td> - <td>0.3</td> + <td>101</td> + <td>25</td> + <td>36.9</td> </tr> <tr> + <td class="strong"><a href="#a39d78c4fc93191de03915ecd09328b64f41b587" class="src_link" title="app/helpers/site_helper.rb">app/helpers/site_helper.rb</a></td> + <td class="green strong">100.0 %</td> + <td>2</td> + <td>1</td> + <td>1</td> + <td>0</td> + <td>1.0</td> + </tr> + + <tr> <td class="strong"><a href="#24a478dc81cb312b20b3b6ff5d59f560307249ae" class="src_link" title="app/models/layout.rb">app/models/layout.rb</a></td> <td class="green strong">100.0 %</td> <td>16</td> <td>9</td> <td>9</td> <td>0</td> + <td>4.0</td> + </tr> + + <tr> + <td class="strong"><a href="#0a4dd54b5173ef00862c0de3249f9062548ae0ed" class="src_link" title="app/models/menu_renderer.rb">app/models/menu_renderer.rb</a></td> + <td class="yellow strong">89.33 %</td> + <td>140</td> + <td>75</td> + <td>67</td> + <td>8</td> + <td>4.4</td> + </tr> + + <tr> + <td class="strong"><a href="#802c290d3237e413d582c6e3df59d0b1a783c364" class="src_link" title="app/models/page_context.rb">app/models/page_context.rb</a></td> + <td class="red strong">59.38 %</td> + <td>53</td> + <td>32</td> + <td>19</td> + <td>13</td> + <td>5.8</td> + </tr> + + <tr> + <td class="strong"><a href="#ee99abb95d276df654be743872e18cebe9cd7a76" class="src_link" title="app/models/page_field.rb">app/models/page_field.rb</a></td> + <td class="green strong">100.0 %</td> + <td>4</td> + <td>3</td> + <td>3</td> + <td>0</td> <td>1.0</td> </tr> <tr> + <td class="strong"><a href="#a305f6d4632c6314af7cf73ec29de843155d1b7c" class="src_link" title="app/models/page_part.rb">app/models/page_part.rb</a></td> + <td class="yellow strong">90.0 %</td> + <td>20</td> + <td>10</td> + <td>9</td> + <td>1</td> + <td>4.5</td> + </tr> + + <tr> <td class="strong"><a href="#7388d43ba91c2a28d73545a6809e9d998ff37d21" class="src_link" title="app/models/status.rb">app/models/status.rb</a></td> - <td class="red strong">77.78 %</td> + <td class="green strong">100.0 %</td> <td>41</td> <td>18</td> - <td>14</td> - <td>4</td> - <td>2.1</td> + <td>18</td> + <td>0</td> + <td>15.5</td> </tr> <tr> + <td class="strong"><a href="#a3d0e95dccc6cc402608c949f61537589888f7d7" class="src_link" title="app/models/text_filter.rb">app/models/text_filter.rb</a></td> + <td class="red strong">63.16 %</td> + <td>36</td> + <td>19</td> + <td>12</td> + <td>7</td> + <td>0.6</td> + </tr> + + <tr> <td class="strong"><a href="#3245bdc6bf68c4799ba1a1df23d11fe7c154286c" class="src_link" title="app/models/user.rb">app/models/user.rb</a></td> - <td class="red strong">75.0 %</td> + <td class="yellow strong">82.69 %</td> <td>97</td> <td>52</td> - <td>39</td> - <td>13</td> - <td>2.8</td> + <td>43</td> + <td>9</td> + <td>5.6</td> </tr> <tr> <td class="strong"><a href="#224090690cd46a1b82b33b9876817d1d65b88e42" class="src_link" title="app/models/user_action_observer.rb">app/models/user_action_observer.rb</a></td> - <td class="green strong">92.86 %</td> + <td class="green strong">100.0 %</td> <td>25</td> <td>14</td> - <td>13</td> - <td>1</td> - <td>3.8</td> + <td>14</td> + <td>0</td> + <td>24.3</td> </tr> <tr> <td class="strong"><a href="#d68b3b291e170af9809ca2750a36de47a6d1f510" class="src_link" title="lib/login_system.rb">lib/login_system.rb</a></td> - <td class="red strong">39.47 %</td> + <td class="red strong">78.95 %</td> <td>131</td> <td>76</td> - <td>30</td> - <td>46</td> - <td>1.5</td> + <td>60</td> + <td>16</td> + <td>55.8</td> </tr> <tr> - <td class="strong"><a href="#fac0612cad92bfcdda24e22600d5d675c7682536" class="src_link" title="spec/controllers/password_resets_controller_spec.rb">spec/controllers/password_resets_controller_spec.rb</a></td> - <td class="red strong">67.14 %</td> - <td>126</td> - <td>70</td> - <td>47</td> + <td class="strong"><a href="#bfaefba265a613847eb17511c91aeb33124d3b07" class="src_link" title="lib/trusty_cms/admin_ui/region_partials.rb">lib/trusty_cms/admin_ui/region_partials.rb</a></td> + <td class="yellow strong">83.33 %</td> <td>23</td> + <td>12</td> + <td>10</td> + <td>2</td> + <td>125.1</td> + </tr> + + <tr> + <td class="strong"><a href="#62bfb9f3ee6e8ac2730bec06c3df334c59428c84" class="src_link" title="lib/trusty_cms/available_locales.rb">lib/trusty_cms/available_locales.rb</a></td> + <td class="green strong">100.0 %</td> + <td>19</td> + <td>10</td> + <td>10</td> + <td>0</td> + <td>76.5</td> + </tr> + + <tr> + <td class="strong"><a href="#7ec5b193ca91bf0e62afdd726aa3bd77aba3eaaa" class="src_link" title="lib/trusty_cms/pagination/controller.rb">lib/trusty_cms/pagination/controller.rb</a></td> + <td class="green strong">92.86 %</td> + <td>41</td> + <td>14</td> + <td>13</td> + <td>1</td> + <td>17.8</td> + </tr> + + <tr> + <td class="strong"><a href="#bed13f447cc3293c2e33013bd302547d11b4f7be" class="src_link" title="lib/trusty_cms/resource_responses.rb">lib/trusty_cms/resource_responses.rb</a></td> + <td class="red strong">80.0 %</td> + <td>121</td> + <td>70</td> + <td>56</td> + <td>14</td> + <td>14.6</td> + </tr> + + <tr> + <td class="strong"><a href="#caa7ec0029d51eb5c9bde0f679fcfcb448b3cd01" class="src_link" title="spec/controllers/application_controller_spec.rb">spec/controllers/application_controller_spec.rb</a></td> + <td class="green strong">100.0 %</td> + <td>60</td> + <td>40</td> + <td>40</td> + <td>0</td> + <td>1.5</td> + </tr> + + <tr> + <td class="strong"><a href="#337cbe163bc8bfdb5179ca7658af10ab02e6c229" class="src_link" title="spec/controllers/users_controller_spec.rb">spec/controllers/users_controller_spec.rb</a></td> + <td class="green strong">100.0 %</td> + <td>6</td> + <td>3</td> + <td>3</td> + <td>0</td> <td>1.0</td> </tr> <tr> + <td class="strong"><a href="#a27fd50274e4ef14baece85f6fc1ef2dff24481e" class="src_link" title="spec/controllers/welcome_controller_spec.rb">spec/controllers/welcome_controller_spec.rb</a></td> + <td class="green strong">100.0 %</td> + <td>6</td> + <td>3</td> + <td>3</td> + <td>0</td> + <td>1.0</td> + </tr> + + <tr> <td class="strong"><a href="#b8f4cd120e1d67bc8beac165fcf0bc0aa4481001" class="src_link" title="spec/factories/layout.rb">spec/factories/layout.rb</a></td> <td class="green strong">100.0 %</td> <td>17</td> <td>4</td> <td>4</td> @@ -185,21 +495,101 @@ <td class="green strong">100.0 %</td> <td>35</td> <td>25</td> <td>25</td> <td>0</td> - <td>1.4</td> + <td>1.0</td> </tr> <tr> + <td class="strong"><a href="#5d70a4be91101af4532a395a46c8d595d80b8fb0" class="src_link" title="spec/features/admin_login_spec.rb">spec/features/admin_login_spec.rb</a></td> + <td class="green strong">100.0 %</td> + <td>92</td> + <td>52</td> + <td>52</td> + <td>0</td> + <td>1.3</td> + </tr> + + <tr> + <td class="strong"><a href="#a413cd7cc1724408d7a525553d4834265f04885e" class="src_link" title="spec/features/config_spec.rb">spec/features/config_spec.rb</a></td> + <td class="green strong">100.0 %</td> + <td>34</td> + <td>21</td> + <td>21</td> + <td>0</td> + <td>1.3</td> + </tr> + + <tr> + <td class="strong"><a href="#ab78dbd6e5a827bfa8db3f97d98882ca4edbba01" class="src_link" title="spec/features/javascript_smoke_spec.rb">spec/features/javascript_smoke_spec.rb</a></td> + <td class="green strong">100.0 %</td> + <td>59</td> + <td>30</td> + <td>30</td> + <td>0</td> + <td>1.0</td> + </tr> + + <tr> + <td class="strong"><a href="#7570781db4c3155e965463b658470da596800bab" class="src_link" title="spec/features/layouts_spec.rb">spec/features/layouts_spec.rb</a></td> + <td class="green strong">100.0 %</td> + <td>49</td> + <td>33</td> + <td>33</td> + <td>0</td> + <td>1.3</td> + </tr> + + <tr> + <td class="strong"><a href="#d4d1a930f2f47b0ce0846efa1c917ebdf0bf2c69" class="src_link" title="spec/features/pages_spec.rb">spec/features/pages_spec.rb</a></td> + <td class="green strong">100.0 %</td> + <td>55</td> + <td>34</td> + <td>34</td> + <td>0</td> + <td>1.2</td> + </tr> + + <tr> + <td class="strong"><a href="#f651b1e0d6b03b639bb1910679349dcb5c4906d8" class="src_link" title="spec/models/layout_spec.rb">spec/models/layout_spec.rb</a></td> + <td class="green strong">100.0 %</td> + <td>29</td> + <td>19</td> + <td>19</td> + <td>0</td> + <td>1.1</td> + </tr> + + <tr> + <td class="strong"><a href="#5e6e398d1f9a901307ea91dab9ee535aa8c9a444" class="src_link" title="spec/rails_helper.rb">spec/rails_helper.rb</a></td> + <td class="green strong">100.0 %</td> + <td>73</td> + <td>24</td> + <td>24</td> + <td>0</td> + <td>3.1</td> + </tr> + + <tr> + <td class="strong"><a href="#e26ef2de8407666da2a4b16334e43c210a4e8735" class="src_link" title="spec/routing/welcome_routing_spec.rb">spec/routing/welcome_routing_spec.rb</a></td> + <td class="green strong">100.0 %</td> + <td>18</td> + <td>8</td> + <td>8</td> + <td>0</td> + <td>1.0</td> + </tr> + + <tr> <td class="strong"><a href="#992b2e5d02f76777327edeb5263d89e2cab32d72" class="src_link" title="spec/support/custom_actions.rb">spec/support/custom_actions.rb</a></td> - <td class="red strong">20.0 %</td> + <td class="green strong">100.0 %</td> <td>10</td> <td>5</td> - <td>1</td> - <td>4</td> - <td>0.2</td> + <td>5</td> + <td>0</td> + <td>17.0</td> </tr> </tbody> </table> </div> @@ -214,210 +604,3414 @@ using RSpec </div> <div class="source_files"> - <div class="source_table" id="7948f870edaadd3e575d89cc132d72051ee743fa"> + <div class="source_table" id="f599caf63215e126813bbd891071cc4dd1d3b8db"> <div class="header"> - <h3>app/controllers/admin/password_resets_controller.rb</h3> - <h4><span class="red">72.22 %</span> covered</h4> + <h3>app/controllers/admin/configuration_controller.rb</h3> + <h4><span class="red">79.17 %</span> covered</h4> <div> - <b>18</b> relevant lines. - <span class="green"><b>13</b> lines covered</span> and + <b>24</b> relevant lines. + <span class="green"><b>19</b> lines covered</span> and <span class="red"><b>5</b> lines missed.</span> </div> </div> <pre> <ol> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> - <code class="ruby">class Admin::PasswordResetsController &lt; ApplicationController</code> + <code class="ruby">class Admin::ConfigurationController &lt; ApplicationController</code> </li> + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="3"> + + + <code class="ruby"> # Admin::ConfigurationController handles the batch-updating of TrustyCms::Config entries.</code> + </li> + + <li class="never" data-hits="" data-linenumber="4"> + + + <code class="ruby"> # It accepts any set of config name-value pairs but is accessible only to administrators.</code> + </li> + + <li class="never" data-hits="" data-linenumber="5"> + + + <code class="ruby"> # Note that configuration is routed as a singular resource so we only deal with show/edit/update</code> + </li> + + <li class="never" data-hits="" data-linenumber="6"> + + + <code class="ruby"> # and the show and edit views determine what set of config values is shown and made editable.</code> + </li> + + <li class="never" data-hits="" data-linenumber="7"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="8"> + <span class="hits">1</span> + + <code class="ruby"> before_filter :initialize_config</code> + </li> + + <li class="never" data-hits="" data-linenumber="9"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="10"> + <span class="hits">1</span> + + <code class="ruby"> only_allow_access_to :edit, :update,</code> + </li> + + <li class="never" data-hits="" data-linenumber="11"> + + + <code class="ruby"> :when =&gt; [:admin],</code> + </li> + + <li class="never" data-hits="" data-linenumber="12"> + + + <code class="ruby"> :denied_url =&gt; { :controller =&gt; &#39;admin/configuration&#39;, :action =&gt; &#39;show&#39; },</code> + </li> + + <li class="never" data-hits="" data-linenumber="13"> + + + <code class="ruby"> :denied_message =&gt; &#39;You must have admin privileges to edit site configuration.&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="14"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="15"> + <span class="hits">1</span> + + <code class="ruby"> def show</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="16"> + <span class="hits">5</span> + + <code class="ruby"> @user = current_user</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="17"> + <span class="hits">5</span> + + <code class="ruby"> render</code> + </li> + + <li class="never" data-hits="" data-linenumber="18"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="19"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="20"> + <span class="hits">1</span> + + <code class="ruby"> def edit</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="21"> + <span class="hits">1</span> + + <code class="ruby"> render</code> + </li> + + <li class="never" data-hits="" data-linenumber="22"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="23"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="24"> + <span class="hits">1</span> + + <code class="ruby"> def update</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="25"> + <span class="hits">1</span> + + <code class="ruby"> if params[:trusty_config]</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="26"> + <span class="hits">1</span> + + <code class="ruby"> begin</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="27"> + <span class="hits">1</span> + + <code class="ruby"> TrustyCms.config.transaction do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="28"> + <span class="hits">1</span> + + <code class="ruby"> params[:trusty_config].each_pair do |key, value|</code> + </li> + + <li class="covered" data-hits="10" data-linenumber="29"> + <span class="hits">10</span> + + <code class="ruby"> @trusty_config[key] = TrustyCms::Config.find_or_initialize_by(key: key)</code> + </li> + + <li class="covered" data-hits="10" data-linenumber="30"> + <span class="hits">10</span> + + <code class="ruby"> @trusty_config[key].value = value # validation sets errors on @trusty_config[&#39;key&#39;] that the helper methods will pick up</code> + </li> + + <li class="never" data-hits="" data-linenumber="31"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="32"> + <span class="hits">1</span> + + <code class="ruby"> redirect_to :action =&gt; :show</code> + </li> + + <li class="never" data-hits="" data-linenumber="33"> + + + <code class="ruby"> end</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="34"> + + + <code class="ruby"> rescue ActiveRecord::RecordInvalid =&gt; e</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="35"> + + + <code class="ruby"> flash[:error] = &quot;Configuration error: please check the form&quot;</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="36"> + + + <code class="ruby"> render :action =&gt; :edit</code> + </li> + + <li class="never" data-hits="" data-linenumber="37"> + + + <code class="ruby"> rescue TrustyCms::Config::ConfigError =&gt; e</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="38"> + + + <code class="ruby"> flash[:error] = &quot;Configuration error: #{e}&quot;</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="39"> + + + <code class="ruby"> render :action =&gt; :edit</code> + </li> + + <li class="never" data-hits="" data-linenumber="40"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="41"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="42"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="43"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="44"> + <span class="hits">1</span> + + <code class="ruby">protected</code> + </li> + + <li class="never" data-hits="" data-linenumber="45"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="46"> + <span class="hits">1</span> + + <code class="ruby"> def initialize_config</code> + </li> + + <li class="covered" data-hits="7" data-linenumber="47"> + <span class="hits">7</span> + + <code class="ruby"> @trusty_config = {}</code> + </li> + + <li class="never" data-hits="" data-linenumber="48"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="49"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="50"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="17657aadafa48e20fcb3bd8e5e210965c961320a"> + <div class="header"> + <h3>app/controllers/admin/extensions_controller.rb</h3> + <h4><span class="red">60.0 %</span> covered</h4> + <div> + <b>5</b> relevant lines. + <span class="green"><b>3</b> lines covered</span> and + <span class="red"><b>2</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">class Admin::ExtensionsController &lt; ApplicationController</code> + </li> + <li class="covered" data-hits="1" data-linenumber="2"> <span class="hits">1</span> - <code class="ruby"> no_login_required</code> + <code class="ruby"> only_allow_access_to :index,</code> </li> + <li class="never" data-hits="" data-linenumber="3"> + + + <code class="ruby"> :when =&gt; :admin,</code> + </li> + + <li class="never" data-hits="" data-linenumber="4"> + + + <code class="ruby"> :denied_url =&gt; { :controller =&gt; &#39;pages&#39;, :action =&gt; &#39;index&#39; },</code> + </li> + + <li class="never" data-hits="" data-linenumber="5"> + + + <code class="ruby"> :denied_message =&gt; &#39;You must have administrative privileges to perform this action.&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="6"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="7"> + <span class="hits">1</span> + + <code class="ruby"> def index</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="8"> + + + <code class="ruby"> @template_name = &#39;index&#39; # for Admin::RegionsHelper</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="9"> + + + <code class="ruby"> @extensions = TrustyCms::Extension.descendants.sort_by { |e| e.extension_name }</code> + </li> + + <li class="never" data-hits="" data-linenumber="10"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="11"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="21519a85f829e2fbd7235984e406553be64b6b27"> + <div class="header"> + <h3>app/controllers/admin/layouts_controller.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <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> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">class Admin::LayoutsController &lt; Admin::ResourceController</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="2"> + <span class="hits">1</span> + + <code class="ruby"> paginate_models</code> + </li> + <li class="covered" data-hits="1" data-linenumber="3"> <span class="hits">1</span> - <code class="ruby"> skip_before_filter :verify_authenticity_token</code> + <code class="ruby"> only_allow_access_to :index, :show, :new, :create, :edit, :update, :remove, :destroy,</code> </li> <li class="never" data-hits="" data-linenumber="4"> + <code class="ruby"> :when =&gt; [:designer, :admin],</code> + </li> + + <li class="never" data-hits="" data-linenumber="5"> + + + <code class="ruby"> :denied_url =&gt; { :controller =&gt; &#39;admin/pages&#39;, :action =&gt; &#39;index&#39; },</code> + </li> + + <li class="never" data-hits="" data-linenumber="6"> + + + <code class="ruby"> :denied_message =&gt; &#39;You must have designer privileges to perform this action.&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="7"> + + <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="5"> + <li class="never" data-hits="" data-linenumber="8"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="325babca4b7e56052d91c8b2915714d266a831a1"> + <div class="header"> + <h3>app/controllers/admin/page_parts_controller.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <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> + + <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> + <code class="ruby">class Admin::PagePartsController &lt; Admin::ResourceController</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="2"> + <span class="hits">1</span> + <code class="ruby"> def create</code> </li> - <li class="covered" data-hits="5" data-linenumber="6"> - <span class="hits">5</span> + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> - <code class="ruby"> user = User.find_by_email(params[:email])</code> + <code class="ruby"> self.model.attributes = params[model_symbol]</code> </li> - <li class="covered" data-hits="5" data-linenumber="7"> - <span class="hits">5</span> + <li class="covered" data-hits="1" data-linenumber="4"> + <span class="hits">1</span> - <code class="ruby"> if user</code> + <code class="ruby"> @controller_name = &#39;page&#39;</code> </li> - <li class="covered" data-hits="3" data-linenumber="8"> - <span class="hits">3</span> + <li class="covered" data-hits="1" data-linenumber="5"> + <span class="hits">1</span> - <code class="ruby"> user.send_password_reset</code> + <code class="ruby"> @template_name = &#39;edit&#39;</code> </li> - <li class="missed" data-hits="0" data-linenumber="9"> + <li class="covered" data-hits="1" data-linenumber="6"> + <span class="hits">1</span> + <code class="ruby"> render :partial =&gt; &quot;page_part&quot;, :object =&gt; model,</code> + </li> + + <li class="never" data-hits="" data-linenumber="7"> - <code class="ruby"> redirect_to welcome_path, :notice =&gt; &quot;Email sent with password reset instructions.&quot;</code> + + <code class="ruby"> :locals =&gt; {:page_part_counter =&gt; params[:index].to_i}</code> </li> + <li class="never" data-hits="" data-linenumber="8"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="9"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="12b0c87d1b29324b336517e5a0d2d4df2cc9de32"> + <div class="header"> + <h3>app/controllers/admin/pages_controller.rb</h3> + <h4><span class="red">75.0 %</span> covered</h4> + <div> + <b>64</b> relevant lines. + <span class="green"><b>48</b> lines covered</span> and + <span class="red"><b>16</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">class Admin::PagesController &lt; Admin::ResourceController</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="2"> + <span class="hits">1</span> + + <code class="ruby"> before_filter :initialize_meta_rows_and_buttons, :only =&gt; [:new, :edit, :create, :update]</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby"> before_filter :count_deleted_pages, :only =&gt; [:destroy]</code> + </li> + + <li class="never" data-hits="" data-linenumber="4"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="5"> + <span class="hits">1</span> + + <code class="ruby"> class PreviewStop &lt; ActiveRecord::Rollback</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="6"> + <span class="hits">1</span> + + <code class="ruby"> def message</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="7"> + + + <code class="ruby"> &#39;Changes not saved!&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="8"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="9"> + + + <code class="ruby"> end</code> + </li> + <li class="never" data-hits="" data-linenumber="10"> + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="11"> + <span class="hits">1</span> + + <code class="ruby"> create_responses do |r|</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="12"> + <span class="hits">1</span> + + <code class="ruby"> r.plural.js do</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="13"> + + + <code class="ruby"> @level = params[:level].to_i</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="14"> + + + <code class="ruby"> @index = params[:index].to_i</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="15"> + + + <code class="ruby"> @rendered_html = &quot;&quot;</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="16"> + + + <code class="ruby"> @template_name = &#39;index&#39;</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="17"> + + + <code class="ruby"> self.models = Page.find(params[:page_id]).children.all</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="18"> + + + <code class="ruby"> response.headers[&#39;Content-Type&#39;] = &#39;text/html;charset=utf-8&#39;</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="19"> + + + <code class="ruby"> render :action =&gt; &#39;children.html.haml&#39;, :layout =&gt; false</code> + </li> + + <li class="never" data-hits="" data-linenumber="20"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="21"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="22"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="23"> + <span class="hits">1</span> + + <code class="ruby"> def index</code> + </li> + + <li class="covered" data-hits="25" data-linenumber="24"> + <span class="hits">25</span> + + <code class="ruby"> @homepage = Page.find_by_parent_id(nil)</code> + </li> + + <li class="covered" data-hits="25" data-linenumber="25"> + <span class="hits">25</span> + + <code class="ruby"> response_for :plural</code> + </li> + + <li class="never" data-hits="" data-linenumber="26"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="27"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="28"> + <span class="hits">1</span> + + <code class="ruby"> def new</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="29"> + <span class="hits">4</span> + + <code class="ruby"> @page = self.model = model_class.new_with_defaults(trusty_config)</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="30"> + <span class="hits">4</span> + + <code class="ruby"> assign_page_attributes</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="31"> + <span class="hits">4</span> + + <code class="ruby"> response_for :new</code> + </li> + + <li class="never" data-hits="" data-linenumber="32"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="33"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="34"> + <span class="hits">1</span> + + <code class="ruby"> def preview</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="35"> + <span class="hits">1</span> + + <code class="ruby"> render_preview</code> + </li> + + <li class="never" data-hits="" data-linenumber="36"> + + + <code class="ruby"> rescue PreviewStop =&gt; exception</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="37"> + + + <code class="ruby"> render :text =&gt; exception.message unless @performed_render</code> + </li> + + <li class="never" data-hits="" data-linenumber="38"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="39"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="40"> + <span class="hits">1</span> + + <code class="ruby"> private</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="41"> + <span class="hits">1</span> + + <code class="ruby"> def assign_page_attributes</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="42"> + <span class="hits">4</span> + + <code class="ruby"> if params[:page_id].blank?</code> + </li> + + <li class="covered" data-hits="3" data-linenumber="43"> + <span class="hits">3</span> + + <code class="ruby"> self.model.slug = &#39;/&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="44"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="45"> + <span class="hits">4</span> + + <code class="ruby"> self.model.parent_id = params[:page_id]</code> + </li> + + <li class="never" data-hits="" data-linenumber="46"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="47"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="48"> + <span class="hits">1</span> + + <code class="ruby"> def model_class</code> + </li> + + <li class="covered" data-hits="198" data-linenumber="49"> + <span class="hits">198</span> + + <code class="ruby"> if Page.descendants.any? { |d| d.to_s == params[:page_class] }</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="50"> + + + <code class="ruby"> verify_page_class(params[:page_class])</code> + </li> + + <li class="covered" data-hits="99" data-linenumber="51"> + <span class="hits">99</span> + + <code class="ruby"> elsif params[:page_id]</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="52"> + <span class="hits">5</span> + + <code class="ruby"> Page.find(params[:page_id]).children</code> + </li> + + <li class="never" data-hits="" data-linenumber="53"> + + + <code class="ruby"> else</code> + </li> + + <li class="covered" data-hits="94" data-linenumber="54"> + <span class="hits">94</span> + + <code class="ruby"> Page</code> + </li> + + <li class="never" data-hits="" data-linenumber="55"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="56"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="57"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="58"> + <span class="hits">1</span> + + <code class="ruby"> def render_preview</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="59"> + <span class="hits">1</span> + + <code class="ruby"> Page.transaction do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="60"> + <span class="hits">1</span> + + <code class="ruby"> page_class = Page.descendants.include?(model_class) ? model_class : Page</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="61"> + <span class="hits">1</span> + + <code class="ruby"> if request.referer =~ %r{/admin/pages/(\d+)/edit}</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="62"> + + + <code class="ruby"> page = Page.find($1).becomes(page_class)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="63"> + + + <code class="ruby"> page.update_attributes(params[:page])</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="64"> + + + <code class="ruby"> page.published_at ||= Time.now</code> + </li> + + <li class="never" data-hits="" data-linenumber="65"> + + + <code class="ruby"> else</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="66"> + <span class="hits">1</span> + + <code class="ruby"> page = page_class.new(params[:page])</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="67"> + <span class="hits">1</span> + + <code class="ruby"> page.published_at = page.updated_at = page.created_at = Time.now</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="68"> + <span class="hits">1</span> + + <code class="ruby"> page.parent = Page.find($1) if request.referer =~ %r{/admin/pages/(\d+)/children/new}</code> + </li> + + <li class="never" data-hits="" data-linenumber="69"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="70"> + <span class="hits">1</span> + + <code class="ruby"> page.pagination_parameters = pagination_parameters</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="71"> + <span class="hits">1</span> + + <code class="ruby"> process_with_exception(page)</code> + </li> + + <li class="never" data-hits="" data-linenumber="72"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="73"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="74"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="75"> + <span class="hits">1</span> + + <code class="ruby"> def process_with_exception(page)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="76"> + <span class="hits">1</span> + + <code class="ruby"> page.process(request, response)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="77"> + <span class="hits">1</span> + + <code class="ruby"> @performed_render = true</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="78"> + <span class="hits">1</span> + + <code class="ruby"> render template: &#39;site/show_page&#39;, layout: false</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="79"> + <span class="hits">1</span> + + <code class="ruby"> raise PreviewStop</code> + </li> + + <li class="never" data-hits="" data-linenumber="80"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="81"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="82"> + <span class="hits">1</span> + + <code class="ruby"> def count_deleted_pages</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="83"> + <span class="hits">1</span> + + <code class="ruby"> @count = model.children.count + 1</code> + </li> + + <li class="never" data-hits="" data-linenumber="84"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="85"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="86"> + <span class="hits">1</span> + + <code class="ruby"> def initialize_meta_rows_and_buttons</code> + </li> + + <li class="covered" data-hits="7" data-linenumber="87"> + <span class="hits">7</span> + + <code class="ruby"> @buttons_partials ||= []</code> + </li> + + <li class="covered" data-hits="7" data-linenumber="88"> + <span class="hits">7</span> + + <code class="ruby"> @meta ||= []</code> + </li> + + <li class="covered" data-hits="7" data-linenumber="89"> + <span class="hits">7</span> + + <code class="ruby"> @meta &lt;&lt; {:field =&gt; &quot;slug&quot;, :type =&gt; &quot;text_field&quot;, :args =&gt; [{:class =&gt; &#39;textbox&#39;, :maxlength =&gt; 100}]}</code> + </li> + + <li class="covered" data-hits="7" data-linenumber="90"> + <span class="hits">7</span> + + <code class="ruby"> @meta &lt;&lt; {:field =&gt; &quot;breadcrumb&quot;, :type =&gt; &quot;text_field&quot;, :args =&gt; [{:class =&gt; &#39;textbox&#39;, :maxlength =&gt; 160}]}</code> + </li> + + <li class="never" data-hits="" data-linenumber="91"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="92"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="93"> + <span class="hits">1</span> + + <code class="ruby"> def verify_page_class(page_class)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="94"> + + + <code class="ruby"> if page_class.constantize.ancestors.include?(Page)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="95"> + + + <code class="ruby"> page_class.constantize</code> + </li> + + <li class="never" data-hits="" data-linenumber="96"> + + <code class="ruby"> else</code> </li> - <li class="covered" data-hits="2" data-linenumber="11"> - <span class="hits">2</span> + <li class="missed" data-hits="0" data-linenumber="97"> - <code class="ruby"> redirect_to new_admin_password_reset, :notice =&gt; &quot;Email not registered, please try re-typing it or contacting your Admin.&quot;</code> + + <code class="ruby"> raise &quot;I&#39;m not allowed to constantize #{page_class}!&quot;</code> </li> + <li class="never" data-hits="" data-linenumber="98"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="99"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="100"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="327c19329660164ad68bedbd54229068fb659364"> + <div class="header"> + <h3>app/controllers/admin/preferences_controller.rb</h3> + <h4><span class="yellow">82.35 %</span> covered</h4> + <div> + <b>17</b> relevant lines. + <span class="green"><b>14</b> lines covered</span> and + <span class="red"><b>3</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">class Admin::PreferencesController &lt; ApplicationController</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="2"> + <span class="hits">1</span> + + <code class="ruby"> before_filter :initialize_variables</code> + </li> + + <li class="never" data-hits="" data-linenumber="3"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="4"> + <span class="hits">1</span> + + <code class="ruby"> def show</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="5"> + <span class="hits">1</span> + + <code class="ruby"> set_standard_body_style</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="6"> + <span class="hits">1</span> + + <code class="ruby"> render :edit</code> + </li> + + <li class="never" data-hits="" data-linenumber="7"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="8"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="9"> + <span class="hits">1</span> + + <code class="ruby"> def edit</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="10"> + + + <code class="ruby"> render</code> + </li> + + <li class="never" data-hits="" data-linenumber="11"> + + + <code class="ruby"> end</code> + </li> + <li class="never" data-hits="" data-linenumber="12"> + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="13"> + <span class="hits">1</span> + + <code class="ruby"> def update</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="14"> + <span class="hits">1</span> + + <code class="ruby"> if @user.update_attributes(params[:user])</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="15"> + <span class="hits">1</span> + + <code class="ruby"> redirect_to admin_configuration_path</code> + </li> + + <li class="never" data-hits="" data-linenumber="16"> + + + <code class="ruby"> else</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="17"> + + + <code class="ruby"> flash[:error] = t(&#39;preferences_controller.error_updating&#39;)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="18"> + + + <code class="ruby"> render :edit</code> + </li> + + <li class="never" data-hits="" data-linenumber="19"> + + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="13"> + <li class="never" data-hits="" data-linenumber="20"> <code class="ruby"> end</code> </li> + <li class="never" data-hits="" data-linenumber="21"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="22"> + <span class="hits">1</span> + + <code class="ruby"> private</code> + </li> + + <li class="never" data-hits="" data-linenumber="23"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="24"> + <span class="hits">1</span> + + <code class="ruby"> def initialize_variables</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="25"> + <span class="hits">2</span> + + <code class="ruby"> @user = current_user</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="26"> + <span class="hits">2</span> + + <code class="ruby"> @controller_name = &#39;user&#39;</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="27"> + <span class="hits">2</span> + + <code class="ruby"> @template_name = &#39;preferences&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="28"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="29"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="977407fe9a2d9fadbb1030a030adcae347c6b0e4"> + <div class="header"> + <h3>app/controllers/admin/resource_controller.rb</h3> + <h4><span class="yellow">85.83 %</span> covered</h4> + <div> + <b>120</b> relevant lines. + <span class="green"><b>103</b> lines covered</span> and + <span class="red"><b>17</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">require &#39;trusty_cms/resource_responses&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="2"> + <span class="hits">1</span> + + <code class="ruby">class Admin::ResourceController &lt; ApplicationController</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby"> extend TrustyCms::ResourceResponses</code> + </li> + + <li class="never" data-hits="" data-linenumber="4"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="5"> + <span class="hits">1</span> + + <code class="ruby"> helper_method :model, :current_object, :models, :current_objects, :model_symbol, :plural_model_symbol, :model_class, :model_name, :plural_model_name</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="6"> + <span class="hits">1</span> + + <code class="ruby"> before_filter :populate_format</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="7"> + <span class="hits">1</span> + + <code class="ruby"> before_filter :never_cache</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="8"> + <span class="hits">1</span> + + <code class="ruby"> before_filter :load_models, :only =&gt; :index</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="9"> + <span class="hits">1</span> + + <code class="ruby"> before_filter :load_model, :only =&gt; [:new, :create, :edit, :update, :remove, :destroy]</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="10"> + <span class="hits">1</span> + + <code class="ruby"> after_filter :clear_model_cache, :only =&gt; [:create, :update, :destroy]</code> + </li> + + <li class="never" data-hits="" data-linenumber="11"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="12"> + <span class="hits">1</span> + + <code class="ruby"> cattr_reader :paginated</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="13"> + <span class="hits">1</span> + + <code class="ruby"> cattr_accessor :default_per_page, :will_paginate_options</code> + </li> + <li class="never" data-hits="" data-linenumber="14"> <code class="ruby"></code> </li> <li class="covered" data-hits="1" data-linenumber="15"> <span class="hits">1</span> - <code class="ruby"> def edit</code> + <code class="ruby"> create_responses do |r|</code> </li> - <li class="covered" data-hits="1" data-linenumber="16"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="16"> - <code class="ruby"> @user = User.where(password_reset_token: params[:id])</code> + + <code class="ruby"> # Equivalent respond_to block for :plural responses:</code> </li> <li class="never" data-hits="" data-linenumber="17"> - <code class="ruby"> end</code> + <code class="ruby"> # respond_to do |wants|</code> </li> <li class="never" data-hits="" data-linenumber="18"> + <code class="ruby"> # wants.xml { render :xml =&gt; models }</code> + </li> + + <li class="never" data-hits="" data-linenumber="19"> + + + <code class="ruby"> # wants.json { render :json =&gt; models }</code> + </li> + + <li class="never" data-hits="" data-linenumber="20"> + + + <code class="ruby"> # wants.any</code> + </li> + + <li class="never" data-hits="" data-linenumber="21"> + + + <code class="ruby"> # end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="22"> + <span class="hits">1</span> + + <code class="ruby"> r.plural.publish(:xml, :json) { render format_symbol =&gt; models }</code> + </li> + + <li class="never" data-hits="" data-linenumber="23"> + + <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="19"> + <li class="covered" data-hits="1" data-linenumber="24"> <span class="hits">1</span> - <code class="ruby"> def update</code> + <code class="ruby"> r.singular.publish(:xml, :json) { render format_symbol =&gt; model }</code> </li> - <li class="covered" data-hits="2" data-linenumber="20"> + <li class="covered" data-hits="6" data-linenumber="25"> + <span class="hits">6</span> + + <code class="ruby"> r.singular.default { redirect_to edit_model_path if action_name == &quot;show&quot; }</code> + </li> + + <li class="never" data-hits="" data-linenumber="26"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="27"> + <span class="hits">1</span> + + <code class="ruby"> r.not_found.publish(:xml, :json) { head :not_found }</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="28"> + <span class="hits">1</span> + + <code class="ruby"> r.not_found.default { announce_not_found; redirect_to :action =&gt; &quot;index&quot; }</code> + </li> + + <li class="never" data-hits="" data-linenumber="29"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="30"> + <span class="hits">1</span> + + <code class="ruby"> r.invalid.publish(:xml, :json) { render format_symbol =&gt; model.errors, :status =&gt; :unprocessable_entity }</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="31"> + <span class="hits">1</span> + + <code class="ruby"> r.invalid.default { announce_validation_errors; render :action =&gt; template_name }</code> + </li> + + <li class="never" data-hits="" data-linenumber="32"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="33"> + <span class="hits">1</span> + + <code class="ruby"> r.stale.publish(:xml, :json) { head :conflict }</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="34"> + <span class="hits">1</span> + + <code class="ruby"> r.stale.default { announce_update_conflict; render :action =&gt; template_name }</code> + </li> + + <li class="never" data-hits="" data-linenumber="35"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="36"> + <span class="hits">1</span> + + <code class="ruby"> r.create.publish(:xml, :json) { render format_symbol =&gt; model, :status =&gt; :created, :location =&gt; url_for(:format =&gt; format_symbol, :id =&gt; model) }</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="37"> + <span class="hits">4</span> + + <code class="ruby"> r.create.default { redirect_to continue_url(params) }</code> + </li> + + <li class="never" data-hits="" data-linenumber="38"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="39"> + <span class="hits">1</span> + + <code class="ruby"> r.update.publish(:xml, :json) { head :ok }</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="40"> + <span class="hits">1</span> + + <code class="ruby"> r.update.default { redirect_to continue_url(params) }</code> + </li> + + <li class="never" data-hits="" data-linenumber="41"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="42"> + <span class="hits">1</span> + + <code class="ruby"> r.destroy.publish(:xml, :json) { head :deleted }</code> + </li> + + <li class="covered" data-hits="3" data-linenumber="43"> + <span class="hits">3</span> + + <code class="ruby"> r.destroy.default { redirect_to continue_url(params) }</code> + </li> + + <li class="never" data-hits="" data-linenumber="44"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="45"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="46"> + <span class="hits">1</span> + + <code class="ruby"> def index</code> + </li> + + <li class="covered" data-hits="8" data-linenumber="47"> + <span class="hits">8</span> + + <code class="ruby"> response_for :plural</code> + </li> + + <li class="never" data-hits="" data-linenumber="48"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="49"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="50"> + <span class="hits">1</span> + + <code class="ruby"> [:show, :new, :edit, :remove].each do |action|</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="51"> + <span class="hits">4</span> + + <code class="ruby"> class_eval %{</code> + </li> + + <li class="never" data-hits="" data-linenumber="52"> + + + <code class="ruby"> def #{action} # def show</code> + </li> + + <li class="never" data-hits="" data-linenumber="53"> + + + <code class="ruby"> response_for :singular # response_for :singular</code> + </li> + + <li class="never" data-hits="" data-linenumber="54"> + + + <code class="ruby"> end # end</code> + </li> + + <li class="never" data-hits="" data-linenumber="55"> + + + <code class="ruby"> }, __FILE__, __LINE__</code> + </li> + + <li class="never" data-hits="" data-linenumber="56"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="57"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="58"> + <span class="hits">1</span> + + <code class="ruby"> [:create, :update].each do |action|</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="59"> <span class="hits">2</span> - <code class="ruby"> @user = User.where(password_reset_token: params[:id])</code> + <code class="ruby"> class_eval %{</code> </li> - <li class="covered" data-hits="2" data-linenumber="21"> + <li class="never" data-hits="" data-linenumber="60"> + + + <code class="ruby"> def #{action} # def create</code> + </li> + + <li class="never" data-hits="" data-linenumber="61"> + + + <code class="ruby"> model.update_attributes!(params[model_symbol]) # model.update_attributes!(params[model_symbol])</code> + </li> + + <li class="never" data-hits="" data-linenumber="62"> + + + <code class="ruby"> response_for :#{action} # response_for :create</code> + </li> + + <li class="never" data-hits="" data-linenumber="63"> + + + <code class="ruby"> end # end</code> + </li> + + <li class="never" data-hits="" data-linenumber="64"> + + + <code class="ruby"> }, __FILE__, __LINE__</code> + </li> + + <li class="never" data-hits="" data-linenumber="65"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="66"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="67"> + <span class="hits">1</span> + + <code class="ruby"> def destroy</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="68"> <span class="hits">2</span> - <code class="ruby"> if @user.password_reset_sent_at &lt; 2.hours.ago</code> + <code class="ruby"> model.destroy</code> </li> - <li class="missed" data-hits="0" data-linenumber="22"> + <li class="covered" data-hits="2" data-linenumber="69"> + <span class="hits">2</span> + <code class="ruby"> response_for :destroy</code> + </li> + + <li class="never" data-hits="" data-linenumber="70"> - <code class="ruby"> redirect_to new_password_reset_path, :alert =&gt; &quot;Password reset has expired.&quot;</code> + + <code class="ruby"> end</code> </li> - <li class="missed" data-hits="0" data-linenumber="23"> + <li class="never" data-hits="" data-linenumber="71"> - <code class="ruby"> elsif @user.update_attributes(params[:user])</code> + <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="24"> + <li class="covered" data-hits="1" data-linenumber="72"> + <span class="hits">1</span> + <code class="ruby"> def self.model_class(model_class = nil)</code> + </li> + + <li class="covered" data-hits="40" data-linenumber="73"> + <span class="hits">40</span> - <code class="ruby"> redirect_to welcome_url, :notice =&gt; &quot;Password has been reset!&quot;</code> + <code class="ruby"> @model_class ||= (model_class || self.controller_name).to_s.singularize.camelize.constantize</code> </li> - <li class="never" data-hits="" data-linenumber="25"> + <li class="never" data-hits="" data-linenumber="74"> - <code class="ruby"> else</code> + <code class="ruby"> end</code> </li> - <li class="missed" data-hits="0" data-linenumber="26"> + <li class="never" data-hits="" data-linenumber="75"> - <code class="ruby"> render :edit</code> + <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="27"> + <li class="never" data-hits="" data-linenumber="76"> + <code class="ruby"> # call paginate_models to declare that will_paginate should be used in the index view</code> + </li> + + <li class="never" data-hits="" data-linenumber="77"> + + + <code class="ruby"> # options specified here are accessible in the view by calling will_paginate_options</code> + </li> + + <li class="never" data-hits="" data-linenumber="78"> + + + <code class="ruby"> # eg.</code> + </li> + + <li class="never" data-hits="" data-linenumber="79"> + + + <code class="ruby"> #</code> + </li> + + <li class="never" data-hits="" data-linenumber="80"> + + + <code class="ruby"> # Class MyController &lt; Admin::ResourceController</code> + </li> + + <li class="never" data-hits="" data-linenumber="81"> + + + <code class="ruby"> # paginate_models :per_page =&gt; 100</code> + </li> + + <li class="never" data-hits="" data-linenumber="82"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="83"> + <span class="hits">1</span> + + <code class="ruby"> def self.paginate_models(options={})</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="84"> + <span class="hits">2</span> + + <code class="ruby"> @@paginated = true</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="85"> + <span class="hits">2</span> + + <code class="ruby"> @@will_paginate_options = options.slice(:class, :previous_label, :next_label, :inner_window, :outer_window, :separator, :container).merge(:param_name =&gt; :p)</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="86"> + <span class="hits">2</span> + + <code class="ruby"> @@default_per_page = options[:per_page]</code> + </li> + + <li class="never" data-hits="" data-linenumber="87"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="88"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="89"> + + + <code class="ruby"> # returns a hash of options that can be passed to will_paginate</code> + </li> + + <li class="never" data-hits="" data-linenumber="90"> + + + <code class="ruby"> # the @pagination_for@ helper method calls @will_paginate_options@ unless other options are supplied.</code> + </li> + + <li class="never" data-hits="" data-linenumber="91"> + + + <code class="ruby"> #</code> + </li> + + <li class="never" data-hits="" data-linenumber="92"> + + + <code class="ruby"> # pagination_for(@events)</code> + </li> + + <li class="never" data-hits="" data-linenumber="93"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="94"> + <span class="hits">1</span> + + <code class="ruby"> def will_paginate_options</code> + </li> + + <li class="covered" data-hits="8" data-linenumber="95"> + <span class="hits">8</span> + + <code class="ruby"> self.class.will_paginate_options || {}</code> + </li> + + <li class="never" data-hits="" data-linenumber="96"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="97"> + <span class="hits">1</span> + + <code class="ruby"> helper_method :will_paginate_options</code> + </li> + + <li class="never" data-hits="" data-linenumber="98"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="99"> + + + <code class="ruby"> # a convenience method that returns true if paginate_models has been called on this controller class</code> + </li> + + <li class="never" data-hits="" data-linenumber="100"> + + + <code class="ruby"> # and can be used to make display decisions in controller and view</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="101"> + <span class="hits">1</span> + + <code class="ruby"> def paginated?</code> + </li> + + <li class="covered" data-hits="38" data-linenumber="102"> + <span class="hits">38</span> + + <code class="ruby"> self.class.paginated == true &amp;&amp; params[:pp] != &#39;all&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="103"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="104"> + <span class="hits">1</span> + + <code class="ruby"> helper_method :paginated?</code> + </li> + + <li class="never" data-hits="" data-linenumber="105"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="106"> + + + <code class="ruby"> # return a hash of page and per_page that can be used to build a will_paginate collection</code> + </li> + + <li class="never" data-hits="" data-linenumber="107"> + + + <code class="ruby"> # the per_page figure can be set in several ways:</code> + </li> + + <li class="never" data-hits="" data-linenumber="108"> + + + <code class="ruby"> # request parameter &gt; declared by paginate_models &gt; default set in config entry @admin.pagination.per_page@ &gt; overall default of 50</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="109"> + <span class="hits">1</span> + + <code class="ruby"> def pagination_parameters</code> + </li> + + <li class="covered" data-hits="37" data-linenumber="110"> + <span class="hits">37</span> + + <code class="ruby"> pp = params[:pp] || TrustyCms.config[&#39;admin.pagination.per_page&#39;]</code> + </li> + + <li class="covered" data-hits="37" data-linenumber="111"> + <span class="hits">37</span> + + <code class="ruby"> pp = (self.class.default_per_page || 50) if pp.blank?</code> + </li> + + <li class="never" data-hits="" data-linenumber="112"> + + + <code class="ruby"> {</code> + </li> + + <li class="covered" data-hits="37" data-linenumber="113"> + <span class="hits">37</span> + + <code class="ruby"> :page =&gt; (params[:p] || 1).to_i,</code> + </li> + + <li class="never" data-hits="" data-linenumber="114"> + + + <code class="ruby"> :per_page =&gt; pp.to_i</code> + </li> + + <li class="covered" data-hits="37" data-linenumber="115"> + <span class="hits">37</span> + + <code class="ruby"> }</code> + </li> + + <li class="never" data-hits="" data-linenumber="116"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="117"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="118"> + <span class="hits">1</span> + + <code class="ruby"> protected</code> + </li> + + <li class="never" data-hits="" data-linenumber="119"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="120"> + <span class="hits">1</span> + + <code class="ruby"> def rescue_action(exception)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="121"> + + + <code class="ruby"> case exception</code> + </li> + + <li class="never" data-hits="" data-linenumber="122"> + + + <code class="ruby"> when ActiveRecord::RecordInvalid</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="123"> + + + <code class="ruby"> response_for :invalid</code> + </li> + + <li class="never" data-hits="" data-linenumber="124"> + + + <code class="ruby"> when ActiveRecord::StaleObjectError</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="125"> + + + <code class="ruby"> response_for :stale</code> + </li> + + <li class="never" data-hits="" data-linenumber="126"> + + + <code class="ruby"> when ActiveRecord::RecordNotFound</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="127"> + + + <code class="ruby"> response_for :not_found</code> + </li> + + <li class="never" data-hits="" data-linenumber="128"> + + + <code class="ruby"> else</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="129"> + + + <code class="ruby"> super</code> + </li> + + <li class="never" data-hits="" data-linenumber="130"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="131"> + + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="28"> + <li class="never" data-hits="" data-linenumber="132"> + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="133"> + <span class="hits">1</span> + + <code class="ruby"> def model_class</code> + </li> + + <li class="covered" data-hits="40" data-linenumber="134"> + <span class="hits">40</span> + + <code class="ruby"> self.class.model_class</code> + </li> + + <li class="never" data-hits="" data-linenumber="135"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="136"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="137"> + <span class="hits">1</span> + + <code class="ruby"> def model</code> + </li> + + <li class="covered" data-hits="25" data-linenumber="138"> + <span class="hits">25</span> + + <code class="ruby"> instance_variable_get(&quot;@#{model_symbol}&quot;) || load_model</code> + </li> + + <li class="never" data-hits="" data-linenumber="139"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="140"> + <span class="hits">1</span> + + <code class="ruby"> alias :current_object :model</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="141"> + <span class="hits">1</span> + + <code class="ruby"> def model=(object)</code> + </li> + + <li class="covered" data-hits="19" data-linenumber="142"> + <span class="hits">19</span> + + <code class="ruby"> instance_variable_set(&quot;@#{model_symbol}&quot;, object)</code> + </li> + + <li class="never" data-hits="" data-linenumber="143"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="144"> + <span class="hits">1</span> + + <code class="ruby"> def load_model</code> + </li> + + <li class="covered" data-hits="15" data-linenumber="145"> + <span class="hits">15</span> + + <code class="ruby"> self.model = if params[:id]</code> + </li> + + <li class="covered" data-hits="6" data-linenumber="146"> + <span class="hits">6</span> + + <code class="ruby"> model_class.find(params[:id])</code> + </li> + + <li class="never" data-hits="" data-linenumber="147"> + + + <code class="ruby"> else</code> + </li> + + <li class="covered" data-hits="9" data-linenumber="148"> + <span class="hits">9</span> + + <code class="ruby"> model_class.new()</code> + </li> + + <li class="never" data-hits="" data-linenumber="149"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="150"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="151"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="152"> + <span class="hits">1</span> + + <code class="ruby"> def models</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="153"> + + + <code class="ruby"> instance_variable_get(&quot;@#{plural_model_symbol}&quot;) || load_models</code> + </li> + + <li class="never" data-hits="" data-linenumber="154"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="155"> + <span class="hits">1</span> + + <code class="ruby"> alias :current_objects :models</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="156"> + <span class="hits">1</span> + + <code class="ruby"> def models=(objects)</code> + </li> + + <li class="covered" data-hits="33" data-linenumber="157"> + <span class="hits">33</span> + + <code class="ruby"> instance_variable_set(&quot;@#{plural_model_symbol}&quot;, objects)</code> + </li> + + <li class="never" data-hits="" data-linenumber="158"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="159"> + <span class="hits">1</span> + + <code class="ruby"> def load_models</code> + </li> + + <li class="covered" data-hits="33" data-linenumber="160"> + <span class="hits">33</span> + + <code class="ruby"> self.models = paginated? ? model_class.paginate(pagination_parameters) : model_class.all</code> + </li> + + <li class="never" data-hits="" data-linenumber="161"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="162"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="163"> + <span class="hits">1</span> + + <code class="ruby"> def model_name</code> + </li> + + <li class="covered" data-hits="81" data-linenumber="164"> + <span class="hits">81</span> + + <code class="ruby"> model_class.name</code> + </li> + + <li class="never" data-hits="" data-linenumber="165"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="166"> + <span class="hits">1</span> + + <code class="ruby"> def plural_model_name</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="167"> + + + <code class="ruby"> model_name.pluralize</code> + </li> + + <li class="never" data-hits="" data-linenumber="168"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="169"> + <span class="hits">1</span> + + <code class="ruby"> alias :models_name :plural_model_name</code> + </li> + + <li class="never" data-hits="" data-linenumber="170"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="171"> + <span class="hits">1</span> + + <code class="ruby"> def model_symbol</code> + </li> + + <li class="covered" data-hits="48" data-linenumber="172"> + <span class="hits">48</span> + + <code class="ruby"> model_name.underscore.intern</code> + </li> + + <li class="never" data-hits="" data-linenumber="173"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="174"> + <span class="hits">1</span> + + <code class="ruby"> def plural_model_symbol</code> + </li> + + <li class="covered" data-hits="33" data-linenumber="175"> + <span class="hits">33</span> + + <code class="ruby"> model_name.pluralize.underscore.intern</code> + </li> + + <li class="never" data-hits="" data-linenumber="176"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="177"> + <span class="hits">1</span> + + <code class="ruby"> alias :models_symbol :plural_model_symbol</code> + </li> + + <li class="never" data-hits="" data-linenumber="178"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="179"> + <span class="hits">1</span> + + <code class="ruby"> def humanized_model_name</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="180"> + + + <code class="ruby"> t(model_name.underscore.downcase)</code> + </li> + + <li class="never" data-hits="" data-linenumber="181"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="182"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="183"> + <span class="hits">1</span> + + <code class="ruby"> def continue_url(options)</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="184"> + <span class="hits">5</span> + + <code class="ruby"> options[:redirect_to] || (params[:continue] ? {:action =&gt; &#39;edit&#39;, :id =&gt; model.id} : index_page_for_model)</code> + </li> + + <li class="never" data-hits="" data-linenumber="185"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="186"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="187"> + <span class="hits">1</span> + + <code class="ruby"> def index_page_for_model</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="188"> + <span class="hits">5</span> + + <code class="ruby"> parts = {:action =&gt; &quot;index&quot;}</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="189"> + <span class="hits">5</span> + + <code class="ruby"> if paginated? &amp;&amp; model &amp;&amp; i = model_class.all.index(model)</code> + </li> + + <li class="covered" data-hits="3" data-linenumber="190"> + <span class="hits">3</span> + + <code class="ruby"> p = (i / pagination_parameters[:per_page].to_i) + 1</code> + </li> + + <li class="covered" data-hits="3" data-linenumber="191"> + <span class="hits">3</span> + + <code class="ruby"> parts[:p] = p if p &amp;&amp; p &gt; 1</code> + </li> + + <li class="never" data-hits="" data-linenumber="192"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="193"> + <span class="hits">5</span> + + <code class="ruby"> parts</code> + </li> + + <li class="never" data-hits="" data-linenumber="194"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="195"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="196"> + <span class="hits">1</span> + + <code class="ruby"> def edit_model_path</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="197"> + + + <code class="ruby"> method = &quot;edit_admin_#{model_name.underscore}_path&quot;</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="198"> + + + <code class="ruby"> send method.to_sym, params[:id]</code> + </li> + + <li class="never" data-hits="" data-linenumber="199"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="200"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="201"> + <span class="hits">1</span> + + <code class="ruby"> def announce_validation_errors</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="202"> + + + <code class="ruby"> flash.now[:error] = t(&quot;resource_controller.validation_errors&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="203"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="204"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="205"> + <span class="hits">1</span> + + <code class="ruby"> def announce_removed</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="206"> + + + <code class="ruby"> ActiveSupport::Deprecation.warn(&quot;announce_removed is no longer encouraged in TrustyCms 0.9.x.&quot;, caller)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="207"> + + + <code class="ruby"> flash[:notice] = t(&quot;resource_controller.removed&quot;, :humanized_model_name =&gt; humanized_model_name)</code> + </li> + + <li class="never" data-hits="" data-linenumber="208"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="209"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="210"> + <span class="hits">1</span> + + <code class="ruby"> def announce_not_found</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="211"> + + + <code class="ruby"> flash[:notice] = t(&quot;resource_controller.not_found&quot;, :humanized_model_name =&gt; humanized_model_name)</code> + </li> + + <li class="never" data-hits="" data-linenumber="212"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="213"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="214"> + <span class="hits">1</span> + + <code class="ruby"> def announce_update_conflict</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="215"> + + + <code class="ruby"> flash.now[:error] = t(&quot;resource_controller.update_conflict&quot;, :humanized_model_name =&gt; humanized_model_name)</code> + </li> + + <li class="never" data-hits="" data-linenumber="216"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="217"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="218"> + <span class="hits">1</span> + + <code class="ruby"> def clear_model_cache</code> + </li> + + <li class="covered" data-hits="6" data-linenumber="219"> + <span class="hits">6</span> + + <code class="ruby"> Rails.cache.clear</code> + </li> + + <li class="never" data-hits="" data-linenumber="220"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="221"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="222"> + <span class="hits">1</span> + + <code class="ruby"> def format_symbol</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="223"> + + + <code class="ruby"> format.to_sym</code> + </li> + + <li class="never" data-hits="" data-linenumber="224"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="225"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="226"> + <span class="hits">1</span> + + <code class="ruby"> def format</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="227"> + + + <code class="ruby"> params[:format] || &#39;html&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="228"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="229"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="230"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="231"> + + + <code class="ruby"> # I would like to set this to expires_in(1.minute, :private =&gt; true) to allow for more fluid navigation</code> + </li> + + <li class="never" data-hits="" data-linenumber="232"> + + + <code class="ruby"> # but the annoyance for concurrent authors would be too great.</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="233"> + <span class="hits">1</span> + + <code class="ruby"> def never_cache</code> + </li> + + <li class="covered" data-hits="49" data-linenumber="234"> + <span class="hits">49</span> + + <code class="ruby"> expires_now</code> + </li> + + <li class="never" data-hits="" data-linenumber="235"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="236"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="237"> + + + <code class="ruby"> # Assist with user agents that cause improper content-negotiation</code> + </li> + + <li class="never" data-hits="" data-linenumber="238"> + + + <code class="ruby"> # warn &quot;Remove default HTML format, Accept header no longer used. (#{__FILE__}: #{__LINE__})&quot; if Rails.version !~ /^2\.1/</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="239"> + <span class="hits">1</span> + + <code class="ruby"> def populate_format</code> + </li> + + <li class="covered" data-hits="49" data-linenumber="240"> + <span class="hits">49</span> + + <code class="ruby"> params[:format] ||= &#39;html&#39; unless request.xhr?</code> + </li> + + <li class="never" data-hits="" data-linenumber="241"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="242"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="243"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="244"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="12f7b293396af1e7bb429783083e0914ad715492"> + <div class="header"> + <h3>app/controllers/admin/users_controller.rb</h3> + <h4><span class="red">45.45 %</span> covered</h4> + <div> + <b>22</b> relevant lines. + <span class="green"><b>10</b> lines covered</span> and + <span class="red"><b>12</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">class Admin::UsersController &lt; Admin::ResourceController</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="2"> + <span class="hits">1</span> + + <code class="ruby"> paginate_models</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby"> only_allow_access_to :index, :show, :new, :create, :edit, :update, :remove, :destroy,</code> + </li> + + <li class="never" data-hits="" data-linenumber="4"> + + + <code class="ruby"> :when =&gt; :admin,</code> + </li> + + <li class="never" data-hits="" data-linenumber="5"> + + + <code class="ruby"> :denied_url =&gt; { :controller =&gt; &#39;pages&#39;, :action =&gt; &#39;index&#39; },</code> + </li> + + <li class="never" data-hits="" data-linenumber="6"> + + + <code class="ruby"> :denied_message =&gt; &#39;You must have administrative privileges to perform this action.&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="7"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="8"> + <span class="hits">1</span> + + <code class="ruby"> before_filter :ensure_deletable, :only =&gt; [:remove, :destroy]</code> + </li> + + <li class="never" data-hits="" data-linenumber="9"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="10"> + <span class="hits">1</span> + + <code class="ruby"> def show</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="11"> + + + <code class="ruby"> redirect_to edit_admin_user_path(params[:id])</code> + </li> + + <li class="never" data-hits="" data-linenumber="12"> + + <code class="ruby"> end</code> </li> + <li class="never" data-hits="" data-linenumber="13"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="14"> + <span class="hits">1</span> + + <code class="ruby"> def update</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="15"> + + + <code class="ruby"> user_params = params[model_symbol]</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="16"> + + + <code class="ruby"> if user_params &amp;&amp; user_params[&#39;admin&#39;] == false &amp;&amp; model == current_user</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="17"> + + + <code class="ruby"> user_params.delete(&#39;admin&#39;)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="18"> + + + <code class="ruby"> annouce_cannot_remove_self_from_admin_role</code> + </li> + + <li class="never" data-hits="" data-linenumber="19"> + + + <code class="ruby"> end</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="20"> + + + <code class="ruby"> model.update_attributes!(user_params)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="21"> + + + <code class="ruby"> response_for :update</code> + </li> + + <li class="never" data-hits="" data-linenumber="22"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="23"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="24"> + <span class="hits">1</span> + + <code class="ruby"> def ensure_deletable</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="25"> + + + <code class="ruby"> if current_user.id.to_s == params[:id].to_s</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="26"> + + + <code class="ruby"> announce_cannot_delete_self</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="27"> + + + <code class="ruby"> redirect_to admin_users_path</code> + </li> + + <li class="never" data-hits="" data-linenumber="28"> + + + <code class="ruby"> end</code> + </li> + <li class="never" data-hits="" data-linenumber="29"> + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="30"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="31"> + <span class="hits">1</span> + + <code class="ruby"> private</code> + </li> + + <li class="never" data-hits="" data-linenumber="32"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="33"> + <span class="hits">1</span> + + <code class="ruby"> def announce_cannot_delete_self</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="34"> + + + <code class="ruby"> flash[:error] = t(&#39;users_controller.cannot_delete_self&#39;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="35"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="36"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="37"> + <span class="hits">1</span> + + <code class="ruby"> def annouce_cannot_remove_self_from_admin_role</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="38"> + + + <code class="ruby"> flash[:error] = &#39;You cannot remove yourself from the admin role.&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="39"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="40"> + + <code class="ruby">end</code> </li> </ol> </pre> </div> + <div class="source_table" id="0548274635e28f0ade382b1fa914b469704b942f"> + <div class="header"> + <h3>app/controllers/admin/welcome_controller.rb</h3> + <h4><span class="green">93.33 %</span> covered</h4> + <div> + <b>30</b> relevant lines. + <span class="green"><b>28</b> lines covered</span> and + <span class="red"><b>2</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">class Admin::WelcomeController &lt; ApplicationController</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="2"> + <span class="hits">1</span> + + <code class="ruby"> no_login_required</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby"> before_filter :never_cache</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="4"> + <span class="hits">1</span> + + <code class="ruby"> skip_before_filter :verify_authenticity_token</code> + </li> + + <li class="never" data-hits="" data-linenumber="5"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="6"> + <span class="hits">1</span> + + <code class="ruby"> def index</code> + </li> + + <li class="covered" data-hits="23" data-linenumber="7"> + <span class="hits">23</span> + + <code class="ruby"> redirect_to admin_pages_path</code> + </li> + + <li class="never" data-hits="" data-linenumber="8"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="9"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="10"> + <span class="hits">1</span> + + <code class="ruby"> def login</code> + </li> + + <li class="covered" data-hits="45" data-linenumber="11"> + <span class="hits">45</span> + + <code class="ruby"> if request.post?</code> + </li> + + <li class="covered" data-hits="21" data-linenumber="12"> + <span class="hits">21</span> + + <code class="ruby"> @username_or_email = params[:username_or_email]</code> + </li> + + <li class="covered" data-hits="21" data-linenumber="13"> + <span class="hits">21</span> + + <code class="ruby"> password = params[:password]</code> + </li> + + <li class="covered" data-hits="21" data-linenumber="14"> + <span class="hits">21</span> + + <code class="ruby"> announce_invalid_user unless self.current_user = User.authenticate(@username_or_email, password)</code> + </li> + + <li class="never" data-hits="" data-linenumber="15"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="45" data-linenumber="16"> + <span class="hits">45</span> + + <code class="ruby"> if current_user</code> + </li> + + <li class="covered" data-hits="19" data-linenumber="17"> + <span class="hits">19</span> + + <code class="ruby"> if params[:remember_me]</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="18"> + + + <code class="ruby"> current_user.remember_me</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="19"> + + + <code class="ruby"> set_session_cookie</code> + </li> + + <li class="never" data-hits="" data-linenumber="20"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="19" data-linenumber="21"> + <span class="hits">19</span> + + <code class="ruby"> redirect_to(session[:return_to] || welcome_path)</code> + </li> + + <li class="covered" data-hits="19" data-linenumber="22"> + <span class="hits">19</span> + + <code class="ruby"> session[:return_to] = nil</code> + </li> + + <li class="never" data-hits="" data-linenumber="23"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="24"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="25"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="26"> + <span class="hits">1</span> + + <code class="ruby"> def logout</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="27"> + <span class="hits">1</span> + + <code class="ruby"> request.cookies[:session_token] = { :expires =&gt; 1.day.ago.utc }</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="28"> + <span class="hits">1</span> + + <code class="ruby"> self.current_user.forget_me if self.current_user</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="29"> + <span class="hits">1</span> + + <code class="ruby"> self.current_user = nil</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="30"> + <span class="hits">1</span> + + <code class="ruby"> announce_logged_out</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="31"> + <span class="hits">1</span> + + <code class="ruby"> redirect_to login_path</code> + </li> + + <li class="never" data-hits="" data-linenumber="32"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="33"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="34"> + <span class="hits">1</span> + + <code class="ruby"> private</code> + </li> + + <li class="never" data-hits="" data-linenumber="35"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="36"> + <span class="hits">1</span> + + <code class="ruby"> def never_cache</code> + </li> + + <li class="covered" data-hits="69" data-linenumber="37"> + <span class="hits">69</span> + + <code class="ruby"> expires_now</code> + </li> + + <li class="never" data-hits="" data-linenumber="38"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="39"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="40"> + <span class="hits">1</span> + + <code class="ruby"> def announce_logged_out</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="41"> + <span class="hits">1</span> + + <code class="ruby"> flash[:notice] = t(&#39;welcome_controller.logged_out&#39;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="42"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="43"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="44"> + <span class="hits">1</span> + + <code class="ruby"> def announce_invalid_user</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="45"> + <span class="hits">2</span> + + <code class="ruby"> flash.now[:error] = t(&#39;welcome_controller.invalid_user&#39;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="46"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="47"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="48"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + <div class="source_table" id="24df5092852a2bbf884d9a6bfe4815b19056ea68"> <div class="header"> <h3>app/controllers/application_controller.rb</h3> - <h4><span class="red">64.15 %</span> covered</h4> + <h4><span class="red">77.36 %</span> covered</h4> <div> <b>53</b> relevant lines. - <span class="green"><b>34</b> lines covered</span> and - <span class="red"><b>19</b> lines missed.</span> + <span class="green"><b>41</b> lines covered</span> and + <span class="red"><b>12</b> lines missed.</span> </div> </div> <pre> <ol> @@ -552,18 +4146,18 @@ <span class="hits">1</span> <code class="ruby"> def initialize</code> </li> - <li class="covered" data-hits="17" data-linenumber="23"> - <span class="hits">17</span> + <li class="covered" data-hits="361" data-linenumber="23"> + <span class="hits">361</span> <code class="ruby"> super</code> </li> - <li class="covered" data-hits="17" data-linenumber="24"> - <span class="hits">17</span> + <li class="covered" data-hits="361" data-linenumber="24"> + <span class="hits">361</span> <code class="ruby"> @trusty_config = TrustyCms::Config</code> </li> <li class="never" data-hits="" data-linenumber="25"> @@ -582,85 +4176,85 @@ <span class="hits">1</span> <code class="ruby"> def template_name</code> </li> - <li class="missed" data-hits="0" data-linenumber="28"> + <li class="covered" data-hits="57" data-linenumber="28"> + <span class="hits">57</span> - <code class="ruby"> case self.action_name</code> </li> <li class="never" data-hits="" data-linenumber="29"> <code class="ruby"> when &#39;index&#39;</code> </li> - <li class="missed" data-hits="0" data-linenumber="30"> + <li class="covered" data-hits="34" data-linenumber="30"> + <span class="hits">34</span> - <code class="ruby"> &#39;index&#39;</code> </li> <li class="never" data-hits="" data-linenumber="31"> <code class="ruby"> when &#39;new&#39;,&#39;create&#39;</code> </li> - <li class="missed" data-hits="0" data-linenumber="32"> + <li class="covered" data-hits="7" data-linenumber="32"> + <span class="hits">7</span> - <code class="ruby"> &#39;new&#39;</code> </li> <li class="never" data-hits="" data-linenumber="33"> <code class="ruby"> when &#39;show&#39;</code> </li> - <li class="missed" data-hits="0" data-linenumber="34"> + <li class="covered" data-hits="6" data-linenumber="34"> + <span class="hits">6</span> - <code class="ruby"> &#39;show&#39;</code> </li> <li class="never" data-hits="" data-linenumber="35"> <code class="ruby"> when &#39;edit&#39;, &#39;update&#39;</code> </li> - <li class="missed" data-hits="0" data-linenumber="36"> + <li class="covered" data-hits="5" data-linenumber="36"> + <span class="hits">5</span> - <code class="ruby"> &#39;edit&#39;</code> </li> <li class="never" data-hits="" data-linenumber="37"> <code class="ruby"> when &#39;remove&#39;, &#39;destroy&#39;</code> </li> - <li class="missed" data-hits="0" data-linenumber="38"> + <li class="covered" data-hits="4" data-linenumber="38"> + <span class="hits">4</span> - <code class="ruby"> &#39;remove&#39;</code> </li> <li class="never" data-hits="" data-linenumber="39"> <code class="ruby"> else</code> </li> - <li class="missed" data-hits="0" data-linenumber="40"> + <li class="covered" data-hits="1" data-linenumber="40"> + <span class="hits">1</span> - <code class="ruby"> self.action_name</code> </li> <li class="never" data-hits="" data-linenumber="41"> @@ -750,12 +4344,12 @@ <span class="hits">1</span> <code class="ruby"> def set_current_user</code> </li> - <li class="covered" data-hits="9" data-linenumber="56"> - <span class="hits">9</span> + <li class="covered" data-hits="151" data-linenumber="56"> + <span class="hits">151</span> <code class="ruby"> UserActionObserver.instance.current_user = current_user</code> </li> <li class="never" data-hits="" data-linenumber="57"> @@ -774,12 +4368,12 @@ <span class="hits">1</span> <code class="ruby"> def set_user_locale</code> </li> - <li class="covered" data-hits="9" data-linenumber="60"> - <span class="hits">9</span> + <li class="covered" data-hits="151" data-linenumber="60"> + <span class="hits">151</span> <code class="ruby"> I18n.locale = current_user &amp;&amp; !current_user.locale.blank? ? current_user.locale : TrustyCms::Config[&#39;default_locale&#39;]</code> </li> <li class="never" data-hits="" data-linenumber="61"> @@ -798,12 +4392,12 @@ <span class="hits">1</span> <code class="ruby"> def set_timezone</code> </li> - <li class="covered" data-hits="9" data-linenumber="64"> - <span class="hits">9</span> + <li class="covered" data-hits="153" data-linenumber="64"> + <span class="hits">153</span> <code class="ruby"> Time.zone = TrustyCms::Config[&#39;local.timezone&#39;] != nil &amp;&amp; TrustyCms::Config[&#39;local.timezone&#39;].empty? ? Time.zone_default : TrustyCms::Config[&#39;local.timezone&#39;]</code> </li> <li class="never" data-hits="" data-linenumber="65"> @@ -822,24 +4416,24 @@ <span class="hits">1</span> <code class="ruby"> def set_javascripts_and_stylesheets</code> </li> - <li class="covered" data-hits="9" data-linenumber="68"> - <span class="hits">9</span> + <li class="covered" data-hits="152" data-linenumber="68"> + <span class="hits">152</span> <code class="ruby"> @stylesheets ||= []</code> </li> - <li class="covered" data-hits="9" data-linenumber="69"> - <span class="hits">9</span> + <li class="covered" data-hits="152" data-linenumber="69"> + <span class="hits">152</span> <code class="ruby"> @stylesheets.concat %w(admin/main)</code> </li> - <li class="covered" data-hits="9" data-linenumber="70"> - <span class="hits">9</span> + <li class="covered" data-hits="152" data-linenumber="70"> + <span class="hits">152</span> <code class="ruby"> @javascripts ||= []</code> </li> <li class="never" data-hits="" data-linenumber="71"> @@ -858,18 +4452,18 @@ <span class="hits">1</span> <code class="ruby"> def set_standard_body_style</code> </li> - <li class="covered" data-hits="9" data-linenumber="74"> - <span class="hits">9</span> + <li class="covered" data-hits="15" data-linenumber="74"> + <span class="hits">15</span> <code class="ruby"> @body_classes ||= []</code> </li> - <li class="covered" data-hits="9" data-linenumber="75"> - <span class="hits">9</span> + <li class="covered" data-hits="15" data-linenumber="75"> + <span class="hits">15</span> <code class="ruby"> @body_classes.concat(%w(reversed))</code> </li> <li class="never" data-hits="" data-linenumber="76"> @@ -1042,18 +4636,2424 @@ </ol> </pre> </div> + <div class="source_table" id="41a9856bd8ee68d9d8cbdb50d567363cd4411956"> + <div class="header"> + <h3>app/controllers/site_controller.rb</h3> + <h4><span class="red">52.46 %</span> covered</h4> + <div> + <b>61</b> relevant lines. + <span class="green"><b>32</b> lines covered</span> and + <span class="red"><b>29</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">require &#39;trusty_cms/pagination/controller&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="2"> + <span class="hits">1</span> + + <code class="ruby">class SiteController &lt; ApplicationController</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby"> include TrustyCms::Pagination::Controller</code> + </li> + + <li class="never" data-hits="" data-linenumber="4"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="5"> + <span class="hits">1</span> + + <code class="ruby"> skip_filter :verify_authenticity_token</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="6"> + <span class="hits">1</span> + + <code class="ruby"> no_login_required</code> + </li> + + <li class="never" data-hits="" data-linenumber="7"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="8"> + <span class="hits">1</span> + + <code class="ruby"> def self.cache_timeout=(val)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="9"> + + + <code class="ruby"> TrustyCms::PageResponseCacheDirector.cache_timeout=(val)</code> + </li> + + <li class="never" data-hits="" data-linenumber="10"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="11"> + <span class="hits">1</span> + + <code class="ruby"> def self.cache_timeout</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="12"> + + + <code class="ruby"> TrustyCms::PageResponseCacheDirector.cache_timeout</code> + </li> + + <li class="never" data-hits="" data-linenumber="13"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="14"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="15"> + <span class="hits">1</span> + + <code class="ruby"> def show_page</code> + </li> + + <li class="covered" data-hits="24" data-linenumber="16"> + <span class="hits">24</span> + + <code class="ruby"> url = params[:url]</code> + </li> + + <li class="covered" data-hits="24" data-linenumber="17"> + <span class="hits">24</span> + + <code class="ruby"> if Array === url</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="18"> + + + <code class="ruby"> url = url.join(&#39;/&#39;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="19"> + + + <code class="ruby"> else</code> + </li> + + <li class="covered" data-hits="24" data-linenumber="20"> + <span class="hits">24</span> + + <code class="ruby"> url = url.to_s</code> + </li> + + <li class="never" data-hits="" data-linenumber="21"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="24" data-linenumber="22"> + <span class="hits">24</span> + + <code class="ruby"> if @page = find_page(url)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="23"> + + + <code class="ruby"> batch_page_status_refresh if (url == &quot;/&quot; || url == &quot;&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="24"> + + + <code class="ruby"> # This is a bit of a hack to get Vanity URL pages working in another extension</code> + </li> + + <li class="never" data-hits="" data-linenumber="25"> + + + <code class="ruby"> # In Rails 2, redirect_to halted execution, so process_page could be aliased and</code> + </li> + + <li class="never" data-hits="" data-linenumber="26"> + + + <code class="ruby"> # a redirect could be used. This no longer works. There&#39;s a better fix for this,</code> + </li> + + <li class="never" data-hits="" data-linenumber="27"> + + + <code class="ruby"> # but for now, anything that aliases process_page can return false if it&#39;s rendering</code> + </li> + + <li class="never" data-hits="" data-linenumber="28"> + + + <code class="ruby"> # or redirecting on its own.</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="29"> + + + <code class="ruby"> return unless process_page(@page)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="30"> + + + <code class="ruby"> set_cache_control</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="31"> + + + <code class="ruby"> @performed_render ||= true</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="32"> + + + <code class="ruby"> render layout: false</code> + </li> + + <li class="never" data-hits="" data-linenumber="33"> + + + <code class="ruby"> else</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="34"> + <span class="hits">1</span> + + <code class="ruby"> render :template =&gt; &#39;site/not_found&#39;, :status =&gt; 404, layout: false</code> + </li> + + <li class="never" data-hits="" data-linenumber="35"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="36"> + + + <code class="ruby"> rescue Page::MissingRootPageError</code> + </li> + + <li class="covered" data-hits="23" data-linenumber="37"> + <span class="hits">23</span> + + <code class="ruby"> redirect_to welcome_path</code> + </li> + + <li class="never" data-hits="" data-linenumber="38"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="39"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="40"> + <span class="hits">1</span> + + <code class="ruby"> def cacheable_request?</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="41"> + + + <code class="ruby"> (request.head? || request.get?) &amp;&amp; live?</code> + </li> + + <li class="never" data-hits="" data-linenumber="42"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="43"> + <span class="hits">1</span> + + <code class="ruby"> hide_action :cacheable_request?</code> + </li> + + <li class="never" data-hits="" data-linenumber="44"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="45"> + <span class="hits">1</span> + + <code class="ruby"> def set_expiry(time, options={})</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="46"> + + + <code class="ruby"> expires_in time, options</code> + </li> + + <li class="never" data-hits="" data-linenumber="47"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="48"> + <span class="hits">1</span> + + <code class="ruby"> hide_action :set_expiry</code> + </li> + + <li class="never" data-hits="" data-linenumber="49"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="50"> + <span class="hits">1</span> + + <code class="ruby"> def set_etag(val)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="51"> + + + <code class="ruby"> headers[&#39;ETag&#39;] = val</code> + </li> + + <li class="never" data-hits="" data-linenumber="52"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="53"> + <span class="hits">1</span> + + <code class="ruby"> hide_action :set_expiry</code> + </li> + + <li class="never" data-hits="" data-linenumber="54"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="55"> + <span class="hits">1</span> + + <code class="ruby"> private</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="56"> + <span class="hits">1</span> + + <code class="ruby"> def batch_page_status_refresh</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="57"> + + + <code class="ruby"> @changed_pages = []</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="58"> + + + <code class="ruby"> @pages = Page.where({:status_id =&gt; Status[:scheduled].id})</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="59"> + + + <code class="ruby"> @pages.each do |page|</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="60"> + + + <code class="ruby"> if page.published_at &lt;= Time.now</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="61"> + + + <code class="ruby"> page.status_id = Status[:published].id</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="62"> + + + <code class="ruby"> page.save</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="63"> + + + <code class="ruby"> @changed_pages &lt;&lt; page.id</code> + </li> + + <li class="never" data-hits="" data-linenumber="64"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="65"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="66"> + + + <code class="ruby"></code> + </li> + + <li class="missed" data-hits="0" data-linenumber="67"> + + + <code class="ruby"> expires_in nil, :private=&gt;true, &quot;no-cache&quot; =&gt; true if @changed_pages.length &gt; 0</code> + </li> + + <li class="never" data-hits="" data-linenumber="68"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="69"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="70"> + <span class="hits">1</span> + + <code class="ruby"> def set_cache_control</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="71"> + + + <code class="ruby"> response_cache_director(@page).set_cache_control</code> + </li> + + <li class="never" data-hits="" data-linenumber="72"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="73"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="74"> + <span class="hits">1</span> + + <code class="ruby"> def response_cache_director(page)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="75"> + + + <code class="ruby"> klass_name = &quot;TrustyCms::#{page.class}ResponseCacheDirector&quot;</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="76"> + + + <code class="ruby"> begin</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="77"> + + + <code class="ruby"> klass = klass_name.constantize</code> + </li> + + <li class="never" data-hits="" data-linenumber="78"> + + + <code class="ruby"> rescue NameError, LoadError</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="79"> + + + <code class="ruby"> director_klass = &quot;TrustyCms::PageResponseCacheDirector&quot;</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="80"> + + + <code class="ruby"> eval(%Q{class #{klass_name} &lt; #{director_klass}; end}, TOPLEVEL_BINDING)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="81"> + + + <code class="ruby"> klass = director_klass.constantize</code> + </li> + + <li class="never" data-hits="" data-linenumber="82"> + + + <code class="ruby"> end</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="83"> + + + <code class="ruby"> klass.new(page, self)</code> + </li> + + <li class="never" data-hits="" data-linenumber="84"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="85"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="86"> + <span class="hits">1</span> + + <code class="ruby"> def find_page(url)</code> + </li> + + <li class="covered" data-hits="24" data-linenumber="87"> + <span class="hits">24</span> + + <code class="ruby"> found = Page.find_by_path(url, live?)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="88"> + <span class="hits">1</span> + + <code class="ruby"> found if found and (found.published? or dev?)</code> + </li> + + <li class="never" data-hits="" data-linenumber="89"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="90"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="91"> + <span class="hits">1</span> + + <code class="ruby"> def process_page(page)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="92"> + + + <code class="ruby"> page.pagination_parameters = pagination_parameters</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="93"> + + + <code class="ruby"> page.process(request, response)</code> + </li> + + <li class="never" data-hits="" data-linenumber="94"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="95"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="96"> + <span class="hits">1</span> + + <code class="ruby"> def dev?</code> + </li> + + <li class="covered" data-hits="24" data-linenumber="97"> + <span class="hits">24</span> + + <code class="ruby"> request.host == @trusty_config[&#39;dev.host&#39;] || request.host =~ /^dev\./</code> + </li> + + <li class="never" data-hits="" data-linenumber="98"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="99"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="100"> + <span class="hits">1</span> + + <code class="ruby"> def live?</code> + </li> + + <li class="covered" data-hits="24" data-linenumber="101"> + <span class="hits">24</span> + + <code class="ruby"> not dev?</code> + </li> + + <li class="never" data-hits="" data-linenumber="102"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="103"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="9b973efca458788c05c2f1159ddf02033a2951e2"> + <div class="header"> + <h3>app/helpers/admin/configuration_helper.rb</h3> + <h4><span class="green">90.48 %</span> covered</h4> + <div> + <b>42</b> relevant lines. + <span class="green"><b>38</b> lines covered</span> and + <span class="red"><b>4</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">module Admin::ConfigurationHelper</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby"> # Defines helper methods for use in the admin interface when displaying or editing configuration.</code> + </li> + + <li class="never" data-hits="" data-linenumber="3"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="4"> + + + <code class="ruby"> # Renders the setting as label and value:</code> + </li> + + <li class="never" data-hits="" data-linenumber="5"> + + + <code class="ruby"> #</code> + </li> + + <li class="never" data-hits="" data-linenumber="6"> + + + <code class="ruby"> # show_config(&quot;admin.title&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="7"> + + + <code class="ruby"> # =&gt; &lt;label for=&quot;admin_title&quot;&gt;Admin title&lt;label&gt;&lt;span id=&quot;admin_title&quot;&gt;TrustyCms CMS&lt;/span&gt;</code> + </li> + + <li class="never" data-hits="" data-linenumber="8"> + + + <code class="ruby"> #</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="9"> + <span class="hits">1</span> + + <code class="ruby"> def show_config(key, options={})</code> + </li> + + <li class="covered" data-hits="50" data-linenumber="10"> + <span class="hits">50</span> + + <code class="ruby"> setting = setting_for(key)</code> + </li> + + <li class="covered" data-hits="50" data-linenumber="11"> + <span class="hits">50</span> + + <code class="ruby"> setting.valid?</code> + </li> + + <li class="covered" data-hits="50" data-linenumber="12"> + <span class="hits">50</span> + + <code class="ruby"> domkey = key.gsub(/\W/, &#39;_&#39;)</code> + </li> + + <li class="covered" data-hits="50" data-linenumber="13"> + <span class="hits">50</span> + + <code class="ruby"> html = &quot;&quot;</code> + </li> + + <li class="covered" data-hits="50" data-linenumber="14"> + <span class="hits">50</span> + + <code class="ruby"> html &lt;&lt; content_tag(:label, t(&quot;trusty_config.#{key}&quot;).titlecase, :for =&gt; domkey)</code> + </li> + + <li class="covered" data-hits="50" data-linenumber="15"> + <span class="hits">50</span> + + <code class="ruby"> if setting.boolean?</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="16"> + <span class="hits">5</span> + + <code class="ruby"> value = setting.checked? ? t(&#39;yes&#39;) : t(&#39;no&#39;)</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="17"> + <span class="hits">5</span> + + <code class="ruby"> html &lt;&lt; content_tag(:span, value, :id =&gt; domkey, :class =&gt; &quot;#{value} #{options[:class]}&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="18"> + + + <code class="ruby"> else</code> + </li> + + <li class="covered" data-hits="45" data-linenumber="19"> + <span class="hits">45</span> + + <code class="ruby"> value = setting.selected_value || setting.value</code> + </li> + + <li class="covered" data-hits="45" data-linenumber="20"> + <span class="hits">45</span> + + <code class="ruby"> html &lt;&lt; content_tag(:span, value, :id =&gt; domkey, :class =&gt; options[:class])</code> + </li> + + <li class="never" data-hits="" data-linenumber="21"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="50" data-linenumber="22"> + <span class="hits">50</span> + + <code class="ruby"> html &lt;&lt; content_tag(:span, &quot; #{t(&quot;units.#{setting.units}&quot;)}&quot;, :class =&gt; &#39;units&#39;) if setting.units</code> + </li> + + <li class="covered" data-hits="50" data-linenumber="23"> + <span class="hits">50</span> + + <code class="ruby"> html &lt;&lt; content_tag(:span, &quot; #{t(&#39;warning&#39;)}: #{[setting.errors.get(:value)].flatten.first}&quot;, :class =&gt; &#39;warning&#39;) if setting.errors.get(:value)</code> + </li> + + <li class="covered" data-hits="50" data-linenumber="24"> + <span class="hits">50</span> + + <code class="ruby"> Rails.logger.error(html)</code> + </li> + + <li class="covered" data-hits="50" data-linenumber="25"> + <span class="hits">50</span> + + <code class="ruby"> html.html_safe</code> + </li> + + <li class="never" data-hits="" data-linenumber="26"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="27"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="28"> + + + <code class="ruby"> # Renders the setting as label and appropriate input field:</code> + </li> + + <li class="never" data-hits="" data-linenumber="29"> + + + <code class="ruby"> #</code> + </li> + + <li class="never" data-hits="" data-linenumber="30"> + + + <code class="ruby"> # edit_setting(&quot;admin.title&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="31"> + + + <code class="ruby"> # =&gt; &lt;label for=&quot;admin_title&quot;&gt;Admin title&lt;label&gt;&lt;input type=&quot;text&quot; name=&quot;config[&#39;admin.title&#39;]&quot; id=&quot;admin_title&quot; value=&quot;TrustyCms CMS&quot; /&gt;</code> + </li> + + <li class="never" data-hits="" data-linenumber="32"> + + + <code class="ruby"> #</code> + </li> + + <li class="never" data-hits="" data-linenumber="33"> + + + <code class="ruby"> # edit_config(&quot;defaults.page.status&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="34"> + + + <code class="ruby"> # =&gt;</code> + </li> + + <li class="never" data-hits="" data-linenumber="35"> + + + <code class="ruby"> # &lt;label for=&quot;defaults_page_status&quot;&gt;Default page status&lt;label&gt;</code> + </li> + + <li class="never" data-hits="" data-linenumber="36"> + + + <code class="ruby"> # &lt;select type=&quot;text&quot; name=&quot;config[&#39;defaults.page.status&#39;]&quot; id=&quot;defaults_page_status&quot;&gt;</code> + </li> + + <li class="never" data-hits="" data-linenumber="37"> + + + <code class="ruby"> # &lt;option value=&quot;Draft&quot;&gt;Draft&lt;/option&gt;</code> + </li> + + <li class="never" data-hits="" data-linenumber="38"> + + + <code class="ruby"> # ...</code> + </li> + + <li class="never" data-hits="" data-linenumber="39"> + + + <code class="ruby"> # &lt;/select&gt;</code> + </li> + + <li class="never" data-hits="" data-linenumber="40"> + + + <code class="ruby"> #</code> + </li> + + <li class="never" data-hits="" data-linenumber="41"> + + + <code class="ruby"> # edit_setting(&quot;user.allow_password_reset?&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="42"> + + + <code class="ruby"> # =&gt; &lt;label for=&quot;user_allow_password_reset_&quot;&gt;Admin title&lt;label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;config[&#39;user.allow_password_reset?&#39;]&quot; id=&quot;user_allow_password_reset_&quot; value=&quot;1&quot; checked=&quot;checked&quot; /&gt;</code> + </li> + + <li class="never" data-hits="" data-linenumber="43"> + + + <code class="ruby"> #</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="44"> + <span class="hits">1</span> + + <code class="ruby"> def edit_config(key, options={})</code> + </li> + + <li class="covered" data-hits="10" data-linenumber="45"> + <span class="hits">10</span> + + <code class="ruby"> setting = setting_for(key)</code> + </li> + + <li class="covered" data-hits="10" data-linenumber="46"> + <span class="hits">10</span> + + <code class="ruby"> domkey = key.gsub(/\W/, &#39;_&#39;)</code> + </li> + + <li class="covered" data-hits="10" data-linenumber="47"> + <span class="hits">10</span> + + <code class="ruby"> name = &quot;trusty_config[#{key}]&quot;</code> + </li> + + <li class="covered" data-hits="10" data-linenumber="48"> + <span class="hits">10</span> + + <code class="ruby"> title = t(&quot;trusty_config.#{key}&quot;).titlecase</code> + </li> + + <li class="covered" data-hits="10" data-linenumber="49"> + <span class="hits">10</span> + + <code class="ruby"> title &lt;&lt; content_tag(:span, &quot; (#{t(&quot;units.#{setting.units}&quot;)})&quot;, :class =&gt; &#39;units&#39;) if setting.units</code> + </li> + + <li class="covered" data-hits="10" data-linenumber="50"> + <span class="hits">10</span> + + <code class="ruby"> value = params[key.to_sym].nil? ? setting.value : params[key.to_sym]</code> + </li> + + <li class="covered" data-hits="10" data-linenumber="51"> + <span class="hits">10</span> + + <code class="ruby"> html = &quot;&quot;</code> + </li> + + <li class="covered" data-hits="10" data-linenumber="52"> + <span class="hits">10</span> + + <code class="ruby"> if setting.boolean?</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="53"> + <span class="hits">1</span> + + <code class="ruby"> html &lt;&lt; hidden_field_tag(name, 0)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="54"> + <span class="hits">1</span> + + <code class="ruby"> html &lt;&lt; check_box_tag(name, 1, value, :class =&gt; &#39;setting&#39;, :id =&gt; domkey)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="55"> + <span class="hits">1</span> + + <code class="ruby"> html &lt;&lt; content_tag(:label, title.html_safe, :class =&gt; &#39;checkbox&#39;, :for =&gt; domkey)</code> + </li> + + <li class="never" data-hits="" data-linenumber="56"> + + + <code class="ruby"> elsif setting.selector?</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="57"> + <span class="hits">4</span> + + <code class="ruby"> html &lt;&lt; content_tag(:label, title.html_safe, :for =&gt; domkey)</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="58"> + <span class="hits">4</span> + + <code class="ruby"> html &lt;&lt; select_tag(name, options_for_select(setting.definition.selection, value), :class =&gt; &#39;setting&#39;, :id =&gt; domkey)</code> + </li> + + <li class="never" data-hits="" data-linenumber="59"> + + + <code class="ruby"> else</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="60"> + <span class="hits">5</span> + + <code class="ruby"> html &lt;&lt; content_tag(:label, title.html_safe, :for =&gt; domkey)</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="61"> + <span class="hits">5</span> + + <code class="ruby"> html &lt;&lt; text_field_tag(name, value, :class =&gt; &#39;textbox&#39;, :id =&gt; domkey)</code> + </li> + + <li class="never" data-hits="" data-linenumber="62"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="10" data-linenumber="63"> + <span class="hits">10</span> + + <code class="ruby"> if setting.errors[:value].present?</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="64"> + + + <code class="ruby"> html &lt;&lt; content_tag(:span, [setting.errors[:value]].flatten.first, :class =&gt; &#39;error&#39;)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="65"> + + + <code class="ruby"> html = content_tag(:span, html.html_safe, :class =&gt; &quot;error-with-field&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="66"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="10" data-linenumber="67"> + <span class="hits">10</span> + + <code class="ruby"> html.html_safe</code> + </li> + + <li class="never" data-hits="" data-linenumber="68"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="69"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="70"> + <span class="hits">1</span> + + <code class="ruby"> def setting_for(key)</code> + </li> + + <li class="covered" data-hits="60" data-linenumber="71"> + <span class="hits">60</span> + + <code class="ruby"> @trusty_config ||= {} # normally initialized in Admin::ConfigurationController</code> + </li> + + <li class="covered" data-hits="60" data-linenumber="72"> + <span class="hits">60</span> + + <code class="ruby"> @trusty_config[key] ||= TrustyCms.config.find_or_initialize_by(key: key)</code> + </li> + + <li class="never" data-hits="" data-linenumber="73"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="74"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="75"> + <span class="hits">1</span> + + <code class="ruby"> def definition_for(key)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="76"> + + + <code class="ruby"> if setting = setting_for(key)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="77"> + + + <code class="ruby"> setting.definition</code> + </li> + + <li class="never" data-hits="" data-linenumber="78"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="79"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="80"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="81"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="a60b971bc58b9cda32471f0b9507a73bde5812c2"> + <div class="header"> + <h3>app/helpers/admin/extensions_helper.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <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> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">module Admin::ExtensionsHelper</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="f1b71910ed03a14a4fc4cce2c151914e870c1588"> + <div class="header"> + <h3>app/helpers/admin/layouts_helper.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <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> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">module Admin::LayoutsHelper</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="3"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="352ca55a4f63d046b73dfeec822cb6b55487185d"> + <div class="header"> + <h3>app/helpers/admin/node_helper.rb</h3> + <h4><span class="red">60.71 %</span> covered</h4> + <div> + <b>56</b> relevant lines. + <span class="green"><b>34</b> lines covered</span> and + <span class="red"><b>22</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">module Admin::NodeHelper</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby"> def render_nodes(page, starting_index, parent_index = nil, simple = false)</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="4"> + <span class="hits">5</span> + + <code class="ruby"> @rendered_html = &quot;&quot;</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="5"> + <span class="hits">5</span> + + <code class="ruby"> render_node page, starting_index, parent_index, simple</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="6"> + <span class="hits">5</span> + + <code class="ruby"> @rendered_html</code> + </li> + + <li class="never" data-hits="" data-linenumber="7"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="8"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="9"> + <span class="hits">1</span> + + <code class="ruby"> def render_node(page, index, parent_index = nil, simple = false)</code> + </li> + + <li class="never" data-hits="" data-linenumber="10"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="5" data-linenumber="11"> + <span class="hits">5</span> + + <code class="ruby"> @current_node = prepare_page(page)</code> + </li> + + <li class="never" data-hits="" data-linenumber="12"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="5" data-linenumber="13"> + <span class="hits">5</span> + + <code class="ruby"> @rendered_html += (render :partial =&gt; &#39;admin/pages/node&#39;,</code> + </li> + + <li class="never" data-hits="" data-linenumber="14"> + + + <code class="ruby"> :locals =&gt; {level: index, index: index, parent_index: parent_index,</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="15"> + <span class="hits">5</span> + + <code class="ruby"> page: page, simple: simple, branch: (page.children.count &gt; 0) })</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="16"> + <span class="hits">5</span> + + <code class="ruby"> index</code> + </li> + + <li class="never" data-hits="" data-linenumber="17"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="18"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="19"> + <span class="hits">1</span> + + <code class="ruby"> def prepare_page(page)</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="20"> + <span class="hits">5</span> + + <code class="ruby"> page.extend MenuRenderer</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="21"> + <span class="hits">5</span> + + <code class="ruby"> page.view = self</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="22"> + <span class="hits">5</span> + + <code class="ruby"> if page.additional_menu_features?</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="23"> + + + <code class="ruby"> page.extend(*page.menu_renderer_modules)</code> + </li> + + <li class="never" data-hits="" data-linenumber="24"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="25"> + <span class="hits">5</span> + + <code class="ruby"> page</code> + </li> + + <li class="never" data-hits="" data-linenumber="26"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="27"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="28"> + <span class="hits">1</span> + + <code class="ruby"> def homepage</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="29"> + + + <code class="ruby"> @homepage ||= Page.find_by_parent_id(nil)</code> + </li> + + <li class="never" data-hits="" data-linenumber="30"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="31"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="32"> + <span class="hits">1</span> + + <code class="ruby"> def show_all?</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="33"> + + + <code class="ruby"> controller.action_name == &#39;remove&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="34"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="35"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="36"> + <span class="hits">1</span> + + <code class="ruby"> def expanded_rows</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="37"> + + + <code class="ruby"> unless @expanded_rows</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="38"> + + + <code class="ruby"> @expanded_rows = case</code> + </li> + + <li class="never" data-hits="" data-linenumber="39"> + + + <code class="ruby"> when rows = cookies[:expanded_rows]</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="40"> + + + <code class="ruby"> rows.split(&#39;,&#39;).map { |x| Integer(x) rescue nil }.compact</code> + </li> + + <li class="never" data-hits="" data-linenumber="41"> + + + <code class="ruby"> else</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="42"> + + + <code class="ruby"> []</code> + </li> + + <li class="never" data-hits="" data-linenumber="43"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="44"> + + + <code class="ruby"></code> + </li> + + <li class="missed" data-hits="0" data-linenumber="45"> + + + <code class="ruby"> if homepage and !@expanded_rows.include?(homepage.id)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="46"> + + + <code class="ruby"> @expanded_rows &lt;&lt; homepage.id</code> + </li> + + <li class="never" data-hits="" data-linenumber="47"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="48"> + + + <code class="ruby"> end</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="49"> + + + <code class="ruby"> @expanded_rows</code> + </li> + + <li class="never" data-hits="" data-linenumber="50"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="51"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="52"> + <span class="hits">1</span> + + <code class="ruby"> def expanded</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="53"> + + + <code class="ruby"> show_all? || expanded_rows.include?(@current_node.id)</code> + </li> + + <li class="never" data-hits="" data-linenumber="54"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="55"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="56"> + <span class="hits">1</span> + + <code class="ruby"> def padding_left(level)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="57"> + + + <code class="ruby"> (level * 23) + 9</code> + </li> + + <li class="never" data-hits="" data-linenumber="58"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="59"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="60"> + <span class="hits">1</span> + + <code class="ruby"> def children_class</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="61"> + + + <code class="ruby"> unless @current_node.children.empty?</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="62"> + + + <code class="ruby"> if expanded</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="63"> + + + <code class="ruby"> &quot; children_visible&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="64"> + + + <code class="ruby"> else</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="65"> + + + <code class="ruby"> &quot; children_hidden&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="66"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="67"> + + + <code class="ruby"> else</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="68"> + + + <code class="ruby"> &quot; no_children&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="69"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="70"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="71"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="72"> + <span class="hits">1</span> + + <code class="ruby"> def virtual_class</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="73"> + + + <code class="ruby"> @current_node.virtual? ? &quot; virtual&quot;: &quot;&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="74"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="75"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="76"> + <span class="hits">1</span> + + <code class="ruby"> def expander(level)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="77"> + + + <code class="ruby"> unless @current_node.children.empty? or level == 0</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="78"> + + + <code class="ruby"> image((expanded ? &quot;collapse&quot; : &quot;expand&quot;),</code> + </li> + + <li class="never" data-hits="" data-linenumber="79"> + + + <code class="ruby"> :class =&gt; &quot;expander&quot;, :alt =&gt; &#39;toggle children&#39;,</code> + </li> + + <li class="never" data-hits="" data-linenumber="80"> + + + <code class="ruby"> :title =&gt; &#39;&#39;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="81"> + + + <code class="ruby"> else</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="82"> + + + <code class="ruby"> &quot;&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="83"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="84"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="85"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="86"> + <span class="hits">1</span> + + <code class="ruby"> def icon</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="87"> + <span class="hits">5</span> + + <code class="ruby"> icon_name = @current_node.virtual? ? &#39;virtual_page&#39; : &#39;page&#39;</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="88"> + <span class="hits">5</span> + + <code class="ruby"> image(icon_name, :class =&gt; &quot;icon&quot;, :alt =&gt; &#39;&#39;, :title =&gt; &#39;&#39;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="89"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="90"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="91"> + <span class="hits">1</span> + + <code class="ruby"> def node_title</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="92"> + <span class="hits">5</span> + + <code class="ruby"> %{&lt;span class=&quot;title&quot;&gt;#{ h(@current_node.title) }&lt;/span&gt;}.html_safe</code> + </li> + + <li class="never" data-hits="" data-linenumber="93"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="94"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="95"> + <span class="hits">1</span> + + <code class="ruby"> def page_type</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="96"> + <span class="hits">4</span> + + <code class="ruby"> display_name = @current_node.class.display_name</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="97"> + <span class="hits">4</span> + + <code class="ruby"> if display_name == &#39;Page&#39;</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="98"> + <span class="hits">4</span> + + <code class="ruby"> &quot;&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="99"> + + + <code class="ruby"> else</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="100"> + + + <code class="ruby"> %{&lt;span class=&quot;info&quot;&gt;(#{ h(display_name) })&lt;/span&gt;}.html_safe</code> + </li> + + <li class="never" data-hits="" data-linenumber="101"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="102"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="103"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="104"> + <span class="hits">1</span> + + <code class="ruby"> def spinner</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="105"> + <span class="hits">4</span> + + <code class="ruby"> image(&#39;spinner.gif&#39;,</code> + </li> + + <li class="never" data-hits="" data-linenumber="106"> + + + <code class="ruby"> :class =&gt; &#39;busy&#39;, :id =&gt; &quot;busy_#{@current_node.id}&quot;,</code> + </li> + + <li class="never" data-hits="" data-linenumber="107"> + + + <code class="ruby"> :alt =&gt; &quot;&quot;, :title =&gt; &quot;&quot;,</code> + </li> + + <li class="never" data-hits="" data-linenumber="108"> + + + <code class="ruby"> :style =&gt; &#39;display: none;&#39;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="109"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="110"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="07cdad2482cd19a92b6c1e2ed1c9d59c7b7b0a2a"> + <div class="header"> + <h3>app/helpers/admin/pages_helper.rb</h3> + <h4><span class="red">75.0 %</span> covered</h4> + <div> + <b>16</b> relevant lines. + <span class="green"><b>12</b> lines covered</span> and + <span class="red"><b>4</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">module Admin::PagesHelper</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="2"> + <span class="hits">1</span> + + <code class="ruby"> include Admin::NodeHelper</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby"> include Admin::ReferencesHelper</code> + </li> + + <li class="never" data-hits="" data-linenumber="4"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="5"> + <span class="hits">1</span> + + <code class="ruby"> def class_of_page</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="6"> + + + <code class="ruby"> @page.class</code> + </li> + + <li class="never" data-hits="" data-linenumber="7"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="8"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="9"> + <span class="hits">1</span> + + <code class="ruby"> def filter</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="10"> + + + <code class="ruby"> @page.parts.first.filter if @page.parts.respond_to?(:any?) &amp;&amp; @page.parts.any?</code> + </li> + + <li class="never" data-hits="" data-linenumber="11"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="12"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="13"> + <span class="hits">1</span> + + <code class="ruby"> def meta_errors?</code> + </li> + + <li class="covered" data-hits="10" data-linenumber="14"> + <span class="hits">10</span> + + <code class="ruby"> !!(@page.errors[:slug] or @page.errors[:breadcrumb])</code> + </li> + + <li class="never" data-hits="" data-linenumber="15"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="16"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="17"> + <span class="hits">1</span> + + <code class="ruby"> def default_filter_name</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="18"> + + + <code class="ruby"> @page.parts.empty? ? &quot;&quot; : @page.parts[0].filter_id</code> + </li> + + <li class="never" data-hits="" data-linenumber="19"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="20"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="21"> + <span class="hits">1</span> + + <code class="ruby"> def status_to_display</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="22"> + <span class="hits">5</span> + + <code class="ruby"> @page.status_id = 100 if @page.status_id == 90</code> + </li> + + <li class="covered" data-hits="25" data-linenumber="23"> + <span class="hits">25</span> + + <code class="ruby"> @display_status = Status.selectable.map{ |s| [I18n.translate(s.name.downcase), s.id] }</code> + </li> + + <li class="never" data-hits="" data-linenumber="24"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="25"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="26"> + <span class="hits">1</span> + + <code class="ruby"> def clean_page_description(page)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="27"> + + + <code class="ruby"> page.description.to_s.strip.gsub(/\t/,&#39;&#39;).gsub(/\s+/,&#39; &#39;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="28"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="29"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="781d9751547430b5f53e45c0a93bbe1399c262fa"> + <div class="header"> + <h3>app/helpers/admin/preferences_helper.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <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> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">module Admin::PreferencesHelper</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="3"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="f67b3ce4ba5dfcbf735dc48d7e441eb59a706783"> + <div class="header"> + <h3>app/helpers/admin/references_helper.rb</h3> + <h4><span class="red">31.82 %</span> covered</h4> + <div> + <b>22</b> relevant lines. + <span class="green"><b>7</b> lines covered</span> and + <span class="red"><b>15</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">require &quot;RedCloth&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby">module Admin::ReferencesHelper</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="4"> + <span class="hits">1</span> + + <code class="ruby"> def tag_reference</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="5"> + + + <code class="ruby"> String.new.tap do |output|</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="6"> + + + <code class="ruby"> class_of_page.tag_descriptions.sort.each do |tag_name, description|</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="7"> + + + <code class="ruby"> value = t(&quot;desc.#{tag_name.gsub(&#39;:&#39;,&#39;-&#39;)}&quot;).match(&#39;desc&#39;) ? description : t(&quot;desc.#{tag_name.gsub(&#39;:&#39;,&#39;-&#39;)}&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="8"> + + + <code class="ruby"> output &lt;&lt; render(:partial =&gt; &quot;admin/references/tag_reference.haml&quot;,</code> + </li> + + <li class="never" data-hits="" data-linenumber="9"> + + + <code class="ruby"> :locals =&gt; {:tag_name =&gt; tag_name,</code> + </li> + + <li class="never" data-hits="" data-linenumber="10"> + + + <code class="ruby"> :description =&gt; RedCloth.new(TrustyCms::Taggable::Util.strip_leading_whitespace(value)).to_html</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="11"> + + + <code class="ruby"> })</code> + </li> + + <li class="never" data-hits="" data-linenumber="12"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="13"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="14"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="15"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="16"> + <span class="hits">1</span> + + <code class="ruby"> def filter_reference</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="17"> + + + <code class="ruby"> unless filter.blank?</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="18"> + + + <code class="ruby"> if filter.description.blank?</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="19"> + + + <code class="ruby"> &quot;There is no documentation on this filter.&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="20"> + + + <code class="ruby"> else</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="21"> + + + <code class="ruby"> filter.description</code> + </li> + + <li class="never" data-hits="" data-linenumber="22"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="23"> + + + <code class="ruby"> else</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="24"> + + + <code class="ruby"> &quot;There is no filter on the current page part.&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="25"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="26"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="27"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="28"> + <span class="hits">1</span> + + <code class="ruby"> def _display_name</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="29"> + + + <code class="ruby"> case params[:type]</code> + </li> + + <li class="never" data-hits="" data-linenumber="30"> + + + <code class="ruby"> when &#39;filters&#39;</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="31"> + + + <code class="ruby"> filter ? filter.filter_name : t(&#39;select.none&#39;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="32"> + + + <code class="ruby"> when &#39;tags&#39;</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="33"> + + + <code class="ruby"> class_of_page.display_name</code> + </li> + + <li class="never" data-hits="" data-linenumber="34"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="35"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="36"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="37"> + <span class="hits">1</span> + + <code class="ruby"> def filter</code> + </li> + + <li class="never" data-hits="" data-linenumber="38"> + + + <code class="ruby"> @filter ||= begin</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="39"> + + + <code class="ruby"> TextFilter.find_descendant(params[:filter_name])</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="40"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="41"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="42"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="43"> + <span class="hits">1</span> + + <code class="ruby"> def class_of_page</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="44"> + + + <code class="ruby"> @page_class ||= (params[:class_name].blank? ? &#39;Page&#39; : params[:class_name]).constantize</code> + </li> + + <li class="never" data-hits="" data-linenumber="45"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="46"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + <div class="source_table" id="024a60096d1599d436568bc78004ef69dd2dbf20"> <div class="header"> <h3>app/helpers/admin/regions_helper.rb</h3> - <h4><span class="red">15.79 %</span> covered</h4> + <h4><span class="green">94.74 %</span> covered</h4> <div> <b>19</b> relevant lines. - <span class="green"><b>3</b> lines covered</span> and - <span class="red"><b>16</b> lines missed.</span> + <span class="green"><b>18</b> lines covered</span> and + <span class="red"><b>1</b> lines missed.</span> </div> </div> <pre> <ol> @@ -1068,73 +7068,73 @@ <span class="hits">1</span> <code class="ruby"> def render_region(region, options={}, &amp;block)</code> </li> - <li class="missed" data-hits="0" data-linenumber="3"> + <li class="covered" data-hits="287" data-linenumber="3"> + <span class="hits">287</span> - <code class="ruby"> lazy_initialize_region_set</code> </li> - <li class="missed" data-hits="0" data-linenumber="4"> + <li class="covered" data-hits="287" data-linenumber="4"> + <span class="hits">287</span> - <code class="ruby"> default_partials = TrustyCms::AdminUI::RegionPartials.new(self)</code> </li> - <li class="missed" data-hits="0" data-linenumber="5"> + <li class="covered" data-hits="287" data-linenumber="5"> + <span class="hits">287</span> - <code class="ruby"> if block_given?</code> </li> - <li class="missed" data-hits="0" data-linenumber="6"> + <li class="covered" data-hits="140" data-linenumber="6"> + <span class="hits">140</span> - <code class="ruby"> block.call(default_partials)</code> </li> - <li class="missed" data-hits="0" data-linenumber="7"> + <li class="covered" data-hits="140" data-linenumber="7"> + <span class="hits">140</span> - <code class="ruby"> (options[:locals] ||= {}).merge!(:defaults =&gt; default_partials)</code> </li> <li class="never" data-hits="" data-linenumber="8"> <code class="ruby"> end</code> </li> - <li class="missed" data-hits="0" data-linenumber="9"> + <li class="covered" data-hits="287" data-linenumber="9"> + <span class="hits">287</span> - <code class="ruby"> output = @region_set[region].compact.map do |partial|</code> </li> - <li class="missed" data-hits="0" data-linenumber="10"> + <li class="covered" data-hits="230" data-linenumber="10"> + <span class="hits">230</span> - <code class="ruby"> begin</code> </li> - <li class="missed" data-hits="0" data-linenumber="11"> + <li class="covered" data-hits="230" data-linenumber="11"> + <span class="hits">230</span> - <code class="ruby"> render options.merge(:partial =&gt; partial)</code> </li> <li class="never" data-hits="" data-linenumber="12"> <code class="ruby"> rescue ::ActionView::MissingTemplate # couldn&#39;t find template</code> </li> - <li class="missed" data-hits="0" data-linenumber="13"> + <li class="covered" data-hits="230" data-linenumber="13"> + <span class="hits">230</span> - <code class="ruby"> default_partials[partial]</code> </li> <li class="never" data-hits="" data-linenumber="14"> @@ -1158,19 +7158,19 @@ <code class="ruby"> end.join.html_safe</code> </li> - <li class="missed" data-hits="0" data-linenumber="18"> + <li class="covered" data-hits="287" data-linenumber="18"> + <span class="hits">287</span> - <code class="ruby"> Rails.logger.error(output)</code> </li> - <li class="missed" data-hits="0" data-linenumber="19"> + <li class="covered" data-hits="287" data-linenumber="19"> + <span class="hits">287</span> - <code class="ruby"> block_given? ? concat(output) : output</code> </li> <li class="never" data-hits="" data-linenumber="20"> @@ -1188,31 +7188,31 @@ <span class="hits">1</span> <code class="ruby"> def lazy_initialize_region_set</code> </li> - <li class="missed" data-hits="0" data-linenumber="23"> + <li class="covered" data-hits="287" data-linenumber="23"> + <span class="hits">287</span> - <code class="ruby"> unless @region_set</code> </li> - <li class="missed" data-hits="0" data-linenumber="24"> + <li class="covered" data-hits="50" data-linenumber="24"> + <span class="hits">50</span> - <code class="ruby"> @controller_name ||= @_controller.controller_name</code> </li> - <li class="missed" data-hits="0" data-linenumber="25"> + <li class="covered" data-hits="50" data-linenumber="25"> + <span class="hits">50</span> - <code class="ruby"> @template_name ||= @_controller.template_name</code> </li> - <li class="missed" data-hits="0" data-linenumber="26"> + <li class="covered" data-hits="50" data-linenumber="26"> + <span class="hits">50</span> - <code class="ruby"> @region_set = admin.send(@controller_name).send(@template_name)</code> </li> <li class="never" data-hits="" data-linenumber="27"> @@ -1234,18 +7234,144 @@ </ol> </pre> </div> + <div class="source_table" id="c36f97396afab7acde2fbe5a063b597d0b40f848"> + <div class="header"> + <h3>app/helpers/admin/resource_helper.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <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> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">module Admin::ResourceHelper</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="b5b66cc2c9ceed019da04d236c18a819343756d7"> + <div class="header"> + <h3>app/helpers/admin/users_helper.rb</h3> + <h4><span class="red">33.33 %</span> covered</h4> + <div> + <b>6</b> relevant lines. + <span class="green"><b>2</b> lines covered</span> and + <span class="red"><b>4</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">module Admin::UsersHelper</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="2"> + <span class="hits">1</span> + + <code class="ruby"> def roles(user)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="3"> + + + <code class="ruby"> roles = []</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="4"> + + + <code class="ruby"> roles &lt;&lt; I18n.t(&#39;admin&#39;) if user.admin?</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="5"> + + + <code class="ruby"> roles &lt;&lt; I18n.t(&#39;designer&#39;) if user.designer?</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="6"> + + + <code class="ruby"> roles.join(&#39;, &#39;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="7"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="8"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="84bf416885112758ab122c8fd5353d9486d18756"> + <div class="header"> + <h3>app/helpers/admin/welcome_helper.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <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> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">module Admin::WelcomeHelper</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + <div class="source_table" id="e8ceba241b247e5465fc091266d42235281b188b"> <div class="header"> <h3>app/helpers/application_helper.rb</h3> - <h4><span class="red">28.57 %</span> covered</h4> + <h4><span class="yellow">80.16 %</span> covered</h4> <div> <b>126</b> relevant lines. - <span class="green"><b>36</b> lines covered</span> and - <span class="red"><b>90</b> lines missed.</span> + <span class="green"><b>101</b> lines covered</span> and + <span class="red"><b>25</b> lines missed.</span> </div> </div> <pre> <ol> @@ -1272,13 +7398,13 @@ <span class="hits">1</span> <code class="ruby"> def trusty_config</code> </li> - <li class="missed" data-hits="0" data-linenumber="5"> + <li class="covered" data-hits="150" data-linenumber="5"> + <span class="hits">150</span> - <code class="ruby"> TrustyCms::Config</code> </li> <li class="never" data-hits="" data-linenumber="6"> @@ -1296,13 +7422,13 @@ <span class="hits">1</span> <code class="ruby"> def default_page_title</code> </li> - <li class="missed" data-hits="0" data-linenumber="9"> + <li class="covered" data-hits="75" data-linenumber="9"> + <span class="hits">75</span> - <code class="ruby"> title + &#39; - &#39; + subtitle</code> </li> <li class="never" data-hits="" data-linenumber="10"> @@ -1320,13 +7446,13 @@ <span class="hits">1</span> <code class="ruby"> def title</code> </li> - <li class="missed" data-hits="0" data-linenumber="13"> + <li class="covered" data-hits="75" data-linenumber="13"> + <span class="hits">75</span> - <code class="ruby"> trusty_config[&#39;admin.title&#39;] || &#39;Trusty CMS&#39;</code> </li> <li class="never" data-hits="" data-linenumber="14"> @@ -1344,13 +7470,13 @@ <span class="hits">1</span> <code class="ruby"> def subtitle</code> </li> - <li class="missed" data-hits="0" data-linenumber="17"> + <li class="covered" data-hits="75" data-linenumber="17"> + <span class="hits">75</span> - <code class="ruby"> trusty_config[&#39;admin.subtitle&#39;] || &#39;Publishing for Small Teams&#39;</code> </li> <li class="never" data-hits="" data-linenumber="18"> @@ -1368,13 +7494,13 @@ <span class="hits">1</span> <code class="ruby"> def logged_in?</code> </li> - <li class="missed" data-hits="0" data-linenumber="21"> + <li class="covered" data-hits="75" data-linenumber="21"> + <span class="hits">75</span> - <code class="ruby"> !current_user.nil?</code> </li> <li class="never" data-hits="" data-linenumber="22"> @@ -1392,13 +7518,13 @@ <span class="hits">1</span> <code class="ruby"> def onsubmit_status(model)</code> </li> - <li class="missed" data-hits="0" data-linenumber="25"> + <li class="covered" data-hits="2" data-linenumber="25"> + <span class="hits">2</span> - <code class="ruby"> model.new_record? ? t(&#39;creating_status&#39;, :model =&gt; t(model.class.name.downcase)) : &quot;#{I18n.t(&#39;saving_changes&#39;)}&amp;#8230;&quot;</code> </li> <li class="never" data-hits="" data-linenumber="26"> @@ -1416,25 +7542,25 @@ <span class="hits">1</span> <code class="ruby"> def save_model_button(model, options = {})</code> </li> - <li class="missed" data-hits="0" data-linenumber="29"> + <li class="covered" data-hits="8" data-linenumber="29"> + <span class="hits">8</span> - <code class="ruby"> model_name = model.class.name.underscore</code> </li> - <li class="missed" data-hits="0" data-linenumber="30"> + <li class="covered" data-hits="8" data-linenumber="30"> + <span class="hits">8</span> - <code class="ruby"> human_model_name = model_name.humanize.titlecase</code> </li> - <li class="missed" data-hits="0" data-linenumber="31"> + <li class="covered" data-hits="8" data-linenumber="31"> + <span class="hits">8</span> - <code class="ruby"> options[:label] ||= model.new_record? ?</code> </li> <li class="never" data-hits="" data-linenumber="32"> @@ -1446,25 +7572,25 @@ <code class="ruby"> t(&#39;buttons.save_changes&#39;, :default =&gt; &#39;Save Changes&#39;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="34"> + <li class="covered" data-hits="8" data-linenumber="34"> + <span class="hits">8</span> - <code class="ruby"> options[:class] ||= &quot;button&quot;</code> </li> - <li class="missed" data-hits="0" data-linenumber="35"> + <li class="covered" data-hits="8" data-linenumber="35"> + <span class="hits">8</span> - <code class="ruby"> options[:accesskey] ||= &#39;S&#39;</code> </li> - <li class="missed" data-hits="0" data-linenumber="36"> + <li class="covered" data-hits="8" data-linenumber="36"> + <span class="hits">8</span> - <code class="ruby"> submit_tag options.delete(:label), options</code> </li> <li class="never" data-hits="" data-linenumber="37"> @@ -1482,13 +7608,13 @@ <span class="hits">1</span> <code class="ruby"> def save_model_and_continue_editing_button(model)</code> </li> - <li class="missed" data-hits="0" data-linenumber="40"> + <li class="covered" data-hits="7" data-linenumber="40"> + <span class="hits">7</span> - <code class="ruby"> submit_tag t(&#39;buttons.save_and_continue&#39;), :name =&gt; &#39;continue&#39;, :class =&gt; &#39;button&#39;, :accesskey =&gt; &quot;s&quot;</code> </li> <li class="never" data-hits="" data-linenumber="41"> @@ -1506,13 +7632,13 @@ <span class="hits">1</span> <code class="ruby"> def current_item?(item)</code> </li> - <li class="missed" data-hits="0" data-linenumber="44"> + <li class="covered" data-hits="140" data-linenumber="44"> + <span class="hits">140</span> - <code class="ruby"> if item.tab &amp;&amp; item.tab.many? {|i| current_url?(i.relative_url) }</code> </li> <li class="never" data-hits="" data-linenumber="45"> @@ -1530,13 +7656,13 @@ <code class="ruby"> else</code> </li> - <li class="missed" data-hits="0" data-linenumber="48"> + <li class="covered" data-hits="28" data-linenumber="48"> + <span class="hits">28</span> - <code class="ruby"> current_url?(item.relative_url)</code> </li> <li class="never" data-hits="" data-linenumber="49"> @@ -1560,19 +7686,19 @@ <span class="hits">1</span> <code class="ruby"> def current_tab?(tab)</code> </li> - <li class="missed" data-hits="0" data-linenumber="53"> + <li class="covered" data-hits="417" data-linenumber="53"> + <span class="hits">417</span> - <code class="ruby"> @current_tab ||= tab if tab.any? {|item| current_url?(item.relative_url) }</code> </li> - <li class="missed" data-hits="0" data-linenumber="54"> + <li class="covered" data-hits="145" data-linenumber="54"> + <span class="hits">145</span> - <code class="ruby"> @current_tab == tab</code> </li> <li class="never" data-hits="" data-linenumber="55"> @@ -1590,13 +7716,13 @@ <span class="hits">1</span> <code class="ruby"> def current_url?(options)</code> </li> - <li class="missed" data-hits="0" data-linenumber="58"> + <li class="covered" data-hits="412" data-linenumber="58"> + <span class="hits">412</span> - <code class="ruby"> url = case options</code> </li> <li class="never" data-hits="" data-linenumber="59"> @@ -1614,13 +7740,13 @@ <code class="ruby"> else</code> </li> - <li class="missed" data-hits="0" data-linenumber="62"> + <li class="covered" data-hits="412" data-linenumber="62"> + <span class="hits">412</span> - <code class="ruby"> options.to_s</code> </li> <li class="never" data-hits="" data-linenumber="63"> @@ -1632,13 +7758,13 @@ <code class="ruby"> #TODO: look for other instances of request_uri</code> </li> - <li class="missed" data-hits="0" data-linenumber="65"> + <li class="covered" data-hits="412" data-linenumber="65"> + <span class="hits">412</span> - <code class="ruby"> request.original_fullpath =~ Regexp.new(&#39;^&#39; + Regexp.quote(clean(url)))</code> </li> <li class="never" data-hits="" data-linenumber="66"> @@ -1656,19 +7782,19 @@ <span class="hits">1</span> <code class="ruby"> def clean(url)</code> </li> - <li class="missed" data-hits="0" data-linenumber="69"> + <li class="covered" data-hits="412" data-linenumber="69"> + <span class="hits">412</span> - <code class="ruby"> uri = URI.parse(url)</code> </li> - <li class="missed" data-hits="0" data-linenumber="70"> + <li class="covered" data-hits="412" data-linenumber="70"> + <span class="hits">412</span> - <code class="ruby"> uri.path.gsub(%r{/+}, &#39;/&#39;).gsub(%r{/$}, &#39;&#39;)</code> </li> <li class="never" data-hits="" data-linenumber="71"> @@ -1734,13 +7860,13 @@ <span class="hits">1</span> <code class="ruby"> def admin?</code> </li> - <li class="missed" data-hits="0" data-linenumber="82"> + <li class="covered" data-hits="5" data-linenumber="82"> + <span class="hits">5</span> - <code class="ruby"> current_user and current_user.admin?</code> </li> <li class="never" data-hits="" data-linenumber="83"> @@ -1782,67 +7908,67 @@ <span class="hits">1</span> <code class="ruby"> def updated_stamp(model)</code> </li> - <li class="missed" data-hits="0" data-linenumber="90"> + <li class="covered" data-hits="7" data-linenumber="90"> + <span class="hits">7</span> - <code class="ruby"> unless model.new_record?</code> </li> - <li class="missed" data-hits="0" data-linenumber="91"> + <li class="covered" data-hits="2" data-linenumber="91"> + <span class="hits">2</span> - <code class="ruby"> updated_by = (model.updated_by || model.created_by)</code> </li> - <li class="missed" data-hits="0" data-linenumber="92"> + <li class="covered" data-hits="2" data-linenumber="92"> + <span class="hits">2</span> - <code class="ruby"> name = updated_by ? updated_by.name : nil</code> </li> - <li class="missed" data-hits="0" data-linenumber="93"> + <li class="covered" data-hits="2" data-linenumber="93"> + <span class="hits">2</span> - <code class="ruby"> time = (model.updated_at || model.created_at)</code> </li> - <li class="missed" data-hits="0" data-linenumber="94"> + <li class="covered" data-hits="2" data-linenumber="94"> + <span class="hits">2</span> - <code class="ruby"> if name or time</code> </li> - <li class="missed" data-hits="0" data-linenumber="95"> + <li class="covered" data-hits="2" data-linenumber="95"> + <span class="hits">2</span> - <code class="ruby"> html = %{&lt;p class=&quot;updated_line&quot;&gt;#{t(&#39;timestamp.last_updated&#39;)} }</code> </li> - <li class="missed" data-hits="0" data-linenumber="96"> + <li class="covered" data-hits="2" data-linenumber="96"> + <span class="hits">2</span> - <code class="ruby"> html &lt;&lt; %{#{t(&#39;timestamp.by&#39;)} &lt;strong&gt;#{name}&lt;/strong&gt; } if name</code> </li> - <li class="missed" data-hits="0" data-linenumber="97"> + <li class="covered" data-hits="2" data-linenumber="97"> + <span class="hits">2</span> - <code class="ruby"> html &lt;&lt; %{#{t(&#39;timestamp.at&#39;)} #{timestamp(time)}} if time</code> </li> - <li class="missed" data-hits="0" data-linenumber="98"> + <li class="covered" data-hits="2" data-linenumber="98"> + <span class="hits">2</span> - <code class="ruby"> html &lt;&lt; %{&lt;/p&gt;}</code> </li> - <li class="missed" data-hits="0" data-linenumber="99"> + <li class="covered" data-hits="2" data-linenumber="99"> + <span class="hits">2</span> - <code class="ruby"> html.html_safe</code> </li> <li class="never" data-hits="" data-linenumber="100"> @@ -1878,13 +8004,13 @@ <code class="ruby"> # time.strftime(&quot;%I:%M %p on %B %e, %Y&quot;).sub(&quot;AM&quot;, &#39;am&#39;).sub(&quot;PM&quot;, &#39;pm&#39;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="106"> + <li class="covered" data-hits="2" data-linenumber="106"> + <span class="hits">2</span> - <code class="ruby"> I18n.localize(time, :format =&gt; :timestamp)</code> </li> <li class="never" data-hits="" data-linenumber="107"> @@ -1962,13 +8088,13 @@ <span class="hits">1</span> <code class="ruby"> def meta_errors?</code> </li> - <li class="missed" data-hits="0" data-linenumber="120"> + <li class="covered" data-hits="4" data-linenumber="120"> + <span class="hits">4</span> - <code class="ruby"> false</code> </li> <li class="never" data-hits="" data-linenumber="121"> @@ -1986,13 +8112,13 @@ <span class="hits">1</span> <code class="ruby"> def meta_label</code> </li> - <li class="missed" data-hits="0" data-linenumber="124"> + <li class="covered" data-hits="7" data-linenumber="124"> + <span class="hits">7</span> - <code class="ruby"> meta_errors? ? &#39;Less&#39; : &#39;More&#39;</code> </li> <li class="never" data-hits="" data-linenumber="125"> @@ -2010,13 +8136,13 @@ <span class="hits">1</span> <code class="ruby"> def image(name, options = {})</code> </li> - <li class="missed" data-hits="0" data-linenumber="128"> + <li class="covered" data-hits="89" data-linenumber="128"> + <span class="hits">89</span> - <code class="ruby"> image_tag(append_image_extension(&quot;admin/#{name}&quot;), options)</code> </li> <li class="never" data-hits="" data-linenumber="129"> @@ -2058,13 +8184,13 @@ <span class="hits">1</span> <code class="ruby"> def admin</code> </li> - <li class="missed" data-hits="0" data-linenumber="136"> + <li class="covered" data-hits="125" data-linenumber="136"> + <span class="hits">125</span> - <code class="ruby"> TrustyCms::AdminUI.instance</code> </li> <li class="never" data-hits="" data-linenumber="137"> @@ -2106,13 +8232,13 @@ <span class="hits">1</span> <code class="ruby"> def body_classes</code> </li> - <li class="missed" data-hits="0" data-linenumber="144"> + <li class="covered" data-hits="108" data-linenumber="144"> + <span class="hits">108</span> - <code class="ruby"> @body_classes ||= []</code> </li> <li class="never" data-hits="" data-linenumber="145"> @@ -2130,13 +8256,13 @@ <span class="hits">1</span> <code class="ruby"> def nav_tabs</code> </li> - <li class="missed" data-hits="0" data-linenumber="148"> + <li class="covered" data-hits="49" data-linenumber="148"> + <span class="hits">49</span> - <code class="ruby"> admin.nav</code> </li> <li class="never" data-hits="" data-linenumber="149"> @@ -2154,13 +8280,13 @@ <span class="hits">1</span> <code class="ruby"> def translate_with_default(name)</code> </li> - <li class="missed" data-hits="0" data-linenumber="152"> + <li class="covered" data-hits="173" data-linenumber="152"> + <span class="hits">173</span> - <code class="ruby"> t(name.underscore.downcase, :default =&gt; name)</code> </li> <li class="never" data-hits="" data-linenumber="153"> @@ -2178,13 +8304,13 @@ <span class="hits">1</span> <code class="ruby"> def available_locales_select</code> </li> - <li class="missed" data-hits="0" data-linenumber="156"> + <li class="covered" data-hits="1" data-linenumber="156"> + <span class="hits">1</span> - <code class="ruby"> [[t(&#39;select.default&#39;),&#39;&#39;]] + TrustyCms::AvailableLocales.locales</code> </li> <li class="never" data-hits="" data-linenumber="157"> @@ -2202,19 +8328,19 @@ <span class="hits">1</span> <code class="ruby"> def stylesheet_overrides</code> </li> - <li class="missed" data-hits="0" data-linenumber="160"> + <li class="covered" data-hits="75" data-linenumber="160"> + <span class="hits">75</span> - <code class="ruby"> overrides = []</code> </li> - <li class="missed" data-hits="0" data-linenumber="161"> + <li class="covered" data-hits="75" data-linenumber="161"> + <span class="hits">75</span> - <code class="ruby"> if File.exist?(&quot;#{Rails.root}/public/stylesheets/admin/overrides.css&quot;) || File.exist?(&quot;#{Rails.root}/public/stylesheets/sass/admin/overrides.sass&quot;)</code> </li> <li class="missed" data-hits="0" data-linenumber="162"> @@ -2226,13 +8352,13 @@ <code class="ruby"> end</code> </li> - <li class="missed" data-hits="0" data-linenumber="164"> + <li class="covered" data-hits="75" data-linenumber="164"> + <span class="hits">75</span> - <code class="ruby"> overrides</code> </li> <li class="never" data-hits="" data-linenumber="165"> @@ -2250,19 +8376,19 @@ <span class="hits">1</span> <code class="ruby"> def javascript_overrides</code> </li> - <li class="missed" data-hits="0" data-linenumber="168"> + <li class="covered" data-hits="75" data-linenumber="168"> + <span class="hits">75</span> - <code class="ruby"> overrides = []</code> </li> - <li class="missed" data-hits="0" data-linenumber="169"> + <li class="covered" data-hits="75" data-linenumber="169"> + <span class="hits">75</span> - <code class="ruby"> if File.exist?(&quot;#{Rails.root}/public/javascripts/admin/overrides.js&quot;)</code> </li> <li class="missed" data-hits="0" data-linenumber="170"> @@ -2274,13 +8400,13 @@ <code class="ruby"> end</code> </li> - <li class="missed" data-hits="0" data-linenumber="172"> + <li class="covered" data-hits="75" data-linenumber="172"> + <span class="hits">75</span> - <code class="ruby"> overrides</code> </li> <li class="never" data-hits="" data-linenumber="173"> @@ -2316,13 +8442,13 @@ <code class="ruby"> # Default to highest rating. Rating can be one of G, PG, R X.</code> </li> - <li class="missed" data-hits="0" data-linenumber="179"> + <li class="covered" data-hits="6" data-linenumber="179"> + <span class="hits">6</span> - <code class="ruby"> options[:rating] ||= &quot;G&quot;</code> </li> <li class="never" data-hits="" data-linenumber="180"> @@ -2334,13 +8460,13 @@ <code class="ruby"> # Default size of the image.</code> </li> - <li class="missed" data-hits="0" data-linenumber="182"> + <li class="covered" data-hits="6" data-linenumber="182"> + <span class="hits">6</span> - <code class="ruby"> options[:size] ||= &quot;32px&quot;</code> </li> <li class="never" data-hits="" data-linenumber="183"> @@ -2358,37 +8484,37 @@ <code class="ruby"> # or when an image exceeds the rating parameter.</code> </li> - <li class="missed" data-hits="0" data-linenumber="186"> + <li class="covered" data-hits="6" data-linenumber="186"> + <span class="hits">6</span> - <code class="ruby"> local_avatar_url = &quot;/images/admin/avatar_#{([options[:size].to_i] * 2).join(&#39;x&#39;)}.png&quot;</code> </li> - <li class="missed" data-hits="0" data-linenumber="187"> + <li class="covered" data-hits="6" data-linenumber="187"> + <span class="hits">6</span> - <code class="ruby"> default_avatar_url = &quot;#{request.protocol}#{request.host_with_port}#{ActionController::Base.relative_url_root}#{local_avatar_url}&quot;</code> </li> - <li class="missed" data-hits="0" data-linenumber="188"> + <li class="covered" data-hits="6" data-linenumber="188"> + <span class="hits">6</span> - <code class="ruby"> options[:default] ||= default_avatar_url</code> </li> <li class="never" data-hits="" data-linenumber="189"> <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="190"> + <li class="covered" data-hits="6" data-linenumber="190"> + <span class="hits">6</span> - <code class="ruby"> unless email.blank?</code> </li> <li class="never" data-hits="" data-linenumber="191"> @@ -2466,13 +8592,13 @@ <code class="ruby"> else</code> </li> - <li class="missed" data-hits="0" data-linenumber="204"> + <li class="covered" data-hits="6" data-linenumber="204"> + <span class="hits">6</span> - <code class="ruby"> local_avatar_url</code> </li> <li class="never" data-hits="" data-linenumber="205"> @@ -2514,19 +8640,19 @@ <span class="hits">1</span> <code class="ruby"> def pagination_for(list, options={})</code> </li> - <li class="missed" data-hits="0" data-linenumber="212"> + <li class="covered" data-hits="8" data-linenumber="212"> + <span class="hits">8</span> - <code class="ruby"> if list.respond_to? :total_pages</code> </li> - <li class="missed" data-hits="0" data-linenumber="213"> + <li class="covered" data-hits="8" data-linenumber="213"> + <span class="hits">8</span> - <code class="ruby"> options = {</code> </li> <li class="never" data-hits="" data-linenumber="214"> @@ -2544,31 +8670,31 @@ <code class="ruby"> }.merge(options.symbolize_keys)</code> </li> - <li class="missed" data-hits="0" data-linenumber="217"> + <li class="covered" data-hits="8" data-linenumber="217"> + <span class="hits">8</span> - <code class="ruby"> depaginate = options.delete(:depaginate) # supply :depaginate =&gt; false to omit the &#39;show all&#39; link</code> </li> - <li class="missed" data-hits="0" data-linenumber="218"> + <li class="covered" data-hits="8" data-linenumber="218"> + <span class="hits">8</span> - <code class="ruby"> depagination_limit = options.delete(:max_per_page) # supply :max_per_page =&gt; false to include the &#39;show all&#39; link no matter how large the collection</code> </li> - <li class="missed" data-hits="0" data-linenumber="219"> + <li class="covered" data-hits="8" data-linenumber="219"> + <span class="hits">8</span> - <code class="ruby"> html = will_paginate(list, will_paginate_options.merge(options))</code> </li> - <li class="missed" data-hits="0" data-linenumber="220"> + <li class="covered" data-hits="8" data-linenumber="220"> + <span class="hits">8</span> - <code class="ruby"> if depaginate &amp;&amp; list.total_pages &gt; 1 &amp;&amp; (!depagination_limit.blank? || list.total_entries &lt;= depagination_limit.to_i)</code> </li> <li class="missed" data-hits="0" data-linenumber="221"> @@ -2592,13 +8718,13 @@ <code class="ruby"> end</code> </li> - <li class="missed" data-hits="0" data-linenumber="225"> + <li class="covered" data-hits="8" data-linenumber="225"> + <span class="hits">8</span> - <code class="ruby"> html</code> </li> <li class="never" data-hits="" data-linenumber="226"> @@ -2634,31 +8760,31 @@ <span class="hits">1</span> <code class="ruby"> def append_image_extension(name)</code> </li> - <li class="missed" data-hits="0" data-linenumber="232"> + <li class="covered" data-hits="89" data-linenumber="232"> + <span class="hits">89</span> - <code class="ruby"> unless name =~ /\.(.*?)$/</code> </li> - <li class="missed" data-hits="0" data-linenumber="233"> + <li class="covered" data-hits="75" data-linenumber="233"> + <span class="hits">75</span> - <code class="ruby"> name + &#39;.png&#39;</code> </li> <li class="never" data-hits="" data-linenumber="234"> <code class="ruby"> else</code> </li> - <li class="missed" data-hits="0" data-linenumber="235"> + <li class="covered" data-hits="14" data-linenumber="235"> + <span class="hits">14</span> - <code class="ruby"> name</code> </li> <li class="never" data-hits="" data-linenumber="236"> @@ -2686,10 +8812,40 @@ </ol> </pre> </div> + <div class="source_table" id="a39d78c4fc93191de03915ecd09328b64f41b587"> + <div class="header"> + <h3>app/helpers/site_helper.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <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> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">module SiteHelper</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + <div class="source_table" id="24a478dc81cb312b20b3b6ff5d59f560307249ae"> <div class="header"> <h3>app/models/layout.rb</h3> <h4><span class="green">100.0 %</span> covered</h4> <div> @@ -2724,12 +8880,12 @@ <code class="ruby"> # Default Order</code> </li> - <li class="covered" data-hits="1" data-linenumber="5"> - <span class="hits">1</span> + <li class="covered" data-hits="28" data-linenumber="5"> + <span class="hits">28</span> <code class="ruby"> default_scope {order(&quot;name&quot;)}</code> </li> <li class="never" data-hits="" data-linenumber="6"> @@ -2800,18 +8956,1392 @@ </ol> </pre> </div> + <div class="source_table" id="0a4dd54b5173ef00862c0de3249f9062548ae0ed"> + <div class="header"> + <h3>app/models/menu_renderer.rb</h3> + <h4><span class="yellow">89.33 %</span> covered</h4> + <div> + <b>75</b> relevant lines. + <span class="green"><b>67</b> lines covered</span> and + <span class="red"><b>8</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">module MenuRenderer</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby"> def exclude(*type_names)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="4"> + + + <code class="ruby"> @excluded_class_names ||= []</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="5"> + + + <code class="ruby"> @excluded_class_names.concat(type_names).uniq!</code> + </li> + + <li class="never" data-hits="" data-linenumber="6"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="7"> + <span class="hits">1</span> + + <code class="ruby"> module_function :exclude</code> + </li> + + <li class="never" data-hits="" data-linenumber="8"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="9"> + <span class="hits">1</span> + + <code class="ruby"> def excluded_class_names</code> + </li> + + <li class="covered" data-hits="12" data-linenumber="10"> + <span class="hits">12</span> + + <code class="ruby"> MenuRenderer.instance_variable_get(:@excluded_class_names)</code> + </li> + + <li class="never" data-hits="" data-linenumber="11"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="12"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="13"> + <span class="hits">1</span> + + <code class="ruby"> module_function :excluded_class_names</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="14"> + <span class="hits">1</span> + + <code class="ruby"> public :excluded_class_names</code> + </li> + + <li class="never" data-hits="" data-linenumber="15"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="16"> + <span class="hits">1</span> + + <code class="ruby"> def view=(val)</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="17"> + <span class="hits">5</span> + + <code class="ruby"> @view = val</code> + </li> + + <li class="never" data-hits="" data-linenumber="18"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="19"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="20"> + <span class="hits">1</span> + + <code class="ruby"> def view</code> + </li> + + <li class="covered" data-hits="52" data-linenumber="21"> + <span class="hits">52</span> + + <code class="ruby"> @view</code> + </li> + + <li class="never" data-hits="" data-linenumber="22"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="23"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="24"> + <span class="hits">1</span> + + <code class="ruby"> def additional_menu_features?</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="25"> + <span class="hits">5</span> + + <code class="ruby"> @additional_menu_features ||= (menu_renderer_module_name != &#39;MenuRenderer&#39; &amp;&amp; Object.const_defined?(menu_renderer_module_name))</code> + </li> + + <li class="never" data-hits="" data-linenumber="26"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="27"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="28"> + <span class="hits">1</span> + + <code class="ruby"> def menu_renderer_module_name</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="29"> + <span class="hits">5</span> + + <code class="ruby"> simple_name = self.class_name.to_s.sub(&#39;Page&#39;,&#39;&#39;)</code> + </li> + + <li class="covered" data-hits="5" data-linenumber="30"> + <span class="hits">5</span> + + <code class="ruby"> &quot;#{simple_name}MenuRenderer&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="31"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="32"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="33"> + <span class="hits">1</span> + + <code class="ruby"> def menu_renderer_modules</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="34"> + + + <code class="ruby"> [Object.const_get(menu_renderer_module_name)]</code> + </li> + + <li class="never" data-hits="" data-linenumber="35"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="36"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="37"> + <span class="hits">1</span> + + <code class="ruby"> def allowed_child_classes</code> + </li> + + <li class="covered" data-hits="12" data-linenumber="38"> + <span class="hits">12</span> + + <code class="ruby"> (allowed_children_cache.to_s.split(&#39;,&#39;) - Array(excluded_class_names)).map do |name|</code> + </li> + + <li class="covered" data-hits="24" data-linenumber="39"> + <span class="hits">24</span> + + <code class="ruby"> begin</code> + </li> + + <li class="covered" data-hits="24" data-linenumber="40"> + <span class="hits">24</span> + + <code class="ruby"> name.constantize</code> + </li> + + <li class="never" data-hits="" data-linenumber="41"> + + + <code class="ruby"> rescue LoadError, NameError =&gt; _</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="42"> + + + <code class="ruby"> nil</code> + </li> + + <li class="never" data-hits="" data-linenumber="43"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="12" data-linenumber="44"> + <span class="hits">12</span> + + <code class="ruby"> end.compact</code> + </li> + + <li class="never" data-hits="" data-linenumber="45"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="46"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="47"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="48"> + <span class="hits">1</span> + + <code class="ruby"> def default_child_item</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="49"> + <span class="hits">4</span> + + <code class="ruby"> menu_item(default_child)</code> + </li> + + <li class="never" data-hits="" data-linenumber="50"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="51"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="52"> + <span class="hits">1</span> + + <code class="ruby"> def separator_item</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="53"> + <span class="hits">4</span> + + <code class="ruby"> view.content_tag :li, &#39;&#39;, :class =&gt; &#39;separator&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="54"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="55"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="56"> + <span class="hits">1</span> + + <code class="ruby"> def child_items</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="57"> + <span class="hits">4</span> + + <code class="ruby"> (allowed_child_classes - [self.class.default_child]).map do |child|</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="58"> + <span class="hits">4</span> + + <code class="ruby"> menu_item(child)</code> + </li> + + <li class="never" data-hits="" data-linenumber="59"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="60"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="61"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="62"> + <span class="hits">1</span> + + <code class="ruby"> def menu_items</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="63"> + <span class="hits">4</span> + + <code class="ruby"> [default_child_item, separator_item] + child_items</code> + </li> + + <li class="never" data-hits="" data-linenumber="64"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="65"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="66"> + <span class="hits">1</span> + + <code class="ruby"> def menu_list</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="67"> + <span class="hits">4</span> + + <code class="ruby"> view.content_tag :ul, menu_items.join.html_safe, :class =&gt; &#39;menu&#39;, :id =&gt; &quot;allowed_children_#{id}&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="68"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="69"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="70"> + <span class="hits">1</span> + + <code class="ruby"> def remove_link</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="71"> + <span class="hits">4</span> + + <code class="ruby"> view.link_to view.image(&#39;minus&#39;) + &#39; &#39; + I18n.t(&#39;remove&#39;), view.remove_admin_page_url(self), :class =&gt; &quot;action&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="72"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="73"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="74"> + <span class="hits">1</span> + + <code class="ruby"> def remove_option</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="75"> + <span class="hits">4</span> + + <code class="ruby"> remove_link</code> + </li> + + <li class="never" data-hits="" data-linenumber="76"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="77"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="78"> + <span class="hits">1</span> + + <code class="ruby"> def add_child_disabled?</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="79"> + <span class="hits">4</span> + + <code class="ruby"> allowed_child_classes.size == 0</code> + </li> + + <li class="never" data-hits="" data-linenumber="80"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="81"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="82"> + <span class="hits">1</span> + + <code class="ruby"> def disabled_add_child_link</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="83"> + + + <code class="ruby"> view.content_tag :span, view.image(&#39;plus_disabled&#39;) + &#39; Add Child&#39;, :class =&gt; &#39;action disabled&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="84"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="85"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="86"> + <span class="hits">1</span> + + <code class="ruby"> def add_child_link</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="87"> + + + <code class="ruby"> view.link_to((view.image(&#39;plus&#39;) + &#39; Add Child&#39;), view.new_admin_page_child_path(self, :page_class =&gt; default_child.name), :class =&gt; &quot;action&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="88"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="89"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="90"> + <span class="hits">1</span> + + <code class="ruby"> def add_child_link_with_menu_hook</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="91"> + <span class="hits">4</span> + + <code class="ruby"> view.link_to((view.image(&#39;plus&#39;) + &#39; Add Child&#39;), &quot;#allowed_children_#{id}&quot;, :class =&gt; &quot;action dropdown&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="92"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="93"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="94"> + <span class="hits">1</span> + + <code class="ruby"> def add_child_menu</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="95"> + <span class="hits">4</span> + + <code class="ruby"> menu_list</code> + </li> + + <li class="never" data-hits="" data-linenumber="96"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="97"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="98"> + <span class="hits">1</span> + + <code class="ruby"> def add_child_link_with_menu</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="99"> + <span class="hits">4</span> + + <code class="ruby"> add_child_link_with_menu_hook + add_child_menu</code> + </li> + + <li class="never" data-hits="" data-linenumber="100"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="101"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="102"> + <span class="hits">1</span> + + <code class="ruby"> def add_child_option</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="103"> + <span class="hits">4</span> + + <code class="ruby"> if add_child_disabled?</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="104"> + + + <code class="ruby"> disabled_add_child_link</code> + </li> + + <li class="never" data-hits="" data-linenumber="105"> + + + <code class="ruby"> else</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="106"> + <span class="hits">4</span> + + <code class="ruby"> if allowed_child_classes.size == 1</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="107"> + + + <code class="ruby"> add_child_link</code> + </li> + + <li class="never" data-hits="" data-linenumber="108"> + + + <code class="ruby"> else</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="109"> + <span class="hits">4</span> + + <code class="ruby"> add_child_link_with_menu</code> + </li> + + <li class="never" data-hits="" data-linenumber="110"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="111"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="112"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="113"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="114"> + <span class="hits">1</span> + + <code class="ruby"> private</code> + </li> + + <li class="never" data-hits="" data-linenumber="115"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="116"> + <span class="hits">1</span> + + <code class="ruby"> def clean_page_description(page_class)</code> + </li> + + <li class="covered" data-hits="8" data-linenumber="117"> + <span class="hits">8</span> + + <code class="ruby"> page_class.description.to_s.strip.gsub(/\t/,&#39;&#39;).gsub(/\s+/,&#39; &#39;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="118"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="119"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="120"> + <span class="hits">1</span> + + <code class="ruby"> def menu_item(child_class)</code> + </li> + + <li class="covered" data-hits="8" data-linenumber="121"> + <span class="hits">8</span> + + <code class="ruby"> view.content_tag(:li, menu_link(child_class))</code> + </li> + + <li class="never" data-hits="" data-linenumber="122"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="123"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="124"> + <span class="hits">1</span> + + <code class="ruby"> def menu_link(child_class)</code> + </li> + + <li class="covered" data-hits="8" data-linenumber="125"> + <span class="hits">8</span> + + <code class="ruby"> title = clean_page_description(child_class)</code> + </li> + + <li class="covered" data-hits="8" data-linenumber="126"> + <span class="hits">8</span> + + <code class="ruby"> path = view.new_admin_page_child_path(self, :page_class =&gt; child_class.name)</code> + </li> + + <li class="covered" data-hits="8" data-linenumber="127"> + <span class="hits">8</span> + + <code class="ruby"> text = link_text_for_child_class(child_class.name)</code> + </li> + + <li class="covered" data-hits="8" data-linenumber="128"> + <span class="hits">8</span> + + <code class="ruby"> view.link_to(text, path, :title =&gt; title)</code> + </li> + + <li class="never" data-hits="" data-linenumber="129"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="130"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="131"> + <span class="hits">1</span> + + <code class="ruby"> def link_text_for_child_class(given_class_name)</code> + </li> + + <li class="covered" data-hits="8" data-linenumber="132"> + <span class="hits">8</span> + + <code class="ruby"> translation_key = if given_class_name == &#39;Page&#39; || given_class_name.blank?</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="133"> + <span class="hits">4</span> + + <code class="ruby"> &#39;normal_page&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="134"> + + + <code class="ruby"> else</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="135"> + <span class="hits">4</span> + + <code class="ruby"> given_class_name.sub(&#39;Page&#39;,&#39;&#39;).underscore</code> + </li> + + <li class="never" data-hits="" data-linenumber="136"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="8" data-linenumber="137"> + <span class="hits">8</span> + + <code class="ruby"> fallback = given_class_name == &#39;Page&#39; ? &#39;Page&#39; : given_class_name.sub(&#39;Page&#39;,&#39;&#39;).titleize</code> + </li> + + <li class="covered" data-hits="8" data-linenumber="138"> + <span class="hits">8</span> + + <code class="ruby"> I18n.t(translation_key, :default =&gt; fallback)</code> + </li> + + <li class="never" data-hits="" data-linenumber="139"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="140"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="802c290d3237e413d582c6e3df59d0b1a783c364"> + <div class="header"> + <h3>app/models/page_context.rb</h3> + <h4><span class="red">59.38 %</span> covered</h4> + <div> + <b>32</b> relevant lines. + <span class="green"><b>19</b> lines covered</span> and + <span class="red"><b>13</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">class PageContext &lt; Radius::Context</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby"> attr_reader :page</code> + </li> + + <li class="never" data-hits="" data-linenumber="4"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="5"> + <span class="hits">1</span> + + <code class="ruby"> def initialize(page)</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="6"> + <span class="hits">2</span> + + <code class="ruby"> super</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="7"> + <span class="hits">2</span> + + <code class="ruby"> @page = page</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="8"> + <span class="hits">2</span> + + <code class="ruby"> globals.page = @page</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="9"> + <span class="hits">2</span> + + <code class="ruby"> page.tags.each do |name|</code> + </li> + + <li class="covered" data-hits="162" data-linenumber="10"> + <span class="hits">162</span> + + <code class="ruby"> define_tag(name) { |tag_binding| page.render_tag(name, tag_binding) }</code> + </li> + + <li class="never" data-hits="" data-linenumber="11"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="12"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="13"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="14"> + <span class="hits">1</span> + + <code class="ruby"> def dup</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="15"> + <span class="hits">1</span> + + <code class="ruby"> rv = self.class.new(page)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="16"> + <span class="hits">1</span> + + <code class="ruby"> rv.globals = globals.dup</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="17"> + <span class="hits">1</span> + + <code class="ruby"> rv.definitions = definitions.dup</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="18"> + <span class="hits">1</span> + + <code class="ruby"> rv</code> + </li> + + <li class="never" data-hits="" data-linenumber="19"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="20"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="21"> + <span class="hits">1</span> + + <code class="ruby"> def render_tag(name, attributes = {}, &amp;block)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="22"> + + + <code class="ruby"> binding = @tag_binding_stack.last</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="23"> + + + <code class="ruby"> locals = binding ? binding.locals : globals</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="24"> + + + <code class="ruby"> set_process_variables(locals.page)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="25"> + + + <code class="ruby"> super</code> + </li> + + <li class="never" data-hits="" data-linenumber="26"> + + + <code class="ruby"> rescue Exception =&gt; e</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="27"> + + + <code class="ruby"> raise e if raise_errors?</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="28"> + + + <code class="ruby"> @tag_binding_stack.pop unless @tag_binding_stack.last == binding</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="29"> + + + <code class="ruby"> render_error_message(e.message)</code> + </li> + + <li class="never" data-hits="" data-linenumber="30"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="31"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="32"> + <span class="hits">1</span> + + <code class="ruby"> def tag_missing(name, attributes = {}, &amp;block)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="33"> + + + <code class="ruby"> super</code> + </li> + + <li class="never" data-hits="" data-linenumber="34"> + + + <code class="ruby"> rescue Radius::UndefinedTagError =&gt; e</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="35"> + + + <code class="ruby"> raise StandardTags::TagError.new(e.message)</code> + </li> + + <li class="never" data-hits="" data-linenumber="36"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="37"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="38"> + <span class="hits">1</span> + + <code class="ruby"> private</code> + </li> + + <li class="never" data-hits="" data-linenumber="39"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="40"> + <span class="hits">1</span> + + <code class="ruby"> def render_error_message(message)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="41"> + + + <code class="ruby"> &quot;&lt;div&gt;&lt;strong&gt;#{message}&lt;/strong&gt;&lt;/div&gt;&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="42"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="43"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="44"> + <span class="hits">1</span> + + <code class="ruby"> def set_process_variables(page)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="45"> + + + <code class="ruby"> page.request ||= @page.request</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="46"> + + + <code class="ruby"> page.response ||= @page.response</code> + </li> + + <li class="never" data-hits="" data-linenumber="47"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="48"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="49"> + <span class="hits">1</span> + + <code class="ruby"> def raise_errors?</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="50"> + + + <code class="ruby"> Rails.env != &#39;production&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="51"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="52"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="53"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="ee99abb95d276df654be743872e18cebe9cd7a76"> + <div class="header"> + <h3>app/models/page_field.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <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> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">class PageField &lt; ActiveRecord::Base</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="2"> + <span class="hits">1</span> + + <code class="ruby"> attr_accessible :name, :content</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby"> validates_presence_of :name</code> + </li> + + <li class="never" data-hits="" data-linenumber="4"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="a305f6d4632c6314af7cf73ec29de843155d1b7c"> + <div class="header"> + <h3>app/models/page_part.rb</h3> + <h4><span class="yellow">90.0 %</span> covered</h4> + <div> + <b>10</b> relevant lines. + <span class="green"><b>9</b> lines covered</span> and + <span class="red"><b>1</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">class PagePart &lt; ActiveRecord::Base</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="2"> + <span class="hits">1</span> + + <code class="ruby"> attr_accessible :name, :filter_id, :content</code> + </li> + + <li class="never" data-hits="" data-linenumber="3"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="4"> + + + <code class="ruby"> # Default Order</code> + </li> + + <li class="covered" data-hits="37" data-linenumber="5"> + <span class="hits">37</span> + + <code class="ruby"> default_scope {order(&quot;name&quot;)}</code> + </li> + + <li class="never" data-hits="" data-linenumber="6"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="7"> + + + <code class="ruby"> # Associations</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="8"> + <span class="hits">1</span> + + <code class="ruby"> belongs_to :page</code> + </li> + + <li class="never" data-hits="" data-linenumber="9"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="10"> + + + <code class="ruby"> # Validations</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="11"> + <span class="hits">1</span> + + <code class="ruby"> validates_presence_of :name</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="12"> + <span class="hits">1</span> + + <code class="ruby"> validates_length_of :name, :maximum =&gt; 100</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="13"> + <span class="hits">1</span> + + <code class="ruby"> validates_length_of :filter_id, :maximum =&gt; 25, :allow_nil =&gt; true</code> + </li> + + <li class="never" data-hits="" data-linenumber="14"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="15"> + <span class="hits">1</span> + + <code class="ruby"> object_id_attr :filter, TextFilter</code> + </li> + + <li class="never" data-hits="" data-linenumber="16"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="17"> + <span class="hits">1</span> + + <code class="ruby"> def after_initialize</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="18"> + + + <code class="ruby"> self.filter_id ||= TrustyCms::Config[&#39;defaults.page.filter&#39;] if new_record?</code> + </li> + + <li class="never" data-hits="" data-linenumber="19"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="20"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + <div class="source_table" id="7388d43ba91c2a28d73545a6809e9d998ff37d21"> <div class="header"> <h3>app/models/status.rb</h3> - <h4><span class="red">77.78 %</span> covered</h4> + <h4><span class="green">100.0 %</span> covered</h4> <div> <b>18</b> relevant lines. - <span class="green"><b>14</b> lines covered</span> and - <span class="red"><b>4</b> lines missed.</span> + <span class="green"><b>18</b> lines covered</span> and + <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> @@ -2868,12 +10398,12 @@ <span class="hits">1</span> <code class="ruby"> def symbol</code> </li> - <li class="covered" data-hits="8" data-linenumber="10"> - <span class="hits">8</span> + <li class="covered" data-hits="85" data-linenumber="10"> + <span class="hits">85</span> <code class="ruby"> @name.to_s.downcase.intern</code> </li> <li class="never" data-hits="" data-linenumber="11"> @@ -2892,12 +10422,12 @@ <span class="hits">1</span> <code class="ruby"> def self.[](value)</code> </li> - <li class="covered" data-hits="10" data-linenumber="14"> - <span class="hits">10</span> + <li class="covered" data-hits="112" data-linenumber="14"> + <span class="hits">112</span> <code class="ruby"> @@statuses.find { |status| status.symbol == value.to_s.downcase.intern }</code> </li> <li class="never" data-hits="" data-linenumber="15"> @@ -2916,13 +10446,13 @@ <span class="hits">1</span> <code class="ruby"> def self.find(id)</code> </li> - <li class="missed" data-hits="0" data-linenumber="18"> + <li class="covered" data-hits="34" data-linenumber="18"> + <span class="hits">34</span> - <code class="ruby"> @@statuses.find { |status| status.id.to_s == id.to_s }</code> </li> <li class="never" data-hits="" data-linenumber="19"> @@ -2940,13 +10470,13 @@ <span class="hits">1</span> <code class="ruby"> def self.find_all</code> </li> - <li class="missed" data-hits="0" data-linenumber="22"> + <li class="covered" data-hits="11" data-linenumber="22"> + <span class="hits">11</span> - <code class="ruby"> @@statuses.dup</code> </li> <li class="never" data-hits="" data-linenumber="23"> @@ -2964,13 +10494,13 @@ <span class="hits">1</span> <code class="ruby"> def self.selectable</code> </li> - <li class="missed" data-hits="0" data-linenumber="26"> + <li class="covered" data-hits="11" data-linenumber="26"> + <span class="hits">11</span> - <code class="ruby"> find_all - [self[&#39;Scheduled&#39;]]</code> </li> <li class="never" data-hits="" data-linenumber="27"> @@ -2988,13 +10518,13 @@ <span class="hits">1</span> <code class="ruby"> def self.selectable_values</code> </li> - <li class="missed" data-hits="0" data-linenumber="30"> + <li class="covered" data-hits="6" data-linenumber="30"> + <span class="hits">6</span> - <code class="ruby"> self.selectable.map(&amp;:name)</code> </li> <li class="never" data-hits="" data-linenumber="31"> @@ -3064,18 +10594,252 @@ </ol> </pre> </div> + <div class="source_table" id="a3d0e95dccc6cc402608c949f61537589888f7d7"> + <div class="header"> + <h3>app/models/text_filter.rb</h3> + <h4><span class="red">63.16 %</span> covered</h4> + <div> + <b>19</b> relevant lines. + <span class="green"><b>12</b> lines covered</span> and + <span class="red"><b>7</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">class TextFilter</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="2"> + <span class="hits">1</span> + + <code class="ruby"> include Simpleton</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby"> include Annotatable</code> + </li> + + <li class="never" data-hits="" data-linenumber="4"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="5"> + <span class="hits">1</span> + + <code class="ruby"> annotate :filter_name, :description</code> + </li> + + <li class="never" data-hits="" data-linenumber="6"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="7"> + <span class="hits">1</span> + + <code class="ruby"> def filter(text)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="8"> + <span class="hits">1</span> + + <code class="ruby"> text</code> + </li> + + <li class="never" data-hits="" data-linenumber="9"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="10"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="11"> + <span class="hits">1</span> + + <code class="ruby"> class &lt;&lt; self</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="12"> + <span class="hits">1</span> + + <code class="ruby"> def inherited(subclass)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="13"> + + + <code class="ruby"> subclass.filter_name = subclass.name.to_name(&#39;Filter&#39;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="14"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="15"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="16"> + <span class="hits">1</span> + + <code class="ruby"> def filter(text)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="17"> + + + <code class="ruby"> instance.filter(text)</code> + </li> + + <li class="never" data-hits="" data-linenumber="18"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="19"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="20"> + <span class="hits">1</span> + + <code class="ruby"> def description_file(filename)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="21"> + + + <code class="ruby"> text = File.read(filename) rescue &quot;&quot;</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="22"> + + + <code class="ruby"> self.description text</code> + </li> + + <li class="never" data-hits="" data-linenumber="23"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="24"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="25"> + <span class="hits">1</span> + + <code class="ruby"> def descendants_names</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="26"> + + + <code class="ruby"> descendants.map { |s| s.filter_name }.sort</code> + </li> + + <li class="never" data-hits="" data-linenumber="27"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="28"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="29"> + <span class="hits">1</span> + + <code class="ruby"> def find_descendant(filter_name)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="30"> + + + <code class="ruby"> descendants.each do |s|</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="31"> + + + <code class="ruby"> return s if s.filter_name == filter_name</code> + </li> + + <li class="never" data-hits="" data-linenumber="32"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="33"> + + + <code class="ruby"> nil</code> + </li> + + <li class="never" data-hits="" data-linenumber="34"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="35"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="36"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + <div class="source_table" id="3245bdc6bf68c4799ba1a1df23d11fe7c154286c"> <div class="header"> <h3>app/models/user.rb</h3> - <h4><span class="red">75.0 %</span> covered</h4> + <h4><span class="yellow">82.69 %</span> covered</h4> <div> <b>52</b> relevant lines. - <span class="green"><b>39</b> lines covered</span> and - <span class="red"><b>13</b> lines missed.</span> + <span class="green"><b>43</b> lines covered</span> and + <span class="red"><b>9</b> lines missed.</span> </div> </div> <pre> <ol> @@ -3120,12 +10884,12 @@ <code class="ruby"> # Default Order</code> </li> - <li class="covered" data-hits="47" data-linenumber="8"> - <span class="hits">47</span> + <li class="covered" data-hits="28" data-linenumber="8"> + <span class="hits">28</span> <code class="ruby"> default_scope {order(&quot;name&quot;)}</code> </li> <li class="never" data-hits="" data-linenumber="9"> @@ -3258,13 +11022,13 @@ <span class="hits">1</span> <code class="ruby"> def has_role?(role)</code> </li> - <li class="missed" data-hits="0" data-linenumber="31"> + <li class="covered" data-hits="140" data-linenumber="31"> + <span class="hits">140</span> - <code class="ruby"> respond_to?(&quot;#{role}?&quot;) &amp;&amp; send(&quot;#{role}?&quot;)</code> </li> <li class="never" data-hits="" data-linenumber="32"> @@ -3282,12 +11046,12 @@ <span class="hits">1</span> <code class="ruby"> def sha1(phrase)</code> </li> - <li class="covered" data-hits="11" data-linenumber="35"> - <span class="hits">11</span> + <li class="covered" data-hits="20" data-linenumber="35"> + <span class="hits">20</span> <code class="ruby"> Digest::SHA1.hexdigest(&quot;--#{salt}--#{phrase}--&quot;)</code> </li> <li class="never" data-hits="" data-linenumber="36"> @@ -3306,19 +11070,19 @@ <span class="hits">1</span> <code class="ruby"> def self.authenticate(login_or_email, password)</code> </li> - <li class="missed" data-hits="0" data-linenumber="39"> + <li class="covered" data-hits="21" data-linenumber="39"> + <span class="hits">21</span> - <code class="ruby"> user = where([&quot;login = ? OR email = ?&quot;, login_or_email, login_or_email]).first</code> </li> - <li class="missed" data-hits="0" data-linenumber="40"> + <li class="covered" data-hits="21" data-linenumber="40"> + <span class="hits">21</span> - <code class="ruby"> user if user &amp;&amp; user.authenticated?(password)</code> </li> <li class="never" data-hits="" data-linenumber="41"> @@ -3336,13 +11100,13 @@ <span class="hits">1</span> <code class="ruby"> def authenticated?(password)</code> </li> - <li class="missed" data-hits="0" data-linenumber="44"> + <li class="covered" data-hits="20" data-linenumber="44"> + <span class="hits">20</span> - <code class="ruby"> self.password == sha1(password)</code> </li> <li class="never" data-hits="" data-linenumber="45"> @@ -3384,12 +11148,12 @@ <span class="hits">1</span> <code class="ruby"> def confirm_password?</code> </li> - <li class="covered" data-hits="11" data-linenumber="52"> - <span class="hits">11</span> + <li class="covered" data-hits="3" data-linenumber="52"> + <span class="hits">3</span> <code class="ruby"> @confirm_password</code> </li> <li class="never" data-hits="" data-linenumber="53"> @@ -3432,13 +11196,13 @@ <span class="hits">1</span> <code class="ruby"> def forget_me</code> </li> - <li class="missed" data-hits="0" data-linenumber="60"> + <li class="covered" data-hits="1" data-linenumber="60"> + <span class="hits">1</span> - <code class="ruby"> update_attribute(:session_token, nil)</code> </li> <li class="never" data-hits="" data-linenumber="61"> @@ -3456,13 +11220,13 @@ <span class="hits">1</span> <code class="ruby"> def send_password_reset</code> </li> - <li class="covered" data-hits="3" data-linenumber="64"> - <span class="hits">3</span> + <li class="missed" data-hits="0" data-linenumber="64"> + <code class="ruby"> generate_token(:password_reset_token)</code> </li> <li class="missed" data-hits="0" data-linenumber="65"> @@ -3489,35 +11253,35 @@ </li> <li class="covered" data-hits="1" data-linenumber="69"> <span class="hits">1</span> - <code class="ruby"> def generate_token(column)</code> + <code class="ruby"> private</code> </li> - <li class="covered" data-hits="10" data-linenumber="70"> - <span class="hits">10</span> + <li class="never" data-hits="" data-linenumber="70"> - <code class="ruby"> self[column] = SecureRandom.urlsafe_base64 if User.exists?(column =&gt; self[column])</code> + + <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="71"> + <li class="covered" data-hits="1" data-linenumber="71"> + <span class="hits">1</span> - - <code class="ruby"> end</code> + <code class="ruby"> def generate_token(column)</code> </li> - <li class="never" data-hits="" data-linenumber="72"> + <li class="missed" data-hits="0" data-linenumber="72"> - <code class="ruby"></code> + <code class="ruby"> self[column] = SecureRandom.urlsafe_base64 if User.exists?(column =&gt; self[column])</code> </li> - <li class="covered" data-hits="1" data-linenumber="73"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="73"> - <code class="ruby"> private</code> + + <code class="ruby"> end</code> </li> <li class="never" data-hits="" data-linenumber="74"> @@ -3528,12 +11292,12 @@ <span class="hits">1</span> <code class="ruby"> def validate_length_of_password?</code> </li> - <li class="covered" data-hits="11" data-linenumber="76"> - <span class="hits">11</span> + <li class="covered" data-hits="3" data-linenumber="76"> + <span class="hits">3</span> <code class="ruby"> new_record? or not password.to_s.empty?</code> </li> <li class="never" data-hits="" data-linenumber="77"> @@ -3558,19 +11322,19 @@ <span class="hits">1</span> <code class="ruby"> def encrypt_password</code> </li> - <li class="covered" data-hits="11" data-linenumber="81"> - <span class="hits">11</span> + <li class="missed" data-hits="0" data-linenumber="81"> + <code class="ruby"> self.salt = Digest::SHA1.hexdigest(&quot;--#{Time.now}--#{login}--sweet harmonious biscuits--&quot;)</code> </li> - <li class="covered" data-hits="11" data-linenumber="82"> - <span class="hits">11</span> + <li class="missed" data-hits="0" data-linenumber="82"> + <code class="ruby"> self.password = sha1(password)</code> </li> <li class="never" data-hits="" data-linenumber="83"> @@ -3594,31 +11358,31 @@ <span class="hits">1</span> <code class="ruby"> def encrypt_password_unless_empty_or_unchanged</code> </li> - <li class="missed" data-hits="0" data-linenumber="87"> + <li class="covered" data-hits="2" data-linenumber="87"> + <span class="hits">2</span> - <code class="ruby"> user = self.class.find(self.id)</code> </li> - <li class="missed" data-hits="0" data-linenumber="88"> + <li class="covered" data-hits="2" data-linenumber="88"> + <span class="hits">2</span> - <code class="ruby"> case password</code> </li> <li class="never" data-hits="" data-linenumber="89"> <code class="ruby"> when &#39;&#39;</code> </li> - <li class="missed" data-hits="0" data-linenumber="90"> + <li class="covered" data-hits="1" data-linenumber="90"> + <span class="hits">1</span> - <code class="ruby"> self.password = user.password</code> </li> <li class="never" data-hits="" data-linenumber="91"> @@ -3667,15 +11431,15 @@ </div> <div class="source_table" id="224090690cd46a1b82b33b9876817d1d65b88e42"> <div class="header"> <h3>app/models/user_action_observer.rb</h3> - <h4><span class="green">92.86 %</span> covered</h4> + <h4><span class="green">100.0 %</span> covered</h4> <div> <b>14</b> relevant lines. - <span class="green"><b>13</b> lines covered</span> and - <span class="red"><b>1</b> lines missed.</span> + <span class="green"><b>14</b> lines covered</span> and + <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> @@ -3702,12 +11466,12 @@ <span class="hits">1</span> <code class="ruby"> def current_user=(user)</code> </li> - <li class="covered" data-hits="9" data-linenumber="5"> - <span class="hits">9</span> + <li class="covered" data-hits="151" data-linenumber="5"> + <span class="hits">151</span> <code class="ruby"> self.class.current_user = user</code> </li> <li class="never" data-hits="" data-linenumber="6"> @@ -3720,12 +11484,12 @@ <span class="hits">1</span> <code class="ruby"> def self.current_user=(user)</code> </li> - <li class="covered" data-hits="9" data-linenumber="8"> - <span class="hits">9</span> + <li class="covered" data-hits="151" data-linenumber="8"> + <span class="hits">151</span> <code class="ruby"> Thread.current[:current_user] = user</code> </li> <li class="never" data-hits="" data-linenumber="9"> @@ -3744,12 +11508,12 @@ <span class="hits">1</span> <code class="ruby"> def current_user</code> </li> - <li class="covered" data-hits="9" data-linenumber="12"> - <span class="hits">9</span> + <li class="covered" data-hits="10" data-linenumber="12"> + <span class="hits">10</span> <code class="ruby"> self.class.current_user</code> </li> <li class="never" data-hits="" data-linenumber="13"> @@ -3762,12 +11526,12 @@ <span class="hits">1</span> <code class="ruby"> def self.current_user</code> </li> - <li class="covered" data-hits="9" data-linenumber="15"> - <span class="hits">9</span> + <li class="covered" data-hits="10" data-linenumber="15"> + <span class="hits">10</span> <code class="ruby"> Thread.current[:current_user]</code> </li> <li class="never" data-hits="" data-linenumber="16"> @@ -3786,12 +11550,12 @@ <span class="hits">1</span> <code class="ruby"> def before_create(model)</code> </li> - <li class="covered" data-hits="9" data-linenumber="19"> - <span class="hits">9</span> + <li class="covered" data-hits="8" data-linenumber="19"> + <span class="hits">8</span> <code class="ruby"> model.created_by = self.current_user</code> </li> <li class="never" data-hits="" data-linenumber="20"> @@ -3810,13 +11574,13 @@ <span class="hits">1</span> <code class="ruby"> def before_update(model)</code> </li> - <li class="missed" data-hits="0" data-linenumber="23"> + <li class="covered" data-hits="2" data-linenumber="23"> + <span class="hits">2</span> - <code class="ruby"> model.updated_by = self.current_user</code> </li> <li class="never" data-hits="" data-linenumber="24"> @@ -3835,15 +11599,15 @@ </div> <div class="source_table" id="d68b3b291e170af9809ca2750a36de47a6d1f510"> <div class="header"> <h3>lib/login_system.rb</h3> - <h4><span class="red">39.47 %</span> covered</h4> + <h4><span class="red">78.95 %</span> covered</h4> <div> <b>76</b> relevant lines. - <span class="green"><b>30</b> lines covered</span> and - <span class="red"><b>46</b> lines missed.</span> + <span class="green"><b>60</b> lines covered</span> and + <span class="red"><b>16</b> lines missed.</span> </div> </div> <pre> <ol> @@ -3924,12 +11688,12 @@ <span class="hits">1</span> <code class="ruby"> def current_user</code> </li> - <li class="covered" data-hits="18" data-linenumber="14"> - <span class="hits">18</span> + <li class="covered" data-hits="967" data-linenumber="14"> + <span class="hits">967</span> <code class="ruby"> @current_user ||= (login_from_session || login_from_cookie || login_from_http)</code> </li> <li class="never" data-hits="" data-linenumber="15"> @@ -3948,55 +11712,55 @@ <span class="hits">1</span> <code class="ruby"> def current_user=(value=nil)</code> </li> - <li class="missed" data-hits="0" data-linenumber="18"> + <li class="covered" data-hits="22" data-linenumber="18"> + <span class="hits">22</span> - <code class="ruby"> if value &amp;&amp; value.is_a?(User)</code> </li> - <li class="missed" data-hits="0" data-linenumber="19"> + <li class="covered" data-hits="19" data-linenumber="19"> + <span class="hits">19</span> - <code class="ruby"> @current_user = value</code> </li> - <li class="missed" data-hits="0" data-linenumber="20"> + <li class="covered" data-hits="19" data-linenumber="20"> + <span class="hits">19</span> - <code class="ruby"> session[&#39;user_id&#39;] = value.id</code> </li> <li class="never" data-hits="" data-linenumber="21"> <code class="ruby"> else</code> </li> - <li class="missed" data-hits="0" data-linenumber="22"> + <li class="covered" data-hits="3" data-linenumber="22"> + <span class="hits">3</span> - <code class="ruby"> @current_user = nil</code> </li> - <li class="missed" data-hits="0" data-linenumber="23"> + <li class="covered" data-hits="3" data-linenumber="23"> + <span class="hits">3</span> - <code class="ruby"> session[&#39;user_id&#39;] = nil</code> </li> <li class="never" data-hits="" data-linenumber="24"> <code class="ruby"> end</code> </li> - <li class="missed" data-hits="0" data-linenumber="25"> + <li class="covered" data-hits="22" data-linenumber="25"> + <span class="hits">22</span> - <code class="ruby"> @current_user</code> </li> <li class="never" data-hits="" data-linenumber="26"> @@ -4020,67 +11784,67 @@ <code class="ruby"> #puts _process_action_callbacks.map(&amp;:filter)</code> </li> - <li class="missed" data-hits="0" data-linenumber="30"> + <li class="covered" data-hits="81" data-linenumber="30"> + <span class="hits">81</span> - <code class="ruby"> if current_user</code> </li> - <li class="missed" data-hits="0" data-linenumber="31"> + <li class="covered" data-hits="58" data-linenumber="31"> + <span class="hits">58</span> - <code class="ruby"> session[&#39;user_id&#39;] = current_user.id</code> </li> - <li class="missed" data-hits="0" data-linenumber="32"> + <li class="covered" data-hits="58" data-linenumber="32"> + <span class="hits">58</span> - <code class="ruby"> true</code> </li> <li class="never" data-hits="" data-linenumber="33"> <code class="ruby"> else</code> </li> - <li class="missed" data-hits="0" data-linenumber="34"> + <li class="covered" data-hits="23" data-linenumber="34"> + <span class="hits">23</span> - <code class="ruby"> session[:return_to] = request.original_url</code> </li> - <li class="missed" data-hits="0" data-linenumber="35"> + <li class="covered" data-hits="23" data-linenumber="35"> + <span class="hits">23</span> - <code class="ruby"> respond_to do |format|</code> </li> - <li class="missed" data-hits="0" data-linenumber="36"> + <li class="covered" data-hits="46" data-linenumber="36"> + <span class="hits">46</span> - <code class="ruby"> format.html { redirect_to login_url }</code> </li> - <li class="missed" data-hits="0" data-linenumber="37"> + <li class="covered" data-hits="23" data-linenumber="37"> + <span class="hits">23</span> - <code class="ruby"> format.any(:xml,:json) { request_http_basic_authentication }</code> </li> <li class="never" data-hits="" data-linenumber="38"> <code class="ruby"> end</code> </li> - <li class="missed" data-hits="0" data-linenumber="39"> + <li class="covered" data-hits="23" data-linenumber="39"> + <span class="hits">23</span> - <code class="ruby"> false</code> </li> <li class="never" data-hits="" data-linenumber="40"> @@ -4110,25 +11874,25 @@ <code class="ruby"> #puts _process_action_callbacks.map(&amp;:filter)</code> </li> - <li class="missed" data-hits="0" data-linenumber="45"> + <li class="covered" data-hits="81" data-linenumber="45"> + <span class="hits">81</span> - <code class="ruby"> action = action_name.to_s.intern</code> </li> - <li class="missed" data-hits="0" data-linenumber="46"> + <li class="covered" data-hits="81" data-linenumber="46"> + <span class="hits">81</span> - <code class="ruby"> if user_has_access_to_action?(action)</code> </li> - <li class="missed" data-hits="0" data-linenumber="47"> + <li class="covered" data-hits="81" data-linenumber="47"> + <span class="hits">81</span> - <code class="ruby"> true</code> </li> <li class="never" data-hits="" data-linenumber="48"> @@ -4200,13 +11964,13 @@ <span class="hits">1</span> <code class="ruby"> def user_has_access_to_action?(action)</code> </li> - <li class="missed" data-hits="0" data-linenumber="60"> + <li class="covered" data-hits="81" data-linenumber="60"> + <span class="hits">81</span> - <code class="ruby"> self.class.user_has_access_to_action?(current_user, action, self)</code> </li> <li class="never" data-hits="" data-linenumber="61"> @@ -4224,14 +11988,14 @@ <span class="hits">1</span> <code class="ruby"> def login_from_session</code> </li> - <li class="covered" data-hits="36" data-linenumber="64"> - <span class="hits">36</span> + <li class="covered" data-hits="614" data-linenumber="64"> + <span class="hits">614</span> - <code class="ruby"> User.find(session[&#39;user_id&#39;]) rescue nil</code> + <code class="ruby"> User.unscoped.find(session[&#39;user_id&#39;]) rescue nil</code> </li> <li class="never" data-hits="" data-linenumber="65"> @@ -4248,12 +12012,12 @@ <span class="hits">1</span> <code class="ruby"> def login_from_cookie</code> </li> - <li class="covered" data-hits="18" data-linenumber="68"> - <span class="hits">18</span> + <li class="covered" data-hits="276" data-linenumber="68"> + <span class="hits">276</span> <code class="ruby"> if !cookies[:session_token].blank? &amp;&amp; user = User.find_by_session_token(cookies[:session_token]) # don&#39;t find by empty value</code> </li> <li class="missed" data-hits="0" data-linenumber="69"> @@ -4296,12 +12060,12 @@ <span class="hits">1</span> <code class="ruby"> def login_from_http</code> </li> - <li class="covered" data-hits="18" data-linenumber="76"> - <span class="hits">18</span> + <li class="covered" data-hits="276" data-linenumber="76"> + <span class="hits">276</span> <code class="ruby"> if [Mime::XML, Mime::JSON].include?(request.format)</code> </li> <li class="missed" data-hits="0" data-linenumber="77"> @@ -4374,18 +12138,18 @@ <span class="hits">1</span> <code class="ruby"> def no_login_required</code> </li> - <li class="covered" data-hits="1" data-linenumber="89"> - <span class="hits">1</span> + <li class="covered" data-hits="2" data-linenumber="89"> + <span class="hits">2</span> <code class="ruby"> skip_before_filter :authenticate</code> </li> - <li class="covered" data-hits="1" data-linenumber="90"> - <span class="hits">1</span> + <li class="covered" data-hits="2" data-linenumber="90"> + <span class="hits">2</span> <code class="ruby"> skip_before_filter :authorize</code> </li> <li class="never" data-hits="" data-linenumber="91"> @@ -4470,43 +12234,43 @@ <span class="hits">1</span> <code class="ruby"> def only_allow_access_to(*args)</code> </li> - <li class="missed" data-hits="0" data-linenumber="105"> + <li class="covered" data-hits="4" data-linenumber="105"> + <span class="hits">4</span> - <code class="ruby"> options = {}</code> </li> - <li class="missed" data-hits="0" data-linenumber="106"> + <li class="covered" data-hits="4" data-linenumber="106"> + <span class="hits">4</span> - <code class="ruby"> options = args.pop.dup if args.last.kind_of?(Hash)</code> </li> - <li class="missed" data-hits="0" data-linenumber="107"> + <li class="covered" data-hits="4" data-linenumber="107"> + <span class="hits">4</span> - <code class="ruby"> options.symbolize_keys!</code> </li> - <li class="missed" data-hits="0" data-linenumber="108"> + <li class="covered" data-hits="23" data-linenumber="108"> + <span class="hits">23</span> - <code class="ruby"> actions = args.map { |a| a.to_s.intern }</code> </li> - <li class="missed" data-hits="0" data-linenumber="109"> + <li class="covered" data-hits="4" data-linenumber="109"> + <span class="hits">4</span> - <code class="ruby"> actions.each do |action|</code> </li> - <li class="missed" data-hits="0" data-linenumber="110"> + <li class="covered" data-hits="19" data-linenumber="110"> + <span class="hits">19</span> - <code class="ruby"> controller_permissions[action] = options</code> </li> <li class="never" data-hits="" data-linenumber="111"> @@ -4530,13 +12294,13 @@ <span class="hits">1</span> <code class="ruby"> def controller_permissions</code> </li> - <li class="missed" data-hits="0" data-linenumber="115"> + <li class="covered" data-hits="286" data-linenumber="115"> + <span class="hits">286</span> - <code class="ruby"> @controller_permissions ||= Hash.new { |h,k| h[k.to_s.intern] = Hash.new }</code> </li> <li class="never" data-hits="" data-linenumber="116"> @@ -4554,13 +12318,13 @@ <span class="hits">1</span> <code class="ruby"> def user_has_access_to_action?(user, action, instance=new)</code> </li> - <li class="missed" data-hits="0" data-linenumber="119"> + <li class="covered" data-hits="256" data-linenumber="119"> + <span class="hits">256</span> - <code class="ruby"> permissions = controller_permissions[action.to_s.intern]</code> </li> <li class="never" data-hits="" data-linenumber="120"> @@ -4572,19 +12336,19 @@ <code class="ruby"> when allowed_roles = permissions[:when]</code> </li> - <li class="missed" data-hits="0" data-linenumber="122"> + <li class="covered" data-hits="78" data-linenumber="122"> + <span class="hits">78</span> - <code class="ruby"> allowed_roles = [allowed_roles].flatten</code> </li> - <li class="missed" data-hits="0" data-linenumber="123"> + <li class="covered" data-hits="218" data-linenumber="123"> + <span class="hits">218</span> - <code class="ruby"> allowed_roles.any? { |role| user.has_role?(role) }</code> </li> <li class="never" data-hits="" data-linenumber="124"> @@ -4602,19 +12366,19 @@ <code class="ruby"> else</code> </li> - <li class="missed" data-hits="0" data-linenumber="127"> + <li class="covered" data-hits="178" data-linenumber="127"> + <span class="hits">178</span> - <code class="ruby"> true</code> </li> - <li class="missed" data-hits="0" data-linenumber="128"> + <li class="covered" data-hits="256" data-linenumber="128"> + <span class="hits">256</span> - <code class="ruby"> end</code> </li> <li class="never" data-hits="" data-linenumber="129"> @@ -4636,784 +12400,1792 @@ </ol> </pre> </div> - <div class="source_table" id="fac0612cad92bfcdda24e22600d5d675c7682536"> + <div class="source_table" id="bfaefba265a613847eb17511c91aeb33124d3b07"> <div class="header"> - <h3>spec/controllers/password_resets_controller_spec.rb</h3> - <h4><span class="red">67.14 %</span> covered</h4> + <h3>lib/trusty_cms/admin_ui/region_partials.rb</h3> + <h4><span class="yellow">83.33 %</span> covered</h4> <div> - <b>70</b> relevant lines. - <span class="green"><b>47</b> lines covered</span> and - <span class="red"><b>23</b> lines missed.</span> + <b>12</b> relevant lines. + <span class="green"><b>10</b> lines covered</span> and + <span class="red"><b>2</b> lines missed.</span> </div> </div> <pre> <ol> <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> - <code class="ruby">require &#39;spec_helper&#39;</code> + <code class="ruby">class TrustyCms::AdminUI::RegionPartials</code> </li> - <li class="never" data-hits="" data-linenumber="2"> + <li class="covered" data-hits="1" data-linenumber="2"> + <span class="hits">1</span> + <code class="ruby"> def initialize(template)</code> + </li> + + <li class="covered" data-hits="287" data-linenumber="3"> + <span class="hits">287</span> + <code class="ruby"> @partials = Hash.new {|h,k| h[k] = &quot;&lt;strong&gt;`#{k}&#39; default partial not found!&lt;/strong&gt;&quot; }</code> + </li> + + <li class="covered" data-hits="287" data-linenumber="4"> + <span class="hits">287</span> + + <code class="ruby"> @template = template</code> + </li> + + <li class="never" data-hits="" data-linenumber="5"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="6"> + + <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="3"> + <li class="covered" data-hits="1" data-linenumber="7"> <span class="hits">1</span> - <code class="ruby">describe Admin::PasswordResetsController, :type =&gt; :controller do</code> + <code class="ruby"> def [](key)</code> </li> - <li class="never" data-hits="" data-linenumber="4"> + <li class="covered" data-hits="230" data-linenumber="8"> + <span class="hits">230</span> + <code class="ruby"> @partials[key.to_s]</code> + </li> + + <li class="never" data-hits="" data-linenumber="9"> + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="10"> + + <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="5"> + <li class="covered" data-hits="1" data-linenumber="11"> <span class="hits">1</span> - <code class="ruby"> describe &quot;Get new&quot; do</code> + <code class="ruby"> def method_missing(method, *args, &amp;block)</code> </li> - <li class="covered" data-hits="1" data-linenumber="6"> - <span class="hits">1</span> + <li class="covered" data-hits="231" data-linenumber="12"> + <span class="hits">231</span> - <code class="ruby"> it &quot;renders the new template&quot; do</code> + <code class="ruby"> if block_given?</code> </li> - <li class="covered" data-hits="1" data-linenumber="7"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="13"> - <code class="ruby"> get :new</code> + + <code class="ruby"> # Ruby 1.9.2 yields self in instance_eval... see https://gist.github.com/479572</code> </li> - <li class="covered" data-hits="1" data-linenumber="8"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="14"> - <code class="ruby"> expect(response).to render_template(&#39;new&#39;)</code> + + <code class="ruby"> # lambdas are as strict as methods in 1.9.x, making sure that the args match, Procs are not.</code> </li> - <li class="never" data-hits="" data-linenumber="9"> + <li class="covered" data-hits="231" data-linenumber="15"> + <span class="hits">231</span> + <code class="ruby"> if RUBY_VERSION =~ /^1\.9/ and block.lambda? and block.arity != 1</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="16"> + + <code class="ruby"> raise &quot;You can only pass a proc (&#39;Proc.new&#39;) or a lambda that takes exactly one arg (for self) to TrustyCms::AdminUI::RegionPartials&#39; method_missing.&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="17"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="231" data-linenumber="18"> + <span class="hits">231</span> + + <code class="ruby"> @partials[method.to_s] = @template.capture(&amp;block)</code> + </li> + + <li class="never" data-hits="" data-linenumber="19"> + + + <code class="ruby"> else</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="20"> + + + <code class="ruby"> @partials[method.to_s]</code> + </li> + + <li class="never" data-hits="" data-linenumber="21"> + + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="10"> + <li class="never" data-hits="" data-linenumber="22"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="11"> + <li class="never" data-hits="" data-linenumber="23"> - <code class="ruby"></code> + <code class="ruby">end</code> </li> - <li class="covered" data-hits="1" data-linenumber="12"> + </ol> + </pre> +</div> + + <div class="source_table" id="62bfb9f3ee6e8ac2730bec06c3df334c59428c84"> + <div class="header"> + <h3>lib/trusty_cms/available_locales.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <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> + + <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> - <code class="ruby"> describe &quot;POST create &quot; do</code> + <code class="ruby">module TrustyCms::AvailableLocales</code> </li> - <li class="covered" data-hits="1" data-linenumber="13"> + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="3"> + + + <code class="ruby"> # Returns the list of available locale files in options_for_select format.</code> + </li> + + <li class="never" data-hits="" data-linenumber="4"> + + + <code class="ruby"> #</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="5"> <span class="hits">1</span> - <code class="ruby"> context &quot;with a valid user and email &quot; do</code> + <code class="ruby"> def self.locales</code> </li> - <li class="covered" data-hits="5" data-linenumber="14"> - <span class="hits">5</span> + <li class="covered" data-hits="7" data-linenumber="6"> + <span class="hits">7</span> - <code class="ruby"> let(:user) { create(:user) }</code> + <code class="ruby"> available_locales = {}</code> </li> + <li class="covered" data-hits="7" data-linenumber="7"> + <span class="hits">7</span> + + <code class="ruby"> TrustyCms.configuration.i18n.load_path.each do |path|</code> + </li> + + <li class="covered" data-hits="189" data-linenumber="8"> + <span class="hits">189</span> + + <code class="ruby"> if File.exists?(path) &amp;&amp; path !~ /_available_tags/</code> + </li> + + <li class="covered" data-hits="175" data-linenumber="9"> + <span class="hits">175</span> + + <code class="ruby"> locale_yaml = YAML.load_file(path)</code> + </li> + + <li class="covered" data-hits="175" data-linenumber="10"> + <span class="hits">175</span> + + <code class="ruby"> stem = File.basename(path, &#39;.yml&#39;)</code> + </li> + + <li class="covered" data-hits="175" data-linenumber="11"> + <span class="hits">175</span> + + <code class="ruby"> if locale_yaml[stem] &amp;&amp; lang = locale_yaml[stem][&quot;this_file_language&quot;]</code> + </li> + + <li class="covered" data-hits="14" data-linenumber="12"> + <span class="hits">14</span> + + <code class="ruby"> available_locales[lang] = stem</code> + </li> + + <li class="never" data-hits="" data-linenumber="13"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="14"> + + + <code class="ruby"> end</code> + </li> + <li class="never" data-hits="" data-linenumber="15"> + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="21" data-linenumber="16"> + <span class="hits">21</span> + + <code class="ruby"> available_locales.collect {|k,v| [k, v]}.sort_by { |s| s[0] }</code> + </li> + + <li class="never" data-hits="" data-linenumber="17"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="18"> + + <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="16"> + <li class="never" data-hits="" data-linenumber="19"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="7ec5b193ca91bf0e62afdd726aa3bd77aba3eaaa"> + <div class="header"> + <h3>lib/trusty_cms/pagination/controller.rb</h3> + <h4><span class="green">92.86 %</span> covered</h4> + <div> + <b>14</b> relevant lines. + <span class="green"><b>13</b> lines covered</span> and + <span class="red"><b>1</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> - <code class="ruby"> it &quot;finds the user&quot; do</code> + <code class="ruby">module TrustyCms</code> </li> - <li class="covered" data-hits="1" data-linenumber="17"> + <li class="covered" data-hits="1" data-linenumber="2"> <span class="hits">1</span> - <code class="ruby"> expect(User).to receive(:find_by).with(email: user.email).and_return(user)</code> + <code class="ruby"> module Pagination</code> </li> - <li class="covered" data-hits="1" data-linenumber="18"> + <li class="covered" data-hits="1" data-linenumber="3"> <span class="hits">1</span> - <code class="ruby"> post :create, email: user.email</code> + <code class="ruby"> module Controller</code> </li> - <li class="never" data-hits="" data-linenumber="19"> + <li class="never" data-hits="" data-linenumber="4"> - <code class="ruby"> end</code> + <code class="ruby"> # for inclusion into public-facing controllers</code> </li> - <li class="never" data-hits="" data-linenumber="20"> + <li class="never" data-hits="" data-linenumber="5"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="21"> + <li class="covered" data-hits="1" data-linenumber="6"> <span class="hits">1</span> - <code class="ruby"> it &quot;generates a new password reset token &quot; do</code> + <code class="ruby"> def configure_pagination</code> </li> - <li class="covered" data-hits="2" data-linenumber="22"> - <span class="hits">2</span> + <li class="never" data-hits="" data-linenumber="7"> - <code class="ruby"> expect { post :create, email: user.email ; user.reload }.to change{ user.password_reset_token }</code> + + <code class="ruby"> # unconfigured parameters remain at will_paginate defaults</code> </li> - <li class="never" data-hits="" data-linenumber="23"> + <li class="never" data-hits="" data-linenumber="8"> + <code class="ruby"> # will_paginate controller options are not overridden by tag attribetus</code> + </li> + + <li class="covered" data-hits="24" data-linenumber="9"> + <span class="hits">24</span> + + <code class="ruby"> WillPaginate::ViewHelpers.pagination_options[:param_name] = TrustyCms::Config[&quot;pagination.param_name&quot;].to_sym unless TrustyCms::Config[&quot;pagination.param_name&quot;].blank?</code> + </li> + + <li class="covered" data-hits="24" data-linenumber="10"> + <span class="hits">24</span> + + <code class="ruby"> WillPaginate::ViewHelpers.pagination_options[:per_page_param_name] = TrustyCms::Config[&quot;pagination.per_page_param_name&quot;].blank? ? :per_page : TrustyCms::Config[&quot;pagination.per_page_param_name&quot;].to_sym</code> + </li> + + <li class="never" data-hits="" data-linenumber="11"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="12"> + + + <code class="ruby"> # will_paginate view options can be overridden by tag attributes</code> + </li> + + <li class="covered" data-hits="24" data-linenumber="13"> + <span class="hits">24</span> + + <code class="ruby"> [:class, :previous_label, :next_label, :inner_window, :outer_window, :separator, :container].each do |opt|</code> + </li> + + <li class="covered" data-hits="168" data-linenumber="14"> + <span class="hits">168</span> + + <code class="ruby"> WillPaginate::ViewHelpers.pagination_options[opt] = TrustyCms::Config[&quot;pagination.#{opt}&quot;] unless TrustyCms::Config[&quot;pagination.#{opt}&quot;].blank?</code> + </li> + + <li class="never" data-hits="" data-linenumber="15"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="16"> + + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="24"> + <li class="never" data-hits="" data-linenumber="17"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="25"> + <li class="covered" data-hits="1" data-linenumber="18"> <span class="hits">1</span> - <code class="ruby"> it &quot;sends a password reset email&quot; do</code> + <code class="ruby"> def pagination_parameters</code> </li> - <li class="covered" data-hits="2" data-linenumber="26"> - <span class="hits">2</span> + <li class="never" data-hits="" data-linenumber="19"> - <code class="ruby"> expect { post :create, email: user.email }.to change(ActionMailer::Base.deliveries, :size)</code> + + <code class="ruby"> {</code> </li> - <li class="never" data-hits="" data-linenumber="27"> + <li class="never" data-hits="" data-linenumber="20"> + <code class="ruby"> :page =&gt; params[WillPaginate::ViewHelpers.pagination_options[:param_name]] || 1,</code> + </li> + + <li class="never" data-hits="" data-linenumber="21"> + + + <code class="ruby"> :per_page =&gt; params[WillPaginate::ViewHelpers.pagination_options[:per_page_param_name]] || TrustyCms::Config[&#39;pagination.per_page&#39;] || 20</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="22"> + + + <code class="ruby"> }</code> + </li> + + <li class="never" data-hits="" data-linenumber="23"> + + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="28"> + <li class="never" data-hits="" data-linenumber="24"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="29"> + <li class="covered" data-hits="1" data-linenumber="25"> <span class="hits">1</span> - <code class="ruby"> it &quot;sets the flash sucess message&quot; do</code> + <code class="ruby"> def self.included(base)</code> </li> - <li class="covered" data-hits="1" data-linenumber="30"> + <li class="covered" data-hits="1" data-linenumber="26"> <span class="hits">1</span> - <code class="ruby"> post :create, email: user.email</code> + <code class="ruby"> base.class_eval {</code> </li> - <li class="missed" data-hits="0" data-linenumber="31"> + <li class="covered" data-hits="1" data-linenumber="27"> + <span class="hits">1</span> + <code class="ruby"> helper_method :pagination_parameters</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="28"> + <span class="hits">1</span> - <code class="ruby"> expect(flash[:success]).to match(/check your email/)</code> + <code class="ruby"> before_filter :configure_pagination</code> </li> - <li class="never" data-hits="" data-linenumber="32"> + <li class="never" data-hits="" data-linenumber="29"> + <code class="ruby"> }</code> + </li> + + <li class="never" data-hits="" data-linenumber="30"> + + <code class="ruby"> end</code> </li> + <li class="never" data-hits="" data-linenumber="31"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="32"> + + + <code class="ruby"> end</code> + </li> + <li class="never" data-hits="" data-linenumber="33"> <code class="ruby"></code> </li> <li class="never" data-hits="" data-linenumber="34"> - <code class="ruby"> end</code> + <code class="ruby"></code> </li> <li class="never" data-hits="" data-linenumber="35"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="36"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="36"> - <code class="ruby"> context &#39;with no user found&#39; do</code> + + <code class="ruby">end</code> </li> - <li class="covered" data-hits="1" data-linenumber="37"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="37"> - <code class="ruby"> it &quot;renders the new page&quot; do</code> + + <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="38"> - <span class="hits">1</span> + <li class="never" data-hits="" data-linenumber="38"> - <code class="ruby"> post :create, email: &#39;none@found.com&#39;</code> + + <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="39"> + <li class="never" data-hits="" data-linenumber="39"> - <code class="ruby"> expect(response).to render_template(&#39;new&#39;)</code> + <code class="ruby"></code> </li> <li class="never" data-hits="" data-linenumber="40"> - <code class="ruby"> end</code> + <code class="ruby"></code> </li> <li class="never" data-hits="" data-linenumber="41"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="42"> + </ol> + </pre> +</div> + + <div class="source_table" id="bed13f447cc3293c2e33013bd302547d11b4f7be"> + <div class="header"> + <h3>lib/trusty_cms/resource_responses.rb</h3> + <h4><span class="red">80.0 %</span> covered</h4> + <div> + <b>70</b> relevant lines. + <span class="green"><b>56</b> lines covered</span> and + <span class="red"><b>14</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> <span class="hits">1</span> - <code class="ruby"> it &quot;sets the flash message&quot; do</code> + <code class="ruby">require &#39;ostruct&#39;</code> </li> - <li class="covered" data-hits="1" data-linenumber="43"> + <li class="covered" data-hits="1" data-linenumber="2"> <span class="hits">1</span> - <code class="ruby"> post :create , email: &#39;none@found.com&#39;</code> + <code class="ruby">module TrustyCms</code> </li> - <li class="missed" data-hits="0" data-linenumber="44"> + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + <code class="ruby"> module ResourceResponses</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="4"> + <span class="hits">1</span> - <code class="ruby"> expect(flash[:notice]).to match(/not found/)</code> + <code class="ruby"> def self.extended(base)</code> </li> - <li class="never" data-hits="" data-linenumber="45"> + <li class="covered" data-hits="1" data-linenumber="5"> + <span class="hits">1</span> + <code class="ruby"> base.send :class_attribute, :responses</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="6"> + <span class="hits">1</span> - <code class="ruby"> end</code> + <code class="ruby"> base.send :include, InstanceMethods</code> </li> - <li class="never" data-hits="" data-linenumber="46"> + <li class="never" data-hits="" data-linenumber="7"> + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="8"> + + <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="47"> + <li class="covered" data-hits="1" data-linenumber="9"> + <span class="hits">1</span> + <code class="ruby"> def create_responses</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="10"> + <span class="hits">2</span> - <code class="ruby"> end</code> + <code class="ruby"> r = (self.responses ||= Collector.new)</code> </li> - <li class="never" data-hits="" data-linenumber="48"> + <li class="covered" data-hits="2" data-linenumber="11"> + <span class="hits">2</span> + <code class="ruby"> yield r if block_given?</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="12"> + <span class="hits">2</span> - <code class="ruby"> end</code> + <code class="ruby"> r</code> </li> - <li class="never" data-hits="" data-linenumber="49"> + <li class="never" data-hits="" data-linenumber="13"> + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="14"> + + <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="50"> + <li class="covered" data-hits="1" data-linenumber="15"> <span class="hits">1</span> - <code class="ruby"> describe &quot;Get edit&quot; do</code> + <code class="ruby"> module InstanceMethods</code> </li> - <li class="covered" data-hits="1" data-linenumber="51"> + <li class="covered" data-hits="1" data-linenumber="16"> <span class="hits">1</span> - <code class="ruby"> context &quot;with a password_reset_token&quot; do</code> + <code class="ruby"> def response_for(action)</code> </li> - <li class="covered" data-hits="3" data-linenumber="52"> - <span class="hits">3</span> + <li class="covered" data-hits="47" data-linenumber="17"> + <span class="hits">47</span> - <code class="ruby"> let(:user) { create(:user)}</code> + <code class="ruby"> responses = self.class.responses.send(action)</code> </li> - <li class="covered" data-hits="3" data-linenumber="53"> - <span class="hits">3</span> + <li class="covered" data-hits="47" data-linenumber="18"> + <span class="hits">47</span> - <code class="ruby"> before { user.generate_token(:password_reset_token) }</code> + <code class="ruby"> respond_to do |wants|</code> </li> - <li class="never" data-hits="" data-linenumber="54"> + <li class="covered" data-hits="47" data-linenumber="19"> + <span class="hits">47</span> + <code class="ruby"> responses.each_format do |f, format_block|</code> + </li> + + <li class="covered" data-hits="33" data-linenumber="20"> + <span class="hits">33</span> - <code class="ruby"></code> + <code class="ruby"> if format_block</code> </li> - <li class="covered" data-hits="1" data-linenumber="55"> - <span class="hits">1</span> + <li class="covered" data-hits="33" data-linenumber="21"> + <span class="hits">33</span> - <code class="ruby"> it &quot;renders the edit template&quot; do</code> + <code class="ruby"> wants.send(f, &amp;wrap(format_block))</code> </li> - <li class="missed" data-hits="0" data-linenumber="56"> + <li class="never" data-hits="" data-linenumber="22"> - <code class="ruby"> get :edit, id: user.password_reset_token</code> + <code class="ruby"> else</code> </li> - <li class="missed" data-hits="0" data-linenumber="57"> + <li class="missed" data-hits="0" data-linenumber="23"> - <code class="ruby"> expect(response).to render_template(&#39;edit&#39;)</code> + <code class="ruby"> wants.send(f)</code> </li> - <li class="never" data-hits="" data-linenumber="58"> + <li class="never" data-hits="" data-linenumber="24"> + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="25"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="47" data-linenumber="26"> + <span class="hits">47</span> + + <code class="ruby"> responses.each_published do |pub, pub_block|</code> + </li> + + <li class="covered" data-hits="86" data-linenumber="27"> + <span class="hits">86</span> + + <code class="ruby"> wants.send(pub, &amp;wrap(pub_block))</code> + </li> + + <li class="never" data-hits="" data-linenumber="28"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="47" data-linenumber="29"> + <span class="hits">47</span> + + <code class="ruby"> if responses.default</code> + </li> + + <li class="covered" data-hits="10" data-linenumber="30"> + <span class="hits">10</span> + + <code class="ruby"> wants.any(&amp;wrap(responses.default))</code> + </li> + + <li class="never" data-hits="" data-linenumber="31"> + + + <code class="ruby"> else</code> + </li> + + <li class="covered" data-hits="37" data-linenumber="32"> + <span class="hits">37</span> + + <code class="ruby"> wants.any</code> + </li> + + <li class="never" data-hits="" data-linenumber="33"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="34"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="35"> + + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="59"> + <li class="never" data-hits="" data-linenumber="36"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="60"> + <li class="covered" data-hits="1" data-linenumber="37"> <span class="hits">1</span> - <code class="ruby"> it &quot;assigns a @user&quot; do</code> + <code class="ruby"> def wrap(proc)</code> </li> - <li class="missed" data-hits="0" data-linenumber="61"> + <li class="never" data-hits="" data-linenumber="38"> - <code class="ruby"> get :edit, id: user.password_reset_token</code> + <code class="ruby"> # Makes sure our response blocks get evaluated in the right context</code> </li> - <li class="missed" data-hits="0" data-linenumber="62"> + <li class="covered" data-hits="129" data-linenumber="39"> + <span class="hits">129</span> + <code class="ruby"> lambda do</code> + </li> + + <li class="never" data-hits="" data-linenumber="40"> - <code class="ruby"> expect(assigns(:user)).to eq(user)</code> + + <code class="ruby"> # Ruby 1.9.2 yields self in instance_eval... see https://gist.github.com/479572</code> </li> - <li class="never" data-hits="" data-linenumber="63"> + <li class="never" data-hits="" data-linenumber="41"> - <code class="ruby"> end</code> + <code class="ruby"> # lambdas are as strict as methods in 1.9.x, making sure that the args match, Procs are not.</code> </li> - <li class="never" data-hits="" data-linenumber="64"> + <li class="covered" data-hits="10" data-linenumber="42"> + <span class="hits">10</span> + <code class="ruby"> if RUBY_VERSION =~ /^1\.9/ and proc.lambda? and proc.arity != 1</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="43"> - <code class="ruby"> end</code> + + <code class="ruby"> raise &quot;You can only pass a proc (&#39;Proc.new&#39;) or a lambda that takes exactly one arg (for self) to the wrap method.&quot;</code> </li> - <li class="never" data-hits="" data-linenumber="65"> + <li class="never" data-hits="" data-linenumber="44"> - <code class="ruby"> end</code> + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="66"> + <li class="never" data-hits="" data-linenumber="45"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="67"> - <span class="hits">1</span> + <li class="covered" data-hits="10" data-linenumber="46"> + <span class="hits">10</span> - <code class="ruby"> context &quot;with no password_reset_token found&quot; do</code> + <code class="ruby"> instance_eval(&amp;proc)</code> </li> - <li class="covered" data-hits="1" data-linenumber="68"> + <li class="never" data-hits="" data-linenumber="47"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="48"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="49"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="50"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="51"> <span class="hits">1</span> - <code class="ruby"> it &quot;renders the 404 page&quot; do</code> + <code class="ruby"> class Collector &lt; OpenStruct</code> </li> - <li class="covered" data-hits="1" data-linenumber="69"> + <li class="covered" data-hits="1" data-linenumber="52"> <span class="hits">1</span> - <code class="ruby"> get :edit, id: &#39;not found&#39;</code> + <code class="ruby"> def initialize</code> </li> - <li class="covered" data-hits="1" data-linenumber="70"> + <li class="covered" data-hits="1" data-linenumber="53"> <span class="hits">1</span> - <code class="ruby"> expect( response.status ).to eq(404)</code> + <code class="ruby"> super</code> </li> - <li class="never" data-hits="" data-linenumber="71"> + <li class="covered" data-hits="10" data-linenumber="54"> + <span class="hits">10</span> + <code class="ruby"> @table = Hash.new {|h,k| h[k] = Response.new }</code> + </li> + + <li class="never" data-hits="" data-linenumber="55"> + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="56"> + + <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="72"> + <li class="covered" data-hits="1" data-linenumber="57"> + <span class="hits">1</span> + <code class="ruby"> def initialize_copy(orig)</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="58"> - <code class="ruby"> expect(response).to render_template(file: &quot;#{Rails.root}/public/404.html&quot;)</code> + + <code class="ruby"> super</code> </li> - <li class="never" data-hits="" data-linenumber="73"> + <li class="missed" data-hits="0" data-linenumber="59"> - <code class="ruby"> end</code> + <code class="ruby"> @table.keys.each do |key|</code> </li> - <li class="never" data-hits="" data-linenumber="74"> + <li class="missed" data-hits="0" data-linenumber="60"> - <code class="ruby"></code> + <code class="ruby"> @table[key] = orig.send(key).dup</code> </li> - <li class="never" data-hits="" data-linenumber="75"> + <li class="never" data-hits="" data-linenumber="61"> - <code class="ruby"> end</code> + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="76"> + <li class="never" data-hits="" data-linenumber="62"> + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="63"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="64"> + + <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="77"> + <li class="covered" data-hits="1" data-linenumber="65"> <span class="hits">1</span> - <code class="ruby"> describe &quot;PATCH update&quot; do</code> + <code class="ruby"> class Response</code> </li> - <li class="covered" data-hits="1" data-linenumber="78"> + <li class="covered" data-hits="1" data-linenumber="66"> <span class="hits">1</span> - <code class="ruby"> context &quot;with no token found&quot; do</code> + <code class="ruby"> attr_reader :publish_formats, :publish_block, :blocks, :block_order</code> </li> - <li class="covered" data-hits="1" data-linenumber="79"> + <li class="covered" data-hits="1" data-linenumber="67"> <span class="hits">1</span> - <code class="ruby"> it &quot;renders the edit page&quot; do</code> + <code class="ruby"> def initialize</code> </li> - <li class="covered" data-hits="1" data-linenumber="80"> - <span class="hits">1</span> + <li class="covered" data-hits="9" data-linenumber="68"> + <span class="hits">9</span> - <code class="ruby"> patch :update, id: &#39;notfound&#39;, user: { password: &#39;newpassord1&#39;, password_confirmation: &#39;newpassword1&#39; }</code> + <code class="ruby"> @publish_formats = []</code> </li> - <li class="missed" data-hits="0" data-linenumber="81"> + <li class="covered" data-hits="9" data-linenumber="69"> + <span class="hits">9</span> + <code class="ruby"> @blocks = {}</code> + </li> + + <li class="covered" data-hits="9" data-linenumber="70"> + <span class="hits">9</span> - <code class="ruby"> expect(response).to render_template(&#39;edit&#39;)</code> + <code class="ruby"> @block_order = []</code> </li> - <li class="never" data-hits="" data-linenumber="82"> + <li class="never" data-hits="" data-linenumber="71"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="83"> + <li class="never" data-hits="" data-linenumber="72"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="84"> + <li class="covered" data-hits="1" data-linenumber="73"> <span class="hits">1</span> - <code class="ruby"> it &quot;sets the flash message&quot; do</code> + <code class="ruby"> def initialize_copy(orig)</code> </li> - <li class="covered" data-hits="1" data-linenumber="85"> - <span class="hits">1</span> + <li class="missed" data-hits="0" data-linenumber="74"> - <code class="ruby"> patch :update, id: &#39;notfound&#39;, user: { password: &#39;newpassord1&#39;, password_confirmation: &#39;newpassword1&#39; }</code> + + <code class="ruby"> @publish_formats = orig.publish_formats.dup</code> </li> - <li class="missed" data-hits="0" data-linenumber="86"> + <li class="missed" data-hits="0" data-linenumber="75"> - <code class="ruby"> expect(flash[:notice]).to match(/not found/)</code> + <code class="ruby"> @blocks = orig.blocks.dup</code> </li> - <li class="never" data-hits="" data-linenumber="87"> + <li class="missed" data-hits="0" data-linenumber="76"> - <code class="ruby"> end</code> + <code class="ruby"> @block_order = orig.block_order.dup</code> </li> - <li class="never" data-hits="" data-linenumber="88"> + <li class="missed" data-hits="0" data-linenumber="77"> - <code class="ruby"> end</code> + <code class="ruby"> @publish_block = orig.publish_block.dup if orig.publish_block</code> </li> - <li class="never" data-hits="" data-linenumber="89"> + <li class="missed" data-hits="0" data-linenumber="78"> + <code class="ruby"> @default = orig.default.dup if orig.default</code> + </li> + + <li class="never" data-hits="" data-linenumber="79"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="80"> + + <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="90"> + <li class="covered" data-hits="1" data-linenumber="81"> <span class="hits">1</span> - <code class="ruby"> context &quot;with a valid token&quot; do</code> + <code class="ruby"> def default(&amp;block)</code> </li> - <li class="covered" data-hits="6" data-linenumber="91"> - <span class="hits">6</span> + <li class="covered" data-hits="64" data-linenumber="82"> + <span class="hits">64</span> - <code class="ruby"> let(:user) { create(:user) }</code> + <code class="ruby"> if block_given?</code> </li> - <li class="covered" data-hits="6" data-linenumber="92"> - <span class="hits">6</span> + <li class="covered" data-hits="7" data-linenumber="83"> + <span class="hits">7</span> - <code class="ruby"> before { user.generate_token(:password_reset_token)}</code> + <code class="ruby"> @default = block</code> </li> - <li class="never" data-hits="" data-linenumber="93"> + <li class="never" data-hits="" data-linenumber="84"> + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="64" data-linenumber="85"> + <span class="hits">64</span> + + <code class="ruby"> @default</code> + </li> + + <li class="never" data-hits="" data-linenumber="86"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="87"> + + <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="94"> + <li class="covered" data-hits="1" data-linenumber="88"> <span class="hits">1</span> - <code class="ruby"> it &quot;updates the user&#39;s password&quot; do</code> + <code class="ruby"> def publish(*formats, &amp;block)</code> </li> - <li class="missed" data-hits="0" data-linenumber="95"> + <li class="covered" data-hits="8" data-linenumber="89"> + <span class="hits">8</span> + <code class="ruby"> @publish_formats.concat(formats)</code> + </li> + + <li class="covered" data-hits="8" data-linenumber="90"> + <span class="hits">8</span> - <code class="ruby"> digest = user.password_digest</code> + <code class="ruby"> if block_given?</code> </li> - <li class="missed" data-hits="0" data-linenumber="96"> + <li class="covered" data-hits="8" data-linenumber="91"> + <span class="hits">8</span> + <code class="ruby"> @publish_block = block</code> + </li> + + <li class="never" data-hits="" data-linenumber="92"> - <code class="ruby"> patch :update, id: user.password_reset_token, user: { password: &#39;newpassword1&#39;, password_confirmation: &#39;newpassword1&#39;}</code> + + <code class="ruby"> else</code> </li> - <li class="missed" data-hits="0" data-linenumber="97"> + <li class="missed" data-hits="0" data-linenumber="93"> - <code class="ruby"> user.reload</code> + <code class="ruby"> raise ArgumentError, &quot;Block required to publish&quot; unless @publish_block</code> </li> - <li class="missed" data-hits="0" data-linenumber="98"> + <li class="never" data-hits="" data-linenumber="94"> - <code class="ruby"> expect(user.password_digest).to_not eq(digest)</code> + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="99"> + <li class="never" data-hits="" data-linenumber="95"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="100"> + <li class="never" data-hits="" data-linenumber="96"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="101"> + <li class="covered" data-hits="1" data-linenumber="97"> <span class="hits">1</span> - <code class="ruby"> it &quot;clears the password_reset_token&quot; do</code> + <code class="ruby"> def each_published</code> </li> - <li class="missed" data-hits="0" data-linenumber="102"> + <li class="covered" data-hits="47" data-linenumber="98"> + <span class="hits">47</span> - - <code class="ruby"> patch :update, id: user.password_reset_token, user: { password: &#39;newpassword1&#39;, password_confirmation: &#39;newpassword1&#39;}</code> + <code class="ruby"> publish_formats.each do |format|</code> </li> - <li class="missed" data-hits="0" data-linenumber="103"> + <li class="covered" data-hits="86" data-linenumber="99"> + <span class="hits">86</span> - - <code class="ruby"> user.reload</code> + <code class="ruby"> yield format, publish_block if block_given?</code> </li> - <li class="missed" data-hits="0" data-linenumber="104"> + <li class="never" data-hits="" data-linenumber="100"> - <code class="ruby"> expect(user.password_reset_token).to be_blank</code> + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="105"> + <li class="never" data-hits="" data-linenumber="101"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="106"> + <li class="never" data-hits="" data-linenumber="102"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="107"> + <li class="covered" data-hits="1" data-linenumber="103"> <span class="hits">1</span> - <code class="ruby"> it &quot;sets the session[:user_id] user id&quot; do</code> + <code class="ruby"> def each_format</code> </li> - <li class="missed" data-hits="0" data-linenumber="108"> + <li class="covered" data-hits="47" data-linenumber="104"> + <span class="hits">47</span> + <code class="ruby"> @block_order.each do |format|</code> + </li> + + <li class="covered" data-hits="33" data-linenumber="105"> + <span class="hits">33</span> - <code class="ruby"> patch :update, id: user.password_reset_token, user: { password: &#39;newpassword1&#39;, password_confirmation: &#39;newpassword1&#39;}</code> + <code class="ruby"> yield format, @blocks[format] if block_given?</code> </li> - <li class="missed" data-hits="0" data-linenumber="109"> + <li class="never" data-hits="" data-linenumber="106"> - <code class="ruby"> expect(session[:user_id]).to eq(user.id)</code> + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="110"> + <li class="never" data-hits="" data-linenumber="107"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="111"> + <li class="never" data-hits="" data-linenumber="108"> <code class="ruby"></code> </li> + <li class="covered" data-hits="1" data-linenumber="109"> + <span class="hits">1</span> + + <code class="ruby"> def method_missing(method, *args, &amp;block)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="110"> + <span class="hits">1</span> + + <code class="ruby"> if block_given?</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="111"> + <span class="hits">1</span> + + <code class="ruby"> @blocks[method] = block</code> + </li> + <li class="covered" data-hits="1" data-linenumber="112"> <span class="hits">1</span> - <code class="ruby"> it &quot;sets the flash[:sucess] message&quot; do</code> + <code class="ruby"> @block_order &lt;&lt; method unless @block_order.include?(method)</code> </li> <li class="missed" data-hits="0" data-linenumber="113"> - <code class="ruby"> patch :update, id: user.password_reset_token, user: { password: &#39;newpassword1&#39;, password_confirmation: &#39;newpassword1&#39;}</code> + <code class="ruby"> elsif args.empty?</code> </li> <li class="missed" data-hits="0" data-linenumber="114"> - <code class="ruby"> expect(flash[:success]).to match(/password updated/i)</code> + <code class="ruby"> @block_order &lt;&lt; method</code> </li> <li class="never" data-hits="" data-linenumber="115"> + <code class="ruby"> else</code> + </li> + + <li class="missed" data-hits="0" data-linenumber="116"> + + + <code class="ruby"> super</code> + </li> + + <li class="never" data-hits="" data-linenumber="117"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="118"> + + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="116"> + <li class="never" data-hits="" data-linenumber="119"> + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="120"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="121"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="caa7ec0029d51eb5c9bde0f679fcfcb448b3cd01"> + <div class="header"> + <h3>spec/controllers/application_controller_spec.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <b>40</b> relevant lines. + <span class="green"><b>40</b> lines covered</span> and + <span class="red"><b>0</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">require &#39;spec_helper&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="117"> + <li class="covered" data-hits="1" data-linenumber="3"> <span class="hits">1</span> - <code class="ruby"> it &quot;redirects to the todo_lists page&quot; do</code> + <code class="ruby">describe ApplicationController, :type =&gt; :controller do</code> </li> - <li class="missed" data-hits="0" data-linenumber="118"> + <li class="covered" data-hits="13" data-linenumber="4"> + <span class="hits">13</span> + <code class="ruby"> routes { TrustyCms::Engine.routes }</code> + </li> + + <li class="never" data-hits="" data-linenumber="5"> - <code class="ruby"> patch :update, id: user.password_reset_token, user: { password: &#39;newpassword1&#39;, password_confirmation: &#39;newpassword1&#39;}</code> + + <code class="ruby"></code> </li> - <li class="missed" data-hits="0" data-linenumber="119"> + <li class="covered" data-hits="1" data-linenumber="6"> + <span class="hits">1</span> + <code class="ruby"> it &#39;should initialize the javascript and stylesheets arrays&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="7"> + <span class="hits">1</span> - <code class="ruby"> expect(response).to redirect_to(welcome_path)</code> + <code class="ruby"> controller.send :set_javascripts_and_stylesheets</code> </li> - <li class="never" data-hits="" data-linenumber="120"> + <li class="covered" data-hits="1" data-linenumber="8"> + <span class="hits">1</span> + <code class="ruby"> expect(controller.send(:instance_variable_get, :@javascripts)).not_to be_nil</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="9"> + <span class="hits">1</span> + <code class="ruby"> expect(controller.send(:instance_variable_get, :@javascripts)).to be_instance_of(Array)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="10"> + <span class="hits">1</span> + + <code class="ruby"> expect(controller.send(:instance_variable_get, :@stylesheets)).not_to be_nil</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="11"> + <span class="hits">1</span> + + <code class="ruby"> expect(controller.send(:instance_variable_get, :@stylesheets)).to be_instance_of(Array)</code> + </li> + + <li class="never" data-hits="" data-linenumber="12"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="13"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="14"> + <span class="hits">1</span> + + <code class="ruby"> describe &#39;self.template_name&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="15"> + <span class="hits">1</span> + + <code class="ruby"> it &quot;should return &#39;index&#39; when the controller action_name is &#39;index&#39;&quot; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="16"> + <span class="hits">1</span> + + <code class="ruby"> allow(controller).to receive(:action_name).and_return(&#39;index&#39;)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="17"> + <span class="hits">1</span> + + <code class="ruby"> expect(controller.template_name).to eq(&#39;index&#39;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="18"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="19"> + <span class="hits">1</span> + + <code class="ruby"> [&#39;new&#39;, &#39;create&#39;].each do |action|</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="20"> + <span class="hits">2</span> + + <code class="ruby"> it &quot;should return &#39;new&#39; when the action_name is #{action}&quot; do</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="21"> + <span class="hits">2</span> + + <code class="ruby"> allow(controller).to receive(:action_name).and_return(action)</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="22"> + <span class="hits">2</span> + + <code class="ruby"> expect(controller.template_name).to eq(&#39;new&#39;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="23"> + + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="121"> + <li class="never" data-hits="" data-linenumber="24"> + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="25"> + <span class="hits">1</span> + + <code class="ruby"> [&#39;edit&#39;, &#39;update&#39;].each do |action|</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="26"> + <span class="hits">2</span> + + <code class="ruby"> it &quot;should return &#39;edit&#39; when the action_name is #{action}&quot; do</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="27"> + <span class="hits">2</span> + + <code class="ruby"> allow(controller).to receive(:action_name).and_return(action)</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="28"> + <span class="hits">2</span> + + <code class="ruby"> expect(controller.template_name).to eq(&#39;edit&#39;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="29"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="30"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="31"> + <span class="hits">1</span> + + <code class="ruby"> [&#39;remove&#39;, &#39;destroy&#39;].each do |action|</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="32"> + <span class="hits">2</span> + + <code class="ruby"> it &quot;should return &#39;remove&#39; when the action_name is #{action}&quot; do</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="33"> + <span class="hits">2</span> + + <code class="ruby"> allow(controller).to receive(:action_name).and_return(action)</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="34"> + <span class="hits">2</span> + + <code class="ruby"> expect(controller.template_name).to eq(&#39;remove&#39;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="35"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="36"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="37"> + <span class="hits">1</span> + + <code class="ruby"> it &quot;should return &#39;show&#39; when the action_name is show&quot; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="38"> + <span class="hits">1</span> + + <code class="ruby"> allow(controller).to receive(:action_name).and_return(&#39;show&#39;)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="39"> + <span class="hits">1</span> + + <code class="ruby"> expect(controller.template_name).to eq(&#39;show&#39;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="40"> + + + <code class="ruby"> end</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="41"> + <span class="hits">1</span> + + <code class="ruby"> it &quot;should return the action_name when the action_name is a non-standard name&quot; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="42"> + <span class="hits">1</span> + + <code class="ruby"> allow(controller).to receive(:action_name).and_return(&#39;other&#39;)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="43"> + <span class="hits">1</span> + + <code class="ruby"> expect(controller.template_name).to eq(&#39;other&#39;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="44"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="45"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="46"> + + <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="122"> + <li class="covered" data-hits="1" data-linenumber="47"> + <span class="hits">1</span> + <code class="ruby"> describe &quot;set_timezone&quot; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="48"> + <span class="hits">1</span> + <code class="ruby"> it &quot;should use TrustyCms::Config[&#39;local.timezone&#39;]&quot; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="49"> + <span class="hits">1</span> + + <code class="ruby"> TrustyCms::Config[&#39;local.timezone&#39;] = &#39;Kuala Lumpur&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="50"> + <span class="hits">1</span> + + <code class="ruby"> controller.send(:set_timezone)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="51"> + <span class="hits">1</span> + + <code class="ruby"> expect(Time.zone.name).to eq(&#39;Kuala Lumpur&#39;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="52"> + + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="123"> + <li class="never" data-hits="" data-linenumber="53"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="124"> + <li class="covered" data-hits="1" data-linenumber="54"> + <span class="hits">1</span> + <code class="ruby"> it &quot;should default to config.time_zone&quot; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="55"> + <span class="hits">1</span> + <code class="ruby"> TrustyCms::Config.initialize_cache # to clear out setting from previous tests</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="56"> + <span class="hits">1</span> + + <code class="ruby"> controller.send(:set_timezone)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="57"> + <span class="hits">1</span> + + <code class="ruby"> expect(Time.zone.name).to eq(&#39;UTC&#39;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="58"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="59"> + + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="125"> + <li class="never" data-hits="" data-linenumber="60"> + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="337cbe163bc8bfdb5179ca7658af10ab02e6c229"> + <div class="header"> + <h3>spec/controllers/users_controller_spec.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <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> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">require &#39;spec_helper&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="126"> + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + <code class="ruby">describe Admin::UsersController, :type =&gt; :controller do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="4"> + <span class="hits">1</span> + <code class="ruby"> routes { TrustyCms::Engine.routes }</code> + </li> + + <li class="never" data-hits="" data-linenumber="5"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="6"> + + <code class="ruby">end</code> </li> </ol> </pre> </div> + <div class="source_table" id="a27fd50274e4ef14baece85f6fc1ef2dff24481e"> + <div class="header"> + <h3>spec/controllers/welcome_controller_spec.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <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> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">require &#39;spec_helper&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby">RSpec.describe Admin::WelcomeController, :type =&gt; :controller do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="4"> + <span class="hits">1</span> + + <code class="ruby"> routes { TrustyCms::Engine.routes }</code> + </li> + + <li class="never" data-hits="" data-linenumber="5"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="6"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + <div class="source_table" id="b8f4cd120e1d67bc8beac165fcf0bc0aa4481001"> <div class="header"> <h3>spec/factories/layout.rb</h3> <h4><span class="green">100.0 %</span> covered</h4> <div> @@ -6042,12 +14814,12 @@ <span class="hits">1</span> <code class="ruby"> password &#39;password&#39;</code> </li> - <li class="covered" data-hits="12" data-linenumber="7"> - <span class="hits">12</span> + <li class="covered" data-hits="1" data-linenumber="7"> + <span class="hits">1</span> <code class="ruby"> password_confirmation { password }</code> </li> <li class="never" data-hits="" data-linenumber="8"> @@ -6220,18 +14992,2616 @@ </ol> </pre> </div> + <div class="source_table" id="5d70a4be91101af4532a395a46c8d595d80b8fb0"> + <div class="header"> + <h3>spec/features/admin_login_spec.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <b>52</b> relevant lines. + <span class="green"><b>52</b> lines covered</span> and + <span class="red"><b>0</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">require &#39;rails_helper&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby">describe &#39;Administration Interface Login&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="4"> + <span class="hits">1</span> + + <code class="ruby"> fixtures :users</code> + </li> + + <li class="never" data-hits="" data-linenumber="5"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="6"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;shows a login page&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="7"> + <span class="hits">1</span> + + <code class="ruby"> visit &#39;/&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="8"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="9"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_field &#39;Username or E-mail Address&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="10"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_field &#39;Password&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="11"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_button &#39;Login&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="12"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="13"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="14"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;shows an error if the username is wrong&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="15"> + <span class="hits">1</span> + + <code class="ruby"> log_in_as &#39;nonexistent_username&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="16"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="17"> + <span class="hits">1</span> + + <code class="ruby"> expect(find(&#39;#error&#39;)).to have_content &quot;Invalid username, e-mail address, or password.&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="18"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="19"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="20"> + <span class="hits">1</span> + + <code class="ruby"> describe &#39;as an admin user&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="21"> + <span class="hits">1</span> + + <code class="ruby"> before(:each) do</code> + </li> + + <li class="covered" data-hits="7" data-linenumber="22"> + <span class="hits">7</span> + + <code class="ruby"> @admin = users(:captain_janeway)</code> + </li> + + <li class="never" data-hits="" data-linenumber="23"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="24"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="25"> + <span class="hits">1</span> + + <code class="ruby"> context &#39;after login&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="26"> + <span class="hits">1</span> + + <code class="ruby"> before(:each) do</code> + </li> + + <li class="covered" data-hits="6" data-linenumber="27"> + <span class="hits">6</span> + + <code class="ruby"> log_in_as @admin.login</code> + </li> + + <li class="never" data-hits="" data-linenumber="28"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="29"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="30"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;shows the admin interface&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="31"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_content &quot;Logged in as&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="32"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="33"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="34"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;has correct links in header&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="35"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_link @admin.name, href: &#39;/admin/preferences/edit&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="36"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_link &#39;Logout&#39;, href: &#39;/admin/logout&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="37"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_link &#39;View Site&#39;, href: &#39;/&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="38"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="39"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="40"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;has correct links in navigation&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="41"> + <span class="hits">1</span> + + <code class="ruby"> within &#39;#navigation&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="42"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_link &quot;Content&quot;, href: &#39;/admin/pages&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="43"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_link &quot;Design&quot;, href: &#39;/admin/layouts&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="44"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_link &quot;Settings&quot;, href: &#39;/admin/configuration&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="45"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="46"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="47"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="48"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;outputs table header as html&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="49"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_selector &quot;table#pages th.name&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="50"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="51"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="52"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="53"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;can navigate to create new page&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="54"> + <span class="hits">1</span> + + <code class="ruby"> visit &#39;/admin/pages/new&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="55"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_selector &quot;h1&quot;, text: &quot;New Page&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="56"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="57"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="58"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;can log out&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="59"> + <span class="hits">1</span> + + <code class="ruby"> click_link &quot;Logout&quot;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="60"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_content &quot;You are now logged out.&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="61"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="62"> + <span class="hits">1</span> + + <code class="ruby"> visit &#39;/admin/pages/new&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="63"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_content &quot;Please Login&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="64"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="65"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="66"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="67"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;shows an error if the password is wrong&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="68"> + <span class="hits">1</span> + + <code class="ruby"> log_in_as @admin.login, &#39;passwordwhoops&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="69"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="70"> + <span class="hits">1</span> + + <code class="ruby"> expect(find(&#39;#error&#39;)).to have_content &quot;Invalid username, e-mail address, or password.&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="71"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="72"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="73"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="74"> + <span class="hits">1</span> + + <code class="ruby"> describe &#39;as a regular user after login&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="75"> + <span class="hits">1</span> + + <code class="ruby"> before(:each) do</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="76"> + <span class="hits">2</span> + + <code class="ruby"> @user = users(:neelix)</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="77"> + <span class="hits">2</span> + + <code class="ruby"> log_in_as @user.login</code> + </li> + + <li class="never" data-hits="" data-linenumber="78"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="79"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="80"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;can log in to the admin interface&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="81"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_content &quot;Logged in as&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="82"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="83"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="84"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;has correct links in navigation&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="85"> + <span class="hits">1</span> + + <code class="ruby"> within &#39;#navigation&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="86"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_link &quot;Content&quot;, href: &#39;/admin/pages&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="87"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).not_to have_link &quot;Design&quot;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="88"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_link &quot;Settings&quot;, href: &#39;/admin/configuration&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="89"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="90"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="91"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="92"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="a413cd7cc1724408d7a525553d4834265f04885e"> + <div class="header"> + <h3>spec/features/config_spec.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <b>21</b> relevant lines. + <span class="green"><b>21</b> lines covered</span> and + <span class="red"><b>0</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">require &#39;rails_helper&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby">describe &#39;Configuration (Settings)&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="4"> + <span class="hits">1</span> + + <code class="ruby"> fixtures :users</code> + </li> + + <li class="never" data-hits="" data-linenumber="5"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="6"> + <span class="hits">1</span> + + <code class="ruby"> before(:each) do</code> + </li> + + <li class="covered" data-hits="3" data-linenumber="7"> + <span class="hits">3</span> + + <code class="ruby"> @admin = users(:captain_janeway)</code> + </li> + + <li class="covered" data-hits="3" data-linenumber="8"> + <span class="hits">3</span> + + <code class="ruby"> log_in_as @admin.login</code> + </li> + + <li class="covered" data-hits="3" data-linenumber="9"> + <span class="hits">3</span> + + <code class="ruby"> click_link &#39;Settings&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="10"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="11"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="12"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;has personal and site preferences&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="13"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_content &#39;Personal Preferences&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="14"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_content &#39;Configuration&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="15"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="16"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="17"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;lets you edit your personal preferences&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="18"> + <span class="hits">1</span> + + <code class="ruby"> click_button &#39;Edit Preferences&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="19"> + <span class="hits">1</span> + + <code class="ruby"> fill_in &#39;Name&#39;, with: &#39;Captain Kathryn Janeway&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="20"> + <span class="hits">1</span> + + <code class="ruby"> click_button &#39;Save Changes&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="21"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="22"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_content &#39;Name Captain Kathryn Janeway&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="23"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="24"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="25"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;lets you edit the site preferences&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="26"> + <span class="hits">1</span> + + <code class="ruby"> click_button &#39;Edit Configuration&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="27"> + <span class="hits">1</span> + + <code class="ruby"> fill_in &#39;Site Title&#39;, with: &#39;My Special Site&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="28"> + <span class="hits">1</span> + + <code class="ruby"> click_button &#39;Save Changes&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="29"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="30"> + <span class="hits">1</span> + + <code class="ruby"> within &#39;#site_title&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="31"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_content &#39;My Special Site&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="32"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="33"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="34"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="ab78dbd6e5a827bfa8db3f97d98882ca4edbba01"> + <div class="header"> + <h3>spec/features/javascript_smoke_spec.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <b>30</b> relevant lines. + <span class="green"><b>30</b> lines covered</span> and + <span class="red"><b>0</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">require &#39;rails_helper&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby">describe &#39;Editing using javascript features&#39;, js: true do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="4"> + <span class="hits">1</span> + + <code class="ruby"> fixtures :users</code> + </li> + + <li class="never" data-hits="" data-linenumber="5"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="6"> + <span class="hits">1</span> + + <code class="ruby"> before(:each) do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="7"> + <span class="hits">1</span> + + <code class="ruby"> @admin = users(:captain_janeway)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="8"> + <span class="hits">1</span> + + <code class="ruby"> log_in_as @admin.login</code> + </li> + + <li class="never" data-hits="" data-linenumber="9"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="10"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="11"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;edits all sorts of content&#39; do</code> + </li> + + <li class="never" data-hits="" data-linenumber="12"> + + + <code class="ruby"> # Create a new homepage</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="13"> + <span class="hits">1</span> + + <code class="ruby"> click_link &#39;New Homepage&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="14"> + <span class="hits">1</span> + + <code class="ruby"> fill_in &#39;Page Title&#39;, with: &#39;Voyager Home&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="15"> + <span class="hits">1</span> + + <code class="ruby"> click_button &#39;Create Page&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="16"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="17"> + + + <code class="ruby"> # Create a new child page of the home page</code> + </li> + + <li class="never" data-hits="" data-linenumber="18"> + + + <code class="ruby"> # This is failing on Travis, but not on my box. Just trying to edit to push a new version.</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="19"> + <span class="hits">1</span> + + <code class="ruby"> click_link &#39;Add Child&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="20"> + <span class="hits">1</span> + + <code class="ruby"> click_link &#39;Normal Page&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="21"> + <span class="hits">1</span> + + <code class="ruby"> fill_in &#39;Page Title&#39;, with: &#39;Command Center&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="22"> + <span class="hits">1</span> + + <code class="ruby"> page.execute_script(&quot;CKEDITOR.instances[&#39;part_body_content&#39;].setData(&#39;You are on the bridge.&#39;);&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="23"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="24"> + + + <code class="ruby"> # Add a custom page part</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="25"> + <span class="hits">1</span> + + <code class="ruby"> click_link &#39;Add Part&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="26"> + <span class="hits">1</span> + + <code class="ruby"> fill_in &#39;Name&#39;, with: &#39;footer&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="27"> + <span class="hits">1</span> + + <code class="ruby"> click_button &#39;Add Part&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="28"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_selector &#39;#tabs #tab_footer&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="29"> + <span class="hits">1</span> + + <code class="ruby"> page.execute_script(&quot;CKEDITOR.instances[&#39;part_footer_content&#39;].setData(&#39;You are on the bridge.&#39;);&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="30"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="31"> + + + <code class="ruby"> # Switch tabs</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="32"> + <span class="hits">1</span> + + <code class="ruby"> click_link &#39;tab_body&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="33"> + <span class="hits">1</span> + + <code class="ruby"> result = evaluate_script(&quot;CKEDITOR.instances[&#39;part_body_content&#39;].getData()&quot;)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="34"> + <span class="hits">1</span> + + <code class="ruby"> puts result</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="35"> + <span class="hits">1</span> + + <code class="ruby"> result.should include(&quot;You are on the bridge.&quot;)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="36"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to_not have_field &#39;part_footer_content&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="37"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="38"> + + + <code class="ruby"> # Remove a tab</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="39"> + <span class="hits">1</span> + + <code class="ruby"> find(&#39;#tab_extended .close&#39;).click</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="40"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to_not have_content &#39;extended&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="41"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="42"> + + + <code class="ruby"> # Preview</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="43"> + <span class="hits">1</span> + + <code class="ruby"> click_button &#39;Preview&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="44"> + <span class="hits">1</span> + + <code class="ruby"> within_frame &#39;page-preview&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="45"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_content &#39;You are on the bridge.&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="46"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to_not have_content &#39;New Page&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="47"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="48"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="49"> + + + <code class="ruby"> # TODO: This is currently broken by treetable, but I don&#39;t understand how it works well enough to fix. Will consult carols10cents.</code> + </li> + + <li class="never" data-hits="" data-linenumber="50"> + + + <code class="ruby"> # Save and check that all changes were saved</code> + </li> + + <li class="never" data-hits="" data-linenumber="51"> + + + <code class="ruby"> #click_button &#39;Save Changes&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="52"> + + + <code class="ruby"> #click_link &#39;Command Center&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="53"> + + + <code class="ruby"> #expect(page).to_not have_content &#39;extended&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="54"> + + + <code class="ruby"> #expect(page).to have_content &#39;footer&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="55"> + + + <code class="ruby"> #expect(page).to have_field &#39;part_body_content&#39;, with: &#39;You are on the bridge.&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="56"> + + + <code class="ruby"> #click_link &#39;tab_footer&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="57"> + + + <code class="ruby"> #expect(page).to have_field &#39;part_footer_content&#39;, with: &#39;Copyright Voyager 2371&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="58"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="59"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="7570781db4c3155e965463b658470da596800bab"> + <div class="header"> + <h3>spec/features/layouts_spec.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <b>33</b> relevant lines. + <span class="green"><b>33</b> lines covered</span> and + <span class="red"><b>0</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">require &#39;rails_helper&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby">describe &#39;Layouts (Design)&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="4"> + <span class="hits">1</span> + + <code class="ruby"> fixtures :users</code> + </li> + + <li class="never" data-hits="" data-linenumber="5"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="6"> + <span class="hits">1</span> + + <code class="ruby"> before(:each) do</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="7"> + <span class="hits">4</span> + + <code class="ruby"> @admin = users(:captain_janeway)</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="8"> + <span class="hits">4</span> + + <code class="ruby"> log_in_as @admin.login</code> + </li> + + <li class="covered" data-hits="4" data-linenumber="9"> + <span class="hits">4</span> + + <code class="ruby"> click_link &#39;Design&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="10"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="11"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="12"> + <span class="hits">1</span> + + <code class="ruby"> context &#39;without any layouts&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="13"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;says it has no layouts&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="14"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_content &#39;No Layouts&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="15"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="16"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="17"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;lets you add a layout&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="18"> + <span class="hits">1</span> + + <code class="ruby"> click_link &#39;New Layout&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="19"> + <span class="hits">1</span> + + <code class="ruby"> fill_in &#39;Name&#39;, with: &#39;Petunias&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="20"> + <span class="hits">1</span> + + <code class="ruby"> fill_in &#39;Body&#39;, with: &#39;Wisteria&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="21"> + <span class="hits">1</span> + + <code class="ruby"> click_button &#39;Create Layout&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="22"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_content &#39;Petunias&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="23"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="24"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="25"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="26"> + <span class="hits">1</span> + + <code class="ruby"> context &#39;with a layout&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="27"> + <span class="hits">1</span> + + <code class="ruby"> before(:each) do</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="28"> + <span class="hits">2</span> + + <code class="ruby"> Layout.create!(name: &#39;Petunias&#39;, content: &#39;Wisteria&#39;)</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="29"> + <span class="hits">2</span> + + <code class="ruby"> visit &#39;/admin/layouts&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="30"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="31"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="32"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;lets you edit the layout&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="33"> + <span class="hits">1</span> + + <code class="ruby"> click_link &#39;Petunias&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="34"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_content &#39;Edit Layout&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="35"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_field &#39;Name&#39;, with: &#39;Petunias&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="36"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_field &#39;Body&#39;, with: &#39;Wisteria&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="37"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_button &#39;Save Changes&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="38"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_content &#39;Last Updated by Kathryn Janeway&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="39"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="40"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="41"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;lets you remove the layout&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="42"> + <span class="hits">1</span> + + <code class="ruby"> click_link &#39;Remove&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="43"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_content &#39;Are you sure you want to permanently remove the following layout?&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="44"> + <span class="hits">1</span> + + <code class="ruby"> click_button &#39;Delete Layout&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="45"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_content &#39;No Layouts&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="46"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_link &#39;New Layout&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="47"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="48"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="49"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="d4d1a930f2f47b0ce0846efa1c917ebdf0bf2c69"> + <div class="header"> + <h3>spec/features/pages_spec.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <b>34</b> relevant lines. + <span class="green"><b>34</b> lines covered</span> and + <span class="red"><b>0</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">require &#39;rails_helper&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby">describe &#39;Pages&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="4"> + <span class="hits">1</span> + + <code class="ruby"> fixtures :users</code> + </li> + + <li class="never" data-hits="" data-linenumber="5"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="6"> + <span class="hits">1</span> + + <code class="ruby"> before(:each) do</code> + </li> + + <li class="covered" data-hits="3" data-linenumber="7"> + <span class="hits">3</span> + + <code class="ruby"> @admin = users(:captain_janeway)</code> + </li> + + <li class="covered" data-hits="3" data-linenumber="8"> + <span class="hits">3</span> + + <code class="ruby"> log_in_as @admin.login</code> + </li> + + <li class="never" data-hits="" data-linenumber="9"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="10"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="11"> + <span class="hits">1</span> + + <code class="ruby"> context &#39;without any pages&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="12"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;can create a new homepage&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="13"> + <span class="hits">1</span> + + <code class="ruby"> click_link &#39;New Homepage&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="14"> + <span class="hits">1</span> + + <code class="ruby"> fill_in &#39;Page Title&#39;, with: &#39;Voyager Home&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="15"> + <span class="hits">1</span> + + <code class="ruby"> fill_in &#39;Breadcrumb&#39;, with: &#39;Home&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="16"> + <span class="hits">1</span> + + <code class="ruby"> click_button &#39;Create Page&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="17"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="18"> + <span class="hits">1</span> + + <code class="ruby"> within &#39;table#pages&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="19"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_selector &#39;tbody tr&#39;, count: 1</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="20"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_link &#39;Voyager Home&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="21"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_link &#39;Add Child&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="22"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_link &#39;Normal Page&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="23"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_link &#39;File Not Found&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="24"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_link &#39;Remove&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="25"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="26"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="27"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="28"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="29"> + <span class="hits">1</span> + + <code class="ruby"> context &#39;with only a homepage&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="30"> + <span class="hits">1</span> + + <code class="ruby"> before(:each) do</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="31"> + <span class="hits">2</span> + + <code class="ruby"> Page.create!(title: &#39;Voyager Home&#39;, breadcrumb: &#39;Home&#39;, slug: &#39;/&#39;)</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="32"> + <span class="hits">2</span> + + <code class="ruby"> visit &#39;/admin/pages&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="33"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="34"> + + + <code class="ruby"> </code> + </li> + + <li class="never" data-hits="" data-linenumber="35"> + + + <code class="ruby"> </code> + </li> + + <li class="covered" data-hits="1" data-linenumber="36"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;lets you edit the homepage&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="37"> + <span class="hits">1</span> + + <code class="ruby"> click_link &#39;Voyager Home&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="38"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="39"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_field &#39;Page Title&#39;, with: &#39;Voyager Home&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="40"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_button &#39;Save Changes&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="41"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_content &#39;Last Updated by Kathryn Janeway&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="42"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="43"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="44"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;lets you remove the homepage&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="45"> + <span class="hits">1</span> + + <code class="ruby"> click_link &#39;Remove&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="46"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="47"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_content &#39;Are you sure you want to permanently remove the following Page?&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="48"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="49"> + <span class="hits">1</span> + + <code class="ruby"> click_button &#39;Delete Page&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="50"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="51"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_content &#39;No Pages&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="52"> + <span class="hits">1</span> + + <code class="ruby"> expect(page).to have_link &#39;New Homepage&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="53"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="54"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="55"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="f651b1e0d6b03b639bb1910679349dcb5c4906d8"> + <div class="header"> + <h3>spec/models/layout_spec.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <b>19</b> relevant lines. + <span class="green"><b>19</b> lines covered</span> and + <span class="red"><b>0</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">require &#39;spec_helper&#39;</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby">describe Layout do</code> + </li> + + <li class="never" data-hits="" data-linenumber="4"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="5"> + <span class="hits">1</span> + + <code class="ruby"> let(:layout){ FactoryGirl.build(:layout) }</code> + </li> + + <li class="never" data-hits="" data-linenumber="6"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="7"> + <span class="hits">1</span> + + <code class="ruby"> describe &#39;name&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="8"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;is invalid when blank&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="9"> + <span class="hits">1</span> + + <code class="ruby"> layout = FactoryGirl.build(:layout, name: &#39;&#39;)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="10"> + <span class="hits">1</span> + + <code class="ruby"> layout.valid?</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="11"> + <span class="hits">1</span> + + <code class="ruby"> expect(layout.errors[:name]).to include(&quot;this must not be blank&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="12"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="13"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="14"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;should validate uniqueness of&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="15"> + <span class="hits">1</span> + + <code class="ruby"> layout = FactoryGirl.build(:layout, name: &#39;Normal&#39;, content: &quot;Content!&quot;)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="16"> + <span class="hits">1</span> + + <code class="ruby"> layout.save!</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="17"> + <span class="hits">1</span> + + <code class="ruby"> other = FactoryGirl.build(:layout, name: &#39;Normal&#39;, content: &quot;Content!&quot;)</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="18"> + <span class="hits">2</span> + + <code class="ruby"> expect{other.save!}.to raise_error(ActiveRecord::RecordInvalid)</code> + </li> + + <li class="never" data-hits="" data-linenumber="19"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="20"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="21"> + <span class="hits">1</span> + + <code class="ruby"> it &#39;should validate length of&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="22"> + <span class="hits">1</span> + + <code class="ruby"> layout = FactoryGirl.build(:layout, name: &#39;x&#39; * 100)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="23"> + <span class="hits">1</span> + + <code class="ruby"> expect(layout.errors[:name]).to be_blank</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="24"> + <span class="hits">1</span> + + <code class="ruby"> layout = FactoryGirl.build(:layout, name: &#39;x&#39; * 101)</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="25"> + <span class="hits">2</span> + + <code class="ruby"> expect{layout.save!}.to raise_error(ActiveRecord::RecordInvalid)</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="26"> + <span class="hits">1</span> + + <code class="ruby"> expect(layout.errors[:name]).to include(&quot;this must not be longer than 100 characters&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="27"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="28"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="29"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="5e6e398d1f9a901307ea91dab9ee535aa8c9a444"> + <div class="header"> + <h3>spec/rails_helper.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <b>24</b> relevant lines. + <span class="green"><b>24</b> lines covered</span> and + <span class="red"><b>0</b> lines missed.</span> + </div> + </div> + + <pre> + <ol> + + <li class="never" data-hits="" data-linenumber="1"> + + + <code class="ruby"># This file is copied to spec/ when you run &#39;rails generate rspec:install&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="2"> + <span class="hits">1</span> + + <code class="ruby">ENV[&quot;RAILS_ENV&quot;] ||= &#39;test&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby">require &#39;spec_helper&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="4"> + <span class="hits">1</span> + + <code class="ruby">require &#39;rspec/rails&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="5"> + <span class="hits">1</span> + + <code class="ruby">require &#39;capybara/rails&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="6"> + <span class="hits">1</span> + + <code class="ruby">require &#39;capybara/poltergeist&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="7"> + <span class="hits">1</span> + + <code class="ruby">Capybara.javascript_driver = :poltergeist</code> + </li> + + <li class="never" data-hits="" data-linenumber="8"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="9"> + <span class="hits">1</span> + + <code class="ruby">Capybara.register_driver :poltergeist do |app|</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="10"> + <span class="hits">1</span> + + <code class="ruby"> Capybara::Poltergeist::Driver.new(app, timeout: 60)</code> + </li> + + <li class="never" data-hits="" data-linenumber="11"> + + + <code class="ruby">end</code> + </li> + + <li class="never" data-hits="" data-linenumber="12"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="13"> + <span class="hits">1</span> + + <code class="ruby">require &#39;database_cleaner&#39;</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="14"> + <span class="hits">1</span> + + <code class="ruby">DatabaseCleaner.strategy = :truncation, {except: %w[config]}</code> + </li> + + <li class="never" data-hits="" data-linenumber="15"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="16"> + + + <code class="ruby"># Requires supporting ruby files with custom matchers and macros, etc, in</code> + </li> + + <li class="never" data-hits="" data-linenumber="17"> + + + <code class="ruby"># spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are</code> + </li> + + <li class="never" data-hits="" data-linenumber="18"> + + + <code class="ruby"># run as spec files by default. This means that files in spec/support that end</code> + </li> + + <li class="never" data-hits="" data-linenumber="19"> + + + <code class="ruby"># in _spec.rb will both be required and run as specs, causing the specs to be</code> + </li> + + <li class="never" data-hits="" data-linenumber="20"> + + + <code class="ruby"># run twice. It is recommended that you do not name files matching this glob to</code> + </li> + + <li class="never" data-hits="" data-linenumber="21"> + + + <code class="ruby"># end with _spec.rb. You can configure this pattern with with the --pattern</code> + </li> + + <li class="never" data-hits="" data-linenumber="22"> + + + <code class="ruby"># option on the command line or in ~/.rspec, .rspec or `.rspec-local`.</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="23"> + <span class="hits">1</span> + + <code class="ruby">Dir[Rails.root.join(&quot;spec/support/**/*.rb&quot;)].each { |f| require f }</code> + </li> + + <li class="never" data-hits="" data-linenumber="24"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="25"> + <span class="hits">1</span> + + <code class="ruby">RSpec.configure do |config|</code> + </li> + + <li class="never" data-hits="" data-linenumber="26"> + + + <code class="ruby"> # Remove this line if you&#39;re not using ActiveRecord or ActiveRecord fixtures</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="27"> + <span class="hits">1</span> + + <code class="ruby"> config.fixture_path = &quot;#{::TRUSTY_CMS_ROOT}/spec/fixtures&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="28"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="29"> + + + <code class="ruby"> # If you&#39;re not using ActiveRecord, or you&#39;d prefer not to run each of your</code> + </li> + + <li class="never" data-hits="" data-linenumber="30"> + + + <code class="ruby"> # examples within a transaction, remove the following line or assign false</code> + </li> + + <li class="never" data-hits="" data-linenumber="31"> + + + <code class="ruby"> # instead of true.</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="32"> + <span class="hits">1</span> + + <code class="ruby"> config.use_transactional_fixtures = false</code> + </li> + + <li class="never" data-hits="" data-linenumber="33"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="34"> + + + <code class="ruby"> # RSpec Rails can automatically mix in different behaviours to your tests</code> + </li> + + <li class="never" data-hits="" data-linenumber="35"> + + + <code class="ruby"> # based on their file location, for example enabling you to call `get` and</code> + </li> + + <li class="never" data-hits="" data-linenumber="36"> + + + <code class="ruby"> # `post` in specs under `spec/controllers`.</code> + </li> + + <li class="never" data-hits="" data-linenumber="37"> + + + <code class="ruby"> #</code> + </li> + + <li class="never" data-hits="" data-linenumber="38"> + + + <code class="ruby"> # You can disable this behaviour by removing the line below, and instead</code> + </li> + + <li class="never" data-hits="" data-linenumber="39"> + + + <code class="ruby"> # explicitly tag your specs with their type, e.g.:</code> + </li> + + <li class="never" data-hits="" data-linenumber="40"> + + + <code class="ruby"> #</code> + </li> + + <li class="never" data-hits="" data-linenumber="41"> + + + <code class="ruby"> # RSpec.describe UsersController, :type =&gt; :controller do</code> + </li> + + <li class="never" data-hits="" data-linenumber="42"> + + + <code class="ruby"> # # ...</code> + </li> + + <li class="never" data-hits="" data-linenumber="43"> + + + <code class="ruby"> # end</code> + </li> + + <li class="never" data-hits="" data-linenumber="44"> + + + <code class="ruby"> #</code> + </li> + + <li class="never" data-hits="" data-linenumber="45"> + + + <code class="ruby"> # The different available types are documented in the features, such as in</code> + </li> + + <li class="never" data-hits="" data-linenumber="46"> + + + <code class="ruby"> # https://relishapp.com/rspec/rspec-rails/docs</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="47"> + <span class="hits">1</span> + + <code class="ruby"> config.infer_spec_type_from_file_location!</code> + </li> + + <li class="never" data-hits="" data-linenumber="48"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="49"> + <span class="hits">1</span> + + <code class="ruby"> config.before(:suite) do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="50"> + <span class="hits">1</span> + + <code class="ruby"> TrustyCms::Config.initialize_cache</code> + </li> + + <li class="never" data-hits="" data-linenumber="51"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="52"> + <span class="hits">1</span> + + <code class="ruby"> configs = [</code> + </li> + + <li class="never" data-hits="" data-linenumber="53"> + + + <code class="ruby"> [&#39;admin.title&#39;, &#39;TrustyCMS&#39;],</code> + </li> + + <li class="never" data-hits="" data-linenumber="54"> + + + <code class="ruby"> [&#39;admin.subtitle&#39;, &#39;Publishing for Small Teams&#39;],</code> + </li> + + <li class="never" data-hits="" data-linenumber="55"> + + + <code class="ruby"> [&#39;defaults.page.parts&#39;, &#39;body, extended&#39;],</code> + </li> + + <li class="never" data-hits="" data-linenumber="56"> + + + <code class="ruby"> [&#39;defaults.page.status&#39;, &#39;Draft&#39;],</code> + </li> + + <li class="never" data-hits="" data-linenumber="57"> + + + <code class="ruby"> [&#39;defaults.page.filter&#39;, nil],</code> + </li> + + <li class="never" data-hits="" data-linenumber="58"> + + + <code class="ruby"> [&#39;defaults.page.fields&#39;, &#39;Keywords, Description&#39;],</code> + </li> + + <li class="never" data-hits="" data-linenumber="59"> + + + <code class="ruby"> [&#39;defaults.snippet.filter&#39;, nil],</code> + </li> + + <li class="never" data-hits="" data-linenumber="60"> + + + <code class="ruby"> [&#39;session_timeout&#39;, &#39;1209600&#39;], # 2.weeks.to_s ????</code> + </li> + + <li class="never" data-hits="" data-linenumber="61"> + + + <code class="ruby"> [&#39;default_locale&#39;, &#39;en&#39;],</code> + </li> + + <li class="never" data-hits="" data-linenumber="62"> + + + <code class="ruby"> ]</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="63"> + <span class="hits">1</span> + + <code class="ruby"> configs.each do |key, value|</code> + </li> + + <li class="covered" data-hits="9" data-linenumber="64"> + <span class="hits">9</span> + + <code class="ruby"> c = TrustyCms::Config.find_or_initialize_by(key: key)</code> + </li> + + <li class="covered" data-hits="9" data-linenumber="65"> + <span class="hits">9</span> + + <code class="ruby"> c.value = value</code> + </li> + + <li class="covered" data-hits="9" data-linenumber="66"> + <span class="hits">9</span> + + <code class="ruby"> c.save</code> + </li> + + <li class="never" data-hits="" data-linenumber="67"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="68"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="69"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="70"> + <span class="hits">1</span> + + <code class="ruby"> config.after(:each) do</code> + </li> + + <li class="covered" data-hits="28" data-linenumber="71"> + <span class="hits">28</span> + + <code class="ruby"> DatabaseCleaner.clean</code> + </li> + + <li class="never" data-hits="" data-linenumber="72"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="73"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + + <div class="source_table" id="e26ef2de8407666da2a4b16334e43c210a4e8735"> + <div class="header"> + <h3>spec/routing/welcome_routing_spec.rb</h3> + <h4><span class="green">100.0 %</span> covered</h4> + <div> + <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> + + <li class="covered" data-hits="1" data-linenumber="1"> + <span class="hits">1</span> + + <code class="ruby">require &quot;rails_helper&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="2"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="3"> + <span class="hits">1</span> + + <code class="ruby">RSpec.describe &quot;routes for Welcome&quot;, :type =&gt; :routing do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="4"> + <span class="hits">1</span> + + <code class="ruby"> it &quot;routes /admin/welcome to the admin/welcome controller&quot; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="5"> + <span class="hits">1</span> + + <code class="ruby"> expect(get(&quot;/admin/welcome&quot;)).</code> + </li> + + <li class="never" data-hits="" data-linenumber="6"> + + + <code class="ruby"> to route_to(&quot;admin/welcome#index&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="7"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="8"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="9"> + <span class="hits">1</span> + + <code class="ruby"> it &quot;routes /admin/login to the admin/welcome controller&quot; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="10"> + <span class="hits">1</span> + + <code class="ruby"> expect(get(&quot;/admin/login&quot;)).</code> + </li> + + <li class="never" data-hits="" data-linenumber="11"> + + + <code class="ruby"> to route_to(&quot;admin/welcome#login&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="12"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="13"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="14"> + <span class="hits">1</span> + + <code class="ruby"> it &quot;routes /admin/logout to the admin/welcome controller&quot; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="15"> + <span class="hits">1</span> + + <code class="ruby"> expect(get(&quot;/admin/logout&quot;)).</code> + </li> + + <li class="never" data-hits="" data-linenumber="16"> + + + <code class="ruby"> to route_to(&quot;admin/welcome#logout&quot;)</code> + </li> + + <li class="never" data-hits="" data-linenumber="17"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="18"> + + + <code class="ruby">end</code> + </li> + + </ol> + </pre> +</div> + <div class="source_table" id="992b2e5d02f76777327edeb5263d89e2cab32d72"> <div class="header"> <h3>spec/support/custom_actions.rb</h3> - <h4><span class="red">20.0 %</span> covered</h4> + <h4><span class="green">100.0 %</span> covered</h4> <div> <b>5</b> relevant lines. - <span class="green"><b>1</b> lines covered</span> and - <span class="red"><b>4</b> lines missed.</span> + <span class="green"><b>5</b> lines covered</span> and + <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> <ol> @@ -6258,29 +17628,29 @@ <span class="hits">1</span> <code class="ruby">def log_in_as(login, plaintext_password = &#39;password&#39;)</code> </li> - <li class="missed" data-hits="0" data-linenumber="5"> + <li class="covered" data-hits="21" data-linenumber="5"> + <span class="hits">21</span> - <code class="ruby"> visit &#39;/&#39;</code> </li> - <li class="missed" data-hits="0" data-linenumber="6"> + <li class="covered" data-hits="21" data-linenumber="6"> + <span class="hits">21</span> - <code class="ruby"> fill_in &#39;username_or_email&#39;, with: login</code> </li> - <li class="missed" data-hits="0" data-linenumber="7"> + <li class="covered" data-hits="21" data-linenumber="7"> + <span class="hits">21</span> - <code class="ruby"> fill_in &#39;password&#39;, with: plaintext_password</code> </li> - <li class="missed" data-hits="0" data-linenumber="8"> - + <li class="covered" data-hits="21" data-linenumber="8"> + <span class="hits">21</span> <code class="ruby"> click_on &#39;Login&#39;</code> </li> <li class="never" data-hits="" data-linenumber="9">