title: How do I find a balance for negative tests in TDD?
body: <p>Let's imagine we need to develop an app that simply shows you the local outside temperature. So, when you TDD you would write a test case:</p>
  
  <pre>describe 'App'
    it 'shows the local temperature'
  </pre>
  
  <p>That's it. A week later you realise people would pay for seeing full local weather forecast, so you continue TDD:</p>
  
  <pre>describe 'App'
    it 'shows the local temperature'
    describe 'when they pay me 5$'
      it 'shows full weather forecast'
  </pre>
  
  <p>However, some people recommend to add a negative test to avoid false positives:</p>
  
  <pre>describe 'App'
    it 'shows the local temperature'
    it 'does not show full weather forecast'
      describe 'when they pay me 5$'
        it 'shows full weather forecast'
  
  // or even
  
  describe 'App'
    it 'shows the local temperature'
      describe 'when scrooge'
        it 'does not show full weather forecast'
      describe 'when they pay me 5$'
        it 'shows full weather forecast'
  </pre>
  
  <p>While this <strong>will</strong> prevent accidentally allowing not paying users to see the full weather forecast, this is not really scalable (imagine we have a lot of access layers, for example).</p>
  
  <p>The question is: is there any well known or established practice that balances false positive tests in TDD?</p>