Forráskód Böngészése

Add invert option to fail if no results are returned

ryninho 9 éve
szülő
commit
4512543e8a

+ 1 - 1
app/controllers/blazer/checks_controller.rb

@@ -41,7 +41,7 @@ module Blazer
     private
 
     def check_params
-      params.require(:check).permit(:query_id, :emails)
+      params.require(:check).permit(:query_id, :emails, :invert)
     end
 
     def set_check

+ 2 - 2
app/models/blazer/check.rb

@@ -13,9 +13,9 @@ module Blazer
         if error
           "error"
         elsif rows.any?
-          "failing"
+          invert ? "passing" : "failing"
         else
-          "passing"
+          invert ? "failing" : "passing"
         end
 
       # do not notify on creation, except when not passing

+ 13 - 1
app/views/blazer/checks/_form.html.erb

@@ -1,4 +1,4 @@
-<p class="text-muted">Checks are designed to identify bad data. A check fails if there are any results.</p>
+<p class="text-muted">Checks are designed to identify bad data. A check fails if there are any results (unless inverted).</p>
 
 <% if @check.errors.any? %>
   <div class="alert alert-danger"><%= @check.errors.full_messages.first %></div>
@@ -14,6 +14,18 @@
       $("#check_query_id").selectize().parents(".hide").removeClass("hide");
     </script>
   </div>
+
+  <div class="form-group">
+    <%= f.label "Failure criterion?" %>
+    <%= f.select :invert, [['Fail if ANY results returned (default)', false], ['Fail if NO results returned (invert)', true]], {}, {id: 'select-invert'} %>
+    <script>
+      $("#select-invert").selectize({
+        create: true,
+        sortField: 'text'
+      });
+    </script>
+  </div>
+
   <div class="form-group">
     <%= f.label :emails %>
     <%= f.text_field :emails, placeholder: "Optional, comma separated", class: "form-control" %>