diff --git a/spec/services/verify_pages_domain_service_spec.rb b/spec/services/verify_pages_domain_service_spec.rb
index d974cc0226f044a4502b9fb02eba1895e6c332d4..ddf9d2b49173ded8a18f0d7cddfde0c0e527392c 100644
--- a/spec/services/verify_pages_domain_service_spec.rb
+++ b/spec/services/verify_pages_domain_service_spec.rb
@@ -9,88 +9,130 @@
   subject(:service) { described_class.new(domain) }
 
   describe '#execute' do
-    context 'verification code recognition (verified domain)' do
-      where(:domain_sym, :code_sym) do
-        :domain | :verification_code
-        :domain | :keyed_verification_code
+    where(:domain_sym, :code_sym) do
+      :domain | :verification_code
+      :domain | :keyed_verification_code
 
-        :verification_domain | :verification_code
-        :verification_domain | :keyed_verification_code
-      end
-
-      with_them do
-        set(:domain) { create(:pages_domain) }
+      :verification_domain | :verification_code
+      :verification_domain | :keyed_verification_code
+    end
 
-        let(:domain_name) { domain.send(domain_sym) }
-        let(:verification_code) { domain.send(code_sym) }
+    with_them do
+      let(:domain_name) { domain.send(domain_sym) }
+      let(:verification_code) { domain.send(code_sym) }
 
+      shared_examples 'verifies and enables the domain' do
         it 'verifies and enables the domain' do
-          stub_resolver(domain_name => ['something else', verification_code])
-
           expect(service.execute).to eq(status: :success)
+
           expect(domain).to be_verified
           expect(domain).to be_enabled
         end
+      end
 
-        it 'verifies and enables when the code is contained partway through a TXT record' do
-          stub_resolver(domain_name => "something #{verification_code} else")
+      shared_examples 'successful enablement and verification' do
+        context 'when txt record contains verification code' do
+          before do
+            stub_resolver(domain_name => ['something else', verification_code])
+          end
 
-          expect(service.execute).to eq(status: :success)
-          expect(domain).to be_verified
-          expect(domain).to be_enabled
+          include_examples 'verifies and enables the domain'
         end
 
-        it 'does not verify when the code is not present' do
-          stub_resolver(domain_name => 'something else')
-
-          expect(service.execute).to eq(error_status)
+        context 'when txt record contains verification code with other text' do
+          before do
+            stub_resolver(domain_name => "something #{verification_code} else")
+          end
 
-          expect(domain).not_to be_verified
-          expect(domain).to be_enabled
+          include_examples 'verifies and enables the domain'
         end
       end
 
-      context 'verified domain' do
-        set(:domain) { create(:pages_domain) }
+      context 'when domain is disabled(or new)' do
+        let(:domain) { create(:pages_domain, :disabled) }
 
-        it 'unverifies (but does not disable) when the right code is not present' do
-          stub_resolver(domain.domain => 'something else')
+        include_examples 'successful enablement and verification'
 
-          expect(service.execute).to eq(error_status)
-          expect(domain).not_to be_verified
-          expect(domain).to be_enabled
+        shared_examples 'unverifies and disables domain' do
+          it 'unverifies and disables domain' do
+            expect(service.execute).to eq(error_status)
+
+            expect(domain).not_to be_verified
+            expect(domain).not_to be_enabled
+          end
         end
 
-        it 'unverifies (but does not disable) when no records are present' do
-          stub_resolver
+        context 'when txt record does not contain verification code' do
+          before do
+            stub_resolver(domain_name => 'something else')
+          end
 
-          expect(service.execute).to eq(error_status)
-          expect(domain).not_to be_verified
-          expect(domain).to be_enabled
+          include_examples 'unverifies and disables domain'
+        end
+
+        context 'when no txt records are present' do
+          before do
+            stub_resolver
+          end
+
+          include_examples 'unverifies and disables domain'
         end
       end
 
-      context 'expired domain' do
-        set(:domain) { create(:pages_domain, :expired) }
+      context 'when domain is verified' do
+        let(:domain) { create(:pages_domain) }
 
-        it 'verifies and enables when the right code is present' do
-          stub_resolver(domain.domain => domain.keyed_verification_code)
+        include_examples 'successful enablement and verification'
 
-          expect(service.execute).to eq(status: :success)
+        context 'when txt record does not contain verification code' do
+          before do
+            stub_resolver(domain_name => 'something else')
+          end
 
-          expect(domain).to be_verified
-          expect(domain).to be_enabled
+          it 'unverifies but does not disable domain' do
+            expect(service.execute).to eq(error_status)
+            expect(domain).not_to be_verified
+            expect(domain).to be_enabled
+          end
         end
 
-        it 'disables when the right code is not present' do
-          error_status[:message] += '. It is now disabled.'
+        context 'when no txt records are present' do
+          before do
+            stub_resolver
+          end
 
-          stub_resolver
+          it 'unverifies but does not disable domain' do
+            expect(service.execute).to eq(error_status)
+            expect(domain).not_to be_verified
+            expect(domain).to be_enabled
+          end
+        end
+      end
 
-          expect(service.execute).to eq(error_status)
+      context 'when domain is expired' do
+        let(:domain) { create(:pages_domain, :expired) }
 
-          expect(domain).not_to be_verified
-          expect(domain).not_to be_enabled
+        context 'when the right code is present' do
+          before do
+            stub_resolver(domain_name => domain.keyed_verification_code)
+          end
+
+          include_examples 'verifies and enables the domain'
+        end
+
+        context 'when the right code is not present' do
+          before do
+            stub_resolver
+          end
+
+          it 'disables domain' do
+            error_status[:message] += '. It is now disabled.'
+
+            expect(service.execute).to eq(error_status)
+
+            expect(domain).not_to be_verified
+            expect(domain).not_to be_enabled
+          end
         end
       end