Last-Modified: Sat, 26 Jul 2025 19:51:29 GMT
Expires: Tue, 24 Jul 2035 19:51:29 GMT

<!DOCTYPE html>
<html lang='en'>
<head>
<title>389752: annotation value matching fixes - multiple anno values correctly resolved now and enum values compared correctly - aspectj.git - A seamless aspect-oriented extension to the Java programming language: https://github.com/eclipse-aspectj/aspectj</title>
<meta name='generator' content='cgit v1.2.3'/>
<meta name='robots' content='index, nofollow'/>
<link rel='stylesheet' type='text/css' href='/cgit.css'/>
<link rel='shortcut icon' href='/favicon.ico'/>
<link rel='alternate' title='Atom feed' href='https://source.dussan.org/aspectj.git/atom/build?h=master' type='application/atom+xml'/>
</head>
<body>
<div id='cgit'><table id='header'>
<tr>
<td class='logo' rowspan='2'><a href='/'><img src='/cgit.png' alt='cgit logo'/></a></td>
<td class='main'><a href='/'>index</a> : <a href='/aspectj.git/'>aspectj.git</a></td><td class='form'><form method='get'>
<input type='hidden' name='id' value='0d69bd3eba361bcfb1ba013466841ee3611b3531'/><select name='h' onchange='this.form.submit();'>
<option value='1.8.x'>1.8.x</option>
<option value='356694'>356694</option>
<option value='AspectJ5_Development'>AspectJ5_Development</option>
<option value='BETA_JAVA8'>BETA_JAVA8</option>
<option value='RB_V1_5_0'>RB_V1_5_0</option>
<option value='RB_V1_8'>RB_V1_8</option>
<option value='RB_V_1_5_2'>RB_V_1_5_2</option>
<option value='V1_6_X'>V1_6_X</option>
<option value='V1_8_X'>V1_8_X</option>
<option value='ajdt_support'>ajdt_support</option>
<option value='antora'>antora</option>
<option value='bug356694'>bug356694</option>
<option value='bug433351'>bug433351</option>
<option value='conditionalThis'>conditionalThis</option>
<option value='dependabot/maven/com.thoughtworks.xstream-xstream-1.4.20'>dependabot/maven/com.thoughtworks.xstream-xstream-1.4.20</option>
<option value='dependabot/maven/commons-logging-commons-logging-1.2'>dependabot/maven/commons-logging-commons-logging-1.2</option>
<option value='dependabot/maven/org.apache.maven.plugins-maven-assembly-plugin-3.5.0'>dependabot/maven/org.apache.maven.plugins-maven-assembly-plugin-3.5.0</option>
<option value='dependabot/maven/org.apache.maven.plugins-maven-clean-plugin-3.3.1'>dependabot/maven/org.apache.maven.plugins-maven-clean-plugin-3.3.1</option>
<option value='dependabot/maven/org.apache.maven.plugins-maven-compiler-plugin-3.11.0'>dependabot/maven/org.apache.maven.plugins-maven-compiler-plugin-3.11.0</option>
<option value='dependabot/maven/org.apache.maven.plugins-maven-gpg-plugin-3.1.0'>dependabot/maven/org.apache.maven.plugins-maven-gpg-plugin-3.1.0</option>
<option value='dependabot/maven/org.apache.maven.plugins-maven-help-plugin-3.4.0'>dependabot/maven/org.apache.maven.plugins-maven-help-plugin-3.4.0</option>
<option value='dependabot/maven/org.apache.maven.plugins-maven-javadoc-plugin-3.5.0'>dependabot/maven/org.apache.maven.plugins-maven-javadoc-plugin-3.5.0</option>
<option value='dependabot/maven/org.codehaus.mojo-build-helper-maven-plugin-3.3.0'>dependabot/maven/org.codehaus.mojo-build-helper-maven-plugin-3.3.0</option>
<option value='dependabot/maven/org.codehaus.mojo-flatten-maven-plugin-1.4.0'>dependabot/maven/org.codehaus.mojo-flatten-maven-plugin-1.4.0</option>
<option value='earlyJava9'>earlyJava9</option>
<option value='extensions'>extensions</option>
<option value='gh-217'>gh-217</option>
<option value='gh-314'>gh-314</option>
<option value='invokedynamic'>invokedynamic</option>
<option value='java-21'>java-21</option>
<option value='java8'>java8</option>
<option value='master' selected='selected'>master</option>
<option value='maven_build'>maven_build</option>
<option value='origin'>origin</option>
<option value='paramAnnotationBinding'>paramAnnotationBinding</option>
<option value='param_anno_matching_change'>param_anno_matching_change</option>
<option value='refactoring'>refactoring</option>
<option value='transientTjp'>transientTjp</option>
<option value='verification'>verification</option>
</select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>A seamless aspect-oriented extension to the Java programming language: https://github.com/eclipse-aspectj/aspectj</td><td class='sub right'>www-data</td></tr></table>
<table class='tabs'><tr><td>
<a href='/aspectj.git/about/'>about</a><a href='/aspectj.git/'>summary</a><a href='/aspectj.git/refs/?id=0d69bd3eba361bcfb1ba013466841ee3611b3531'>refs</a><a href='/aspectj.git/log/build'>log</a><a href='/aspectj.git/tree/build?id=0d69bd3eba361bcfb1ba013466841ee3611b3531'>tree</a><a class='active' href='/aspectj.git/commit/build?id=0d69bd3eba361bcfb1ba013466841ee3611b3531'>commit</a><a href='/aspectj.git/diff/build?id=0d69bd3eba361bcfb1ba013466841ee3611b3531'>diff</a><a href='/aspectj.git/stats/build'>stats</a></td><td class='form'><form class='right' method='get' action='/aspectj.git/log/build'>
<input type='hidden' name='id' value='0d69bd3eba361bcfb1ba013466841ee3611b3531'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/aspectj.git/commit/?id=0d69bd3eba361bcfb1ba013466841ee3611b3531'>root</a>/<a href='/aspectj.git/commit/build?id=0d69bd3eba361bcfb1ba013466841ee3611b3531'>build</a></div><div class='content'><div class='cgit-panel'><b>diff options</b><form method='get'><input type='hidden' name='id' value='0d69bd3eba361bcfb1ba013466841ee3611b3531'/><table><tr><td colspan='2'/></tr><tr><td class='label'>context:</td><td class='ctrl'><select name='context' onchange='this.form.submit();'><option value='1'>1</option><option value='2'>2</option><option value='3' selected='selected'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option><option value='15'>15</option><option value='20'>20</option><option value='25'>25</option><option value='30'>30</option><option value='35'>35</option><option value='40'>40</option></select></td></tr><tr><td class='label'>space:</td><td class='ctrl'><select name='ignorews' onchange='this.form.submit();'><option value='0' selected='selected'>include</option><option value='1'>ignore</option></select></td></tr><tr><td class='label'>mode:</td><td class='ctrl'><select name='dt' onchange='this.form.submit();'><option value='0' selected='selected'>unified</option><option value='1'>ssdiff</option><option value='2'>stat only</option></select></td></tr><tr><td/><td class='ctrl'><noscript><input type='submit' value='reload'/></noscript></td></tr></table></form></div><table summary='commit info' class='commit-info'>
<tr><th>author</th><td>Andy Clement &lt;andrew.clement@gmail.com&gt;</td><td class='right'>2012-09-19 16:35:53 -0700</td></tr>
<tr><th>committer</th><td>Andy Clement &lt;andrew.clement@gmail.com&gt;</td><td class='right'>2012-09-19 16:35:53 -0700</td></tr>
<tr><th>commit</th><td colspan='2' class='oid'><a href='/aspectj.git/commit/build?id=0d69bd3eba361bcfb1ba013466841ee3611b3531'>0d69bd3eba361bcfb1ba013466841ee3611b3531</a> (<a href='/aspectj.git/patch/build?id=0d69bd3eba361bcfb1ba013466841ee3611b3531'>patch</a>)</td></tr>
<tr><th>tree</th><td colspan='2' class='oid'><a href='/aspectj.git/tree/?id=0d69bd3eba361bcfb1ba013466841ee3611b3531'>49ca4cf07cca3123b7495d5da83c7a58dd376b63</a> /<a href='/aspectj.git/tree/build?id=0d69bd3eba361bcfb1ba013466841ee3611b3531'>build</a></td></tr>
<tr><th>parent</th><td colspan='2' class='oid'><a href='/aspectj.git/commit/build?id=b9c7a190f452cf888854e4fa6599269a5a2c0212'>b9c7a190f452cf888854e4fa6599269a5a2c0212</a> (<a href='/aspectj.git/diff/build?id=0d69bd3eba361bcfb1ba013466841ee3611b3531&amp;id2=b9c7a190f452cf888854e4fa6599269a5a2c0212'>diff</a>)</td></tr><tr><th>download</th><td colspan='2' class='oid'><a href='/aspectj.git/snapshot/aspectj-0d69bd3eba361bcfb1ba013466841ee3611b3531.tar.gz'>aspectj-0d69bd3eba361bcfb1ba013466841ee3611b3531.tar.gz</a><br/><a href='/aspectj.git/snapshot/aspectj-0d69bd3eba361bcfb1ba013466841ee3611b3531.zip'>aspectj-0d69bd3eba361bcfb1ba013466841ee3611b3531.zip</a><br/></td></tr></table>
<div class='commit-subject'>389752: annotation value matching fixes - multiple anno values correctly resolved now and enum values compared correctly</div><div class='commit-msg'></div><div class='diffstat-header'><a href='/aspectj.git/diff/?id=0d69bd3eba361bcfb1ba013466841ee3611b3531'>Diffstat</a> (limited to 'build')</div><table summary='diffstat' class='diffstat'></table><div class='diffstat-summary'>0 files changed, 0 insertions, 0 deletions</div><table summary='diff' class='diff'><tr><td></td></tr></table></div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.3</a> (<a href='https://git-scm.com/'>git 2.39.1</a>) at 2025-07-26 19:51:29 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
d='n152' href='#n152'>152</a>
<a id='n153' href='#n153'>153</a>
<a id='n154' href='#n154'>154</a>
<a id='n155' href='#n155'>155</a>
<a id='n156' href='#n156'>156</a>
<a id='n157' href='#n157'>157</a>
<a id='n158' href='#n158'>158</a>
<a id='n159' href='#n159'>159</a>
<a id='n160' href='#n160'>160</a>
<a id='n161' href='#n161'>161</a>
<a id='n162' href='#n162'>162</a>
<a id='n163' href='#n163'>163</a>
<a id='n164' href='#n164'>164</a>
<a id='n165' href='#n165'>165</a>
<a id='n166' href='#n166'>166</a>
<a id='n167' href='#n167'>167</a>
<a id='n168' href='#n168'>168</a>
<a id='n169' href='#n169'>169</a>
<a id='n170' href='#n170'>170</a>
<a id='n171' href='#n171'>171</a>
<a id='n172' href='#n172'>172</a>
<a id='n173' href='#n173'>173</a>
<a id='n174' href='#n174'>174</a>
<a id='n175' href='#n175'>175</a>
<a id='n176' href='#n176'>176</a>
<a id='n177' href='#n177'>177</a>
<a id='n178' href='#n178'>178</a>
<a id='n179' href='#n179'>179</a>
<a id='n180' href='#n180'>180</a>
<a id='n181' href='#n181'>181</a>
<a id='n182' href='#n182'>182</a>
<a id='n183' href='#n183'>183</a>
<a id='n184' href='#n184'>184</a>
<a id='n185' href='#n185'>185</a>
<a id='n186' href='#n186'>186</a>
<a id='n187' href='#n187'>187</a>
<a id='n188' href='#n188'>188</a>
<a id='n189' href='#n189'>189</a>
<a id='n190' href='#n190'>190</a>
<a id='n191' href='#n191'>191</a>
<a id='n192' href='#n192'>192</a>
<a id='n193' href='#n193'>193</a>
<a id='n194' href='#n194'>194</a>
<a id='n195' href='#n195'>195</a>
<a id='n196' href='#n196'>196</a>
<a id='n197' href='#n197'>197</a>
<a id='n198' href='#n198'>198</a>
<a id='n199' href='#n199'>199</a>
<a id='n200' href='#n200'>200</a>
<a id='n201' href='#n201'>201</a>
<a id='n202' href='#n202'>202</a>
<a id='n203' href='#n203'>203</a>
<a id='n204' href='#n204'>204</a>
<a id='n205' href='#n205'>205</a>
<a id='n206' href='#n206'>206</a>
<a id='n207' href='#n207'>207</a>
<a id='n208' href='#n208'>208</a>
<a id='n209' href='#n209'>209</a>
<a id='n210' href='#n210'>210</a>
<a id='n211' href='#n211'>211</a>
<a id='n212' href='#n212'>212</a>
<a id='n213' href='#n213'>213</a>
<a id='n214' href='#n214'>214</a>
<a id='n215' href='#n215'>215</a>
<a id='n216' href='#n216'>216</a>
<a id='n217' href='#n217'>217</a>
<a id='n218' href='#n218'>218</a>
<a id='n219' href='#n219'>219</a>
<a id='n220' href='#n220'>220</a>
</pre></td>
<td class='lines'><pre><code><style>pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */</style><div class="highlight"><pre><span></span><span class="c1"># redMine - project management software</span>
<span class="c1"># Copyright (C) 2006-2007  Jean-Philippe Lang</span>
<span class="c1">#</span>
<span class="c1"># This program is free software; you can redistribute it and/or</span>
<span class="c1"># modify it under the terms of the GNU General Public License</span>
<span class="c1"># as published by the Free Software Foundation; either version 2</span>
<span class="c1"># of the License, or (at your option) any later version.</span>
<span class="c1"># </span>
<span class="c1"># This program is distributed in the hope that it will be useful,</span>
<span class="c1"># but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<span class="c1"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<span class="c1"># GNU General Public License for more details.</span>
<span class="c1"># </span>
<span class="c1"># You should have received a copy of the GNU General Public License</span>
<span class="c1"># along with this program; if not, write to the Free Software</span>
<span class="c1"># Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.</span>

<span class="nb">require</span><span class="w"> </span><span class="no">File</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="bp">__FILE__</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">&#39;/../test_helper&#39;</span>
<span class="nb">require</span><span class="w"> </span><span class="s1">&#39;timelog_controller&#39;</span>

<span class="c1"># Re-raise errors caught by the controller.</span>
<span class="k">class</span><span class="w"> </span><span class="nc">TimelogController</span><span class="p">;</span><span class="w"> </span><span class="k">def</span><span class="w"> </span><span class="nf">rescue_action</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="k">raise</span><span class="w"> </span><span class="n">e</span><span class="w"> </span><span class="k">end</span><span class="p">;</span><span class="w"> </span><span class="k">end</span>

<span class="k">class</span><span class="w"> </span><span class="nc">TimelogControllerTest</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="no">Test</span><span class="o">::</span><span class="no">Unit</span><span class="o">::</span><span class="no">TestCase</span>
<span class="w">  </span><span class="n">fixtures</span><span class="w"> </span><span class="ss">:projects</span><span class="p">,</span><span class="w"> </span><span class="ss">:enabled_modules</span><span class="p">,</span><span class="w"> </span><span class="ss">:roles</span><span class="p">,</span><span class="w"> </span><span class="ss">:members</span><span class="p">,</span><span class="w"> </span><span class="ss">:issues</span><span class="p">,</span><span class="w"> </span><span class="ss">:time_entries</span><span class="p">,</span><span class="w"> </span><span class="ss">:users</span><span class="p">,</span><span class="w"> </span><span class="ss">:trackers</span><span class="p">,</span><span class="w"> </span><span class="ss">:enumerations</span><span class="p">,</span><span class="w"> </span><span class="ss">:issue_statuses</span><span class="p">,</span><span class="w"> </span><span class="ss">:custom_fields</span><span class="p">,</span><span class="w"> </span><span class="ss">:custom_values</span>

<span class="w">  </span><span class="k">def</span><span class="w"> </span><span class="nf">setup</span>
<span class="w">    </span><span class="vi">@controller</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">TimelogController</span><span class="o">.</span><span class="n">new</span>
<span class="w">    </span><span class="vi">@request</span><span class="w">    </span><span class="o">=</span><span class="w"> </span><span class="no">ActionController</span><span class="o">::</span><span class="no">TestRequest</span><span class="o">.</span><span class="n">new</span>
<span class="w">    </span><span class="vi">@response</span><span class="w">   </span><span class="o">=</span><span class="w"> </span><span class="no">ActionController</span><span class="o">::</span><span class="no">TestResponse</span><span class="o">.</span><span class="n">new</span>
<span class="w">  </span><span class="k">end</span>
<span class="w">  </span>
<span class="w">  </span><span class="k">def</span><span class="w"> </span><span class="nf">test_get_edit</span>
<span class="w">    </span><span class="vi">@request</span><span class="o">.</span><span class="n">session</span><span class="o">[</span><span class="ss">:user_id</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">3</span>
<span class="w">    </span><span class="n">get</span><span class="w"> </span><span class="ss">:edit</span><span class="p">,</span><span class="w"> </span><span class="ss">:project_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span>
<span class="w">    </span><span class="n">assert_response</span><span class="w"> </span><span class="ss">:success</span>
<span class="w">    </span><span class="n">assert_template</span><span class="w"> </span><span class="s1">&#39;edit&#39;</span>
<span class="w">    </span><span class="c1"># Default activity selected</span>
<span class="w">    </span><span class="n">assert_tag</span><span class="w"> </span><span class="ss">:tag</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;option&#39;</span><span class="p">,</span><span class="w"> </span><span class="ss">:attributes</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="ss">:selected</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;selected&#39;</span><span class="w"> </span><span class="p">},</span>
<span class="w">                                 </span><span class="ss">:content</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;Development&#39;</span>
<span class="w">  </span><span class="k">end</span>
<span class="w">  </span>
<span class="w">  </span><span class="k">def</span><span class="w"> </span><span class="nf">test_post_edit</span>
<span class="w">    </span><span class="vi">@request</span><span class="o">.</span><span class="n">session</span><span class="o">[</span><span class="ss">:user_id</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">3</span>
<span class="w">    </span><span class="n">post</span><span class="w"> </span><span class="ss">:edit</span><span class="p">,</span><span class="w"> </span><span class="ss">:project_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w">                </span><span class="ss">:time_entry</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="ss">:comments</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;Some work on TimelogControllerTest&#39;</span><span class="p">,</span>
<span class="w">                                </span><span class="c1"># Not the default activity</span>
<span class="w">                                </span><span class="ss">:activity_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;11&#39;</span><span class="p">,</span>
<span class="w">                                </span><span class="ss">:spent_on</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;2008-03-14&#39;</span><span class="p">,</span>
<span class="w">                                </span><span class="ss">:issue_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;1&#39;</span><span class="p">,</span>
<span class="w">                                </span><span class="ss">:hours</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;7.3&#39;</span><span class="p">}</span>
<span class="w">    </span><span class="n">assert_redirected_to</span><span class="w"> </span><span class="s1">&#39;projects/ecookbook/timelog/details&#39;</span>
<span class="w">    </span>
<span class="w">    </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">Issue</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="w">    </span><span class="n">t</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">TimeEntry</span><span class="o">.</span><span class="n">find_by_comments</span><span class="p">(</span><span class="s1">&#39;Some work on TimelogControllerTest&#39;</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_not_nil</span><span class="w"> </span><span class="n">t</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="mi">11</span><span class="p">,</span><span class="w"> </span><span class="n">t</span><span class="o">.</span><span class="n">activity_id</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="mi">7</span><span class="o">.</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="n">t</span><span class="o">.</span><span class="n">hours</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="n">t</span><span class="o">.</span><span class="n">user_id</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="n">i</span><span class="p">,</span><span class="w"> </span><span class="n">t</span><span class="o">.</span><span class="n">issue</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="n">i</span><span class="o">.</span><span class="n">project</span><span class="p">,</span><span class="w"> </span><span class="n">t</span><span class="o">.</span><span class="n">project</span>
<span class="w">  </span><span class="k">end</span>
<span class="w">  </span>
<span class="w">  </span><span class="k">def</span><span class="w"> </span><span class="nf">test_update</span>
<span class="w">    </span><span class="n">entry</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">TimeEntry</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="o">.</span><span class="n">issue_id</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="o">.</span><span class="n">user_id</span>
<span class="w">    </span>
<span class="w">    </span><span class="vi">@request</span><span class="o">.</span><span class="n">session</span><span class="o">[</span><span class="ss">:user_id</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span>
<span class="w">    </span><span class="n">post</span><span class="w"> </span><span class="ss">:edit</span><span class="p">,</span><span class="w"> </span><span class="ss">:id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w">                </span><span class="ss">:time_entry</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="ss">:issue_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;2&#39;</span><span class="p">,</span>
<span class="w">                                </span><span class="ss">:hours</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;8&#39;</span><span class="p">}</span>
<span class="w">    </span><span class="n">assert_redirected_to</span><span class="w"> </span><span class="s1">&#39;projects/ecookbook/timelog/details&#39;</span>
<span class="w">    </span><span class="n">entry</span><span class="o">.</span><span class="n">reload</span>
<span class="w">    </span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="mi">8</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="o">.</span><span class="n">hours</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="o">.</span><span class="n">issue_id</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="o">.</span><span class="n">user_id</span>
<span class="w">  </span><span class="k">end</span>
<span class="w">  </span>
<span class="w">  </span><span class="k">def</span><span class="w"> </span><span class="nf">destroy</span>
<span class="w">    </span><span class="vi">@request</span><span class="o">.</span><span class="n">session</span><span class="o">[</span><span class="ss">:user_id</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span>
<span class="w">    </span><span class="n">post</span><span class="w"> </span><span class="ss">:destroy</span><span class="p">,</span><span class="w"> </span><span class="ss">:id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span>
<span class="w">    </span><span class="n">assert_redirected_to</span><span class="w"> </span><span class="s1">&#39;projects/ecookbook/timelog/details&#39;</span>
<span class="w">    </span><span class="n">assert_nil</span><span class="w"> </span><span class="no">TimeEntry</span><span class="o">.</span><span class="n">find_by_id</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="w">  </span><span class="k">end</span>

<span class="w">  </span><span class="k">def</span><span class="w"> </span><span class="nf">test_report_no_criteria</span>
<span class="w">    </span><span class="n">get</span><span class="w"> </span><span class="ss">:report</span><span class="p">,</span><span class="w"> </span><span class="ss">:project_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span>
<span class="w">    </span><span class="n">assert_response</span><span class="w"> </span><span class="ss">:success</span>
<span class="w">    </span><span class="n">assert_template</span><span class="w"> </span><span class="s1">&#39;report&#39;</span>
<span class="w">  </span><span class="k">end</span>

<span class="w">  </span><span class="k">def</span><span class="w"> </span><span class="nf">test_report_all_time</span>
<span class="w">    </span><span class="n">get</span><span class="w"> </span><span class="ss">:report</span><span class="p">,</span><span class="w"> </span><span class="ss">:project_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="ss">:criterias</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span><span class="s1">&#39;project&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;issue&#39;</span><span class="o">]</span>
<span class="w">    </span><span class="n">assert_response</span><span class="w"> </span><span class="ss">:success</span>
<span class="w">    </span><span class="n">assert_template</span><span class="w"> </span><span class="s1">&#39;report&#39;</span>
<span class="w">    </span><span class="n">assert_not_nil</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:total_hours</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="s2">&quot;162.90&quot;</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;%.2f&quot;</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:total_hours</span><span class="p">)</span>
<span class="w">  </span><span class="k">end</span>

<span class="w">  </span><span class="k">def</span><span class="w"> </span><span class="nf">test_report_all_time_by_day</span>
<span class="w">    </span><span class="n">get</span><span class="w"> </span><span class="ss">:report</span><span class="p">,</span><span class="w"> </span><span class="ss">:project_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="ss">:criterias</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span><span class="s1">&#39;project&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;issue&#39;</span><span class="o">]</span><span class="p">,</span><span class="w"> </span><span class="ss">:columns</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;day&#39;</span>
<span class="w">    </span><span class="n">assert_response</span><span class="w"> </span><span class="ss">:success</span>
<span class="w">    </span><span class="n">assert_template</span><span class="w"> </span><span class="s1">&#39;report&#39;</span>
<span class="w">    </span><span class="n">assert_not_nil</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:total_hours</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="s2">&quot;162.90&quot;</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;%.2f&quot;</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:total_hours</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_tag</span><span class="w"> </span><span class="ss">:tag</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;th&#39;</span><span class="p">,</span><span class="w"> </span><span class="ss">:content</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;2007-03-12&#39;</span>
<span class="w">  </span><span class="k">end</span>
<span class="w">  </span>
<span class="w">  </span><span class="k">def</span><span class="w"> </span><span class="nf">test_report_one_criteria</span>
<span class="w">    </span><span class="n">get</span><span class="w"> </span><span class="ss">:report</span><span class="p">,</span><span class="w"> </span><span class="ss">:project_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="ss">:columns</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;week&#39;</span><span class="p">,</span><span class="w"> </span><span class="ss">:from</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;2007-04-01&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:to</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;2007-04-30&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:criterias</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span><span class="s1">&#39;project&#39;</span><span class="o">]</span>
<span class="w">    </span><span class="n">assert_response</span><span class="w"> </span><span class="ss">:success</span>
<span class="w">    </span><span class="n">assert_template</span><span class="w"> </span><span class="s1">&#39;report&#39;</span>
<span class="w">    </span><span class="n">assert_not_nil</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:total_hours</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="s2">&quot;8.65&quot;</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;%.2f&quot;</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:total_hours</span><span class="p">)</span>
<span class="w">  </span><span class="k">end</span>
<span class="w">  </span>
<span class="w">  </span><span class="k">def</span><span class="w"> </span><span class="nf">test_report_two_criterias</span>
<span class="w">    </span><span class="n">get</span><span class="w"> </span><span class="ss">:report</span><span class="p">,</span><span class="w"> </span><span class="ss">:project_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="ss">:columns</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;month&#39;</span><span class="p">,</span><span class="w"> </span><span class="ss">:from</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;2007-01-01&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:to</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;2007-12-31&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:criterias</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span><span class="s2">&quot;member&quot;</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;activity&quot;</span><span class="o">]</span>
<span class="w">    </span><span class="n">assert_response</span><span class="w"> </span><span class="ss">:success</span>
<span class="w">    </span><span class="n">assert_template</span><span class="w"> </span><span class="s1">&#39;report&#39;</span>
<span class="w">    </span><span class="n">assert_not_nil</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:total_hours</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="s2">&quot;162.90&quot;</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;%.2f&quot;</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:total_hours</span><span class="p">)</span>
<span class="w">  </span><span class="k">end</span>
<span class="w">  </span>
<span class="w">  </span><span class="k">def</span><span class="w"> </span><span class="nf">test_report_custom_field_criteria</span>
<span class="w">    </span><span class="n">get</span><span class="w"> </span><span class="ss">:report</span><span class="p">,</span><span class="w"> </span><span class="ss">:project_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="ss">:criterias</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span><span class="s1">&#39;project&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;cf_1&#39;</span><span class="o">]</span>
<span class="w">    </span><span class="n">assert_response</span><span class="w"> </span><span class="ss">:success</span>
<span class="w">    </span><span class="n">assert_template</span><span class="w"> </span><span class="s1">&#39;report&#39;</span>
<span class="w">    </span><span class="n">assert_not_nil</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:total_hours</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_not_nil</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:criterias</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:criterias</span><span class="p">)</span><span class="o">.</span><span class="n">size</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="s2">&quot;162.90&quot;</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;%.2f&quot;</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:total_hours</span><span class="p">)</span>
<span class="w">    </span><span class="c1"># Custom field column</span>
<span class="w">    </span><span class="n">assert_tag</span><span class="w"> </span><span class="ss">:tag</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;th&#39;</span><span class="p">,</span><span class="w"> </span><span class="ss">:content</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;Database&#39;</span>
<span class="w">    </span><span class="c1"># Custom field row</span>
<span class="w">    </span><span class="n">assert_tag</span><span class="w"> </span><span class="ss">:tag</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;td&#39;</span><span class="p">,</span><span class="w"> </span><span class="ss">:content</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;MySQL&#39;</span><span class="p">,</span>
<span class="w">                             </span><span class="ss">:sibling</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="ss">:tag</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;td&#39;</span><span class="p">,</span><span class="w"> </span><span class="ss">:attributes</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="ss">:class</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;hours&#39;</span><span class="w"> </span><span class="p">},</span>
<span class="w">                                                         </span><span class="ss">:child</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="ss">:tag</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;span&#39;</span><span class="p">,</span><span class="w"> </span><span class="ss">:attributes</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="ss">:class</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;hours hours-int&#39;</span><span class="w"> </span><span class="p">},</span>
<span class="w">                                                                                     </span><span class="ss">:content</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;1&#39;</span><span class="w"> </span><span class="p">}}</span>
<span class="w">  </span><span class="k">end</span>
<span class="w">  </span>
<span class="w">  </span><span class="k">def</span><span class="w"> </span><span class="nf">test_report_one_criteria_no_result</span>
<span class="w">    </span><span class="n">get</span><span class="w"> </span><span class="ss">:report</span><span class="p">,</span><span class="w"> </span><span class="ss">:project_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="ss">:columns</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;week&#39;</span><span class="p">,</span><span class="w"> </span><span class="ss">:from</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;1998-04-01&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:to</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;1998-04-30&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:criterias</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span><span class="s1">&#39;project&#39;</span><span class="o">]</span>
<span class="w">    </span><span class="n">assert_response</span><span class="w"> </span><span class="ss">:success</span>
<span class="w">    </span><span class="n">assert_template</span><span class="w"> </span><span class="s1">&#39;report&#39;</span>
<span class="w">    </span><span class="n">assert_not_nil</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:total_hours</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="s2">&quot;0.00&quot;</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;%.2f&quot;</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:total_hours</span><span class="p">)</span>
<span class="w">  </span><span class="k">end</span>
<span class="w"> </span>
<span class="w">  </span><span class="k">def</span><span class="w"> </span><span class="nf">test_report_csv_export</span>
<span class="w">    </span><span class="n">get</span><span class="w"> </span><span class="ss">:report</span><span class="p">,</span><span class="w"> </span><span class="ss">:project_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="ss">:columns</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;month&#39;</span><span class="p">,</span><span class="w"> </span><span class="ss">:from</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;2007-01-01&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:to</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;2007-06-30&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:criterias</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span><span class="s2">&quot;project&quot;</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;member&quot;</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;activity&quot;</span><span class="o">]</span><span class="p">,</span><span class="w"> </span><span class="ss">:format</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;csv&quot;</span>
<span class="w">    </span><span class="n">assert_response</span><span class="w"> </span><span class="ss">:success</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="s1">&#39;text/csv&#39;</span><span class="p">,</span><span class="w"> </span><span class="vi">@response</span><span class="o">.</span><span class="n">content_type</span>
<span class="w">    </span><span class="n">lines</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="vi">@response</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">chomp</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="w">    </span><span class="c1"># Headers</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="s1">&#39;Project,Member,Activity,2007-1,2007-2,2007-3,2007-4,2007-5,2007-6,Total&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">lines</span><span class="o">.</span><span class="n">first</span>
<span class="w">    </span><span class="c1"># Total row</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="s1">&#39;Total,&quot;&quot;,&quot;&quot;,&quot;&quot;,&quot;&quot;,154.25,8.65,&quot;&quot;,&quot;&quot;,162.90&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">lines</span><span class="o">.</span><span class="n">last</span>
<span class="w">  </span><span class="k">end</span>

<span class="w">  </span><span class="k">def</span><span class="w"> </span><span class="nf">test_details_at_project_level</span>
<span class="w">    </span><span class="n">get</span><span class="w"> </span><span class="ss">:details</span><span class="p">,</span><span class="w"> </span><span class="ss">:project_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span>
<span class="w">    </span><span class="n">assert_response</span><span class="w"> </span><span class="ss">:success</span>
<span class="w">    </span><span class="n">assert_template</span><span class="w"> </span><span class="s1">&#39;details&#39;</span>
<span class="w">    </span><span class="n">assert_not_nil</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:entries</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:entries</span><span class="p">)</span><span class="o">.</span><span class="n">size</span>
<span class="w">    </span><span class="c1"># project and subproject</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="o">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="o">]</span><span class="p">,</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:entries</span><span class="p">)</span><span class="o">.</span><span class="n">collect</span><span class="p">(</span><span class="o">&amp;</span><span class="ss">:project_id</span><span class="p">)</span><span class="o">.</span><span class="n">uniq</span><span class="o">.</span><span class="n">sort</span>
<span class="w">    </span><span class="n">assert_not_nil</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:total_hours</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="s2">&quot;162.90&quot;</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;%.2f&quot;</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:total_hours</span><span class="p">)</span>
<span class="w">    </span><span class="c1"># display all time by default</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="s1">&#39;2007-03-11&#39;</span><span class="o">.</span><span class="n">to_date</span><span class="p">,</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:from</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="s1">&#39;2007-04-22&#39;</span><span class="o">.</span><span class="n">to_date</span><span class="p">,</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:to</span><span class="p">)</span>
<span class="w">  </span><span class="k">end</span>
<span class="w">  </span>
<span class="w">  </span><span class="k">def</span><span class="w"> </span><span class="nf">test_details_at_project_level_with_date_range</span>
<span class="w">    </span><span class="n">get</span><span class="w"> </span><span class="ss">:details</span><span class="p">,</span><span class="w"> </span><span class="ss">:project_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="ss">:from</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;2007-03-20&#39;</span><span class="p">,</span><span class="w"> </span><span class="ss">:to</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;2007-04-30&#39;</span>
<span class="w">    </span><span class="n">assert_response</span><span class="w"> </span><span class="ss">:success</span>
<span class="w">    </span><span class="n">assert_template</span><span class="w"> </span><span class="s1">&#39;details&#39;</span>
<span class="w">    </span><span class="n">assert_not_nil</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:entries</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:entries</span><span class="p">)</span><span class="o">.</span><span class="n">size</span>
<span class="w">    </span><span class="n">assert_not_nil</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:total_hours</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="s2">&quot;12.90&quot;</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;%.2f&quot;</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:total_hours</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="s1">&#39;2007-03-20&#39;</span><span class="o">.</span><span class="n">to_date</span><span class="p">,</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:from</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="s1">&#39;2007-04-30&#39;</span><span class="o">.</span><span class="n">to_date</span><span class="p">,</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:to</span><span class="p">)</span>
<span class="w">  </span><span class="k">end</span>

<span class="w">  </span><span class="k">def</span><span class="w"> </span><span class="nf">test_details_at_project_level_with_period</span>
<span class="w">    </span><span class="n">get</span><span class="w"> </span><span class="ss">:details</span><span class="p">,</span><span class="w"> </span><span class="ss">:project_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="ss">:period</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;7_days&#39;</span>
<span class="w">    </span><span class="n">assert_response</span><span class="w"> </span><span class="ss">:success</span>
<span class="w">    </span><span class="n">assert_template</span><span class="w"> </span><span class="s1">&#39;details&#39;</span>
<span class="w">    </span><span class="n">assert_not_nil</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:entries</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_not_nil</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:total_hours</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="no">Date</span><span class="o">.</span><span class="n">today</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:from</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="no">Date</span><span class="o">.</span><span class="n">today</span><span class="p">,</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:to</span><span class="p">)</span>
<span class="w">  </span><span class="k">end</span>
<span class="w">  </span>
<span class="w">  </span><span class="k">def</span><span class="w"> </span><span class="nf">test_details_at_issue_level</span>
<span class="w">    </span><span class="n">get</span><span class="w"> </span><span class="ss">:details</span><span class="p">,</span><span class="w"> </span><span class="ss">:issue_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span>
<span class="w">    </span><span class="n">assert_response</span><span class="w"> </span><span class="ss">:success</span>
<span class="w">    </span><span class="n">assert_template</span><span class="w"> </span><span class="s1">&#39;details&#39;</span>
<span class="w">    </span><span class="n">assert_not_nil</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:entries</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:entries</span><span class="p">)</span><span class="o">.</span><span class="n">size</span>
<span class="w">    </span><span class="n">assert_not_nil</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:total_hours</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="mi">154</span><span class="o">.</span><span class="mi">25</span><span class="p">,</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:total_hours</span><span class="p">)</span>
<span class="w">    </span><span class="c1"># display all time by default</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="s1">&#39;2007-03-11&#39;</span><span class="o">.</span><span class="n">to_date</span><span class="p">,</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:from</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="s1">&#39;2007-04-22&#39;</span><span class="o">.</span><span class="n">to_date</span><span class="p">,</span><span class="w"> </span><span class="n">assigns</span><span class="p">(</span><span class="ss">:to</span><span class="p">)</span>
<span class="w">  </span><span class="k">end</span>
<span class="w">  </span>
<span class="w">  </span><span class="k">def</span><span class="w"> </span><span class="nf">test_details_csv_export</span>
<span class="w">    </span><span class="n">get</span><span class="w"> </span><span class="ss">:details</span><span class="p">,</span><span class="w"> </span><span class="ss">:project_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="ss">:format</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;csv&#39;</span>
<span class="w">    </span><span class="n">assert_response</span><span class="w"> </span><span class="ss">:success</span>
<span class="w">    </span><span class="n">assert_equal</span><span class="w"> </span><span class="s1">&#39;text/csv&#39;</span><span class="p">,</span><span class="w"> </span><span class="vi">@response</span><span class="o">.</span><span class="n">content_type</span>
<span class="w">    </span><span class="n">assert</span><span class="w"> </span><span class="vi">@response</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">include?</span><span class="p">(</span><span class="s2">&quot;Date,User,Activity,Project,Issue,Tracker,Subject,Hours,Comment</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="w">    </span><span class="n">assert</span><span class="w"> </span><span class="vi">@response</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">include?</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">04/21/2007,redMine Admin,Design,eCookbook,3,Bug,Error 281 when updating a recipe,1.0,</span><span class="se">\&quot;\&quot;\n</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="w">  </span><span class="k">end</span>
<span class="k">end</span>
</pre></div>
</code></pre></td></tr></table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.3</a> (<a href='https://git-scm.com/'>git 2.39.1</a>) at 2025-07-26 19:51:31 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
