`context` and `describe` are the wrong way round here. They do do the same thing (`context` is aliased to `describe`) but they're used to aid comprehension. `context` is used for "when". `describe` is used for "what" (in behaviour terms). I'd probably expect to see `context 'when a site has a global redirect'` and `context 'when a site is globally archived'`. 

I'd probably also expect to see `describe 'the disabling of mappings editing'` or somesuch, but there's a mechanism for the sort of duplication you've got across these redirect and archive blocks, and that's `shared_examples`.

You *could* say:

```ruby
shared_examples 'it disallows editing of mappings' do
      it 'redirects to the site dashboard' do
        expect(response).to redirect_to site_path(new_site.abbr)
      end

      it 'sets a flash message' do
        flash[:alert].should include(expected_alert)
      end
end
```

and then in your calling blocks, say

```ruby
  context 'when a site is entirely redirected' do
    let(:new_site)          { ... 410 or 301 }
    let(:expected_alert) { 'entirely redirected' }
    
    it_behaves_like 'it disallows editing of mappings'
  end
```

There's a bit more to it than this. This is only half the story, and I'm being a bit rubbish about writing it down concisely. How about a quick remote pairing session?