<p>So I've had another look through this and it's mostly fine but I'm still not convinced the stubbing approach is right, and I thought I had come up with a better plan then I saw what <a href="https://github.com/gravitystorm" class="user-mention">@gravitystorm</a> wrote above:</p>
<blockquote>
<p>A completely different approach would be to create the test instances, and then copy around the necessary gpx files within the test directory and rename the files to give them the ids assigned by factorygirl. But that seems even worse to me.</p>
</blockquote>
<p>Which is pretty much exactly the plan I had come up with... To have a set of fixtures (yes I know...) which are the various files we want to be able to use and a separate directory which is the active spool being used by rails and when we need to we tell factory girl which data to use and it copies it over, otherwise it just creates default empty files or something.</p>
<p>It seems to me that is a more accurate test in that it doesn't wind up with us testing the stubs rather than the real code, and it more accurately models things - a trace that exists in the database should have corresponding files on disk - that is basically an expected invariant of the code - so when the factory creates a trace object it should also create the corresponding files.</p>
<p>So I'm interested in why you think it's a worse solution?</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/openstreetmap/openstreetmap-website/pull/1347#issuecomment-267776218">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABWnLZzmbXYVyI2K3itlzzKBev_Y8iTiks5rJB_lgaJpZM4KkH9o">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/ABWnLS5iYu3DxglvT3-5d4rPwJi37Mixks5rJB_lgaJpZM4KkH9o.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/openstreetmap/openstreetmap-website/pull/1347#issuecomment-267776218"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/openstreetmap/openstreetmap-website","title":"openstreetmap/openstreetmap-website","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/openstreetmap/openstreetmap-website"}},"updates":{"snippets":[{"icon":"PERSON","message":"@tomhughes in #1347: So I've had another look through this and it's mostly fine but I'm still not convinced the stubbing approach is right, and I thought I had come up with a better plan then I saw what @gravitystorm wrote above:\r\n\r\n\u003e A completely different approach would be to create the test instances, and then copy around the necessary gpx files within the test directory and rename the files to give them the ids assigned by factorygirl. But that seems even worse to me.\r\n\r\nWhich is pretty much exactly the plan I had come up with... To have a set of fixtures (yes I know...) which are the various files we want to be able to use and a separate directory which is the active spool being used by rails and when we need to we tell factory girl which data to use and it copies it over, otherwise it just creates default empty files or something.\r\n\r\nIt seems to me that is a more accurate test in that it doesn't wind up with us testing the stubs rather than the real code, and it more accurately models things - a trace that exists in the database should have corresponding files on disk - that is basically an expected invariant of the code - so when the factory creates a trace object it should also create the corresponding files.\r\n\r\nSo I'm interested in why you think it's a worse solution?"}],"action":{"name":"View Pull Request","url":"https://github.com/openstreetmap/openstreetmap-website/pull/1347#issuecomment-267776218"}}}</script>