Merge branch 'master' into 9767-workflows-in-chooser
[arvados.git] / services / api / test / unit / container_request_test.rb
index 115697989fc764829a7843db6dc74a4fb7bad1ab..b0c55c1276f02eafdd7558779c8847d62cca074d 100644 (file)
@@ -53,21 +53,49 @@ class ContainerRequestTest < ActiveSupport::TestCase
     assert_nil cr.container_uuid
   end
 
-  test "Container request constraints must include valid vcpus and ram fields when committed" do
-    set_user_from_auth :active
-    cr = create_minimal_req!(state: "Committed", priority: 1)
-    assert_raises(ActiveRecord::RecordInvalid) do
-      cr.runtime_constraints = {"vcpus" => 1}
-      cr.save!
+  [
+    {"vcpus" => 1},
+    {"vcpus" => 1, "ram" => nil},
+    {"vcpus" => 0, "ram" => 123},
+    {"vcpus" => "1", "ram" => "123"}
+  ].each do |invalid_constraints|
+    test "Create with #{invalid_constraints}" do
+      set_user_from_auth :active
+      assert_raises(ActiveRecord::RecordInvalid) do
+        cr = create_minimal_req!(state: "Committed",
+                                 priority: 1,
+                                 runtime_constraints: invalid_constraints)
+        cr.save!
+      end
     end
-    assert_raises(ActiveRecord::RecordInvalid) do
-      cr.runtime_constraints = {"vcpus" => 1, "ram" => nil}
+
+    test "Update with #{invalid_constraints}" do
+      set_user_from_auth :active
+      cr = create_minimal_req!(state: "Uncommitted", priority: 1)
       cr.save!
+      assert_raises(ActiveRecord::RecordInvalid) do
+        cr = ContainerRequest.find_by_uuid cr.uuid
+        cr.update_attributes!(state: "Committed",
+                              runtime_constraints: invalid_constraints)
+      end
     end
-    assert_raises(ActiveRecord::RecordInvalid) do
-      cr.runtime_constraints = {"vcpus" => 0, "ram" => 123}
+  end
+
+  test "Update from fixture" do
+    set_user_from_auth :active
+    cr = ContainerRequest.find_by_uuid(container_requests(:running).uuid)
+    cr.update_attributes!(description: "New description")
+    assert_equal "New description", cr.description
+  end
+
+  test "Update with valid runtime constraints" do
+      set_user_from_auth :active
+      cr = create_minimal_req!(state: "Uncommitted", priority: 1)
       cr.save!
-    end
+      cr = ContainerRequest.find_by_uuid cr.uuid
+      cr.update_attributes!(state: "Committed",
+                            runtime_constraints: {"vcpus" => 1, "ram" => 23})
+      assert_not_nil cr.container_uuid
   end
 
   test "Container request priority must be non-nil" do