Sha256: 02659bd0dd5564ededb4fc2e763d2b5ce8994cd04f4d9f4ad19ffe959177f93a

Contents?: true

Size: 1.16 KB

Versions: 2

Compression:

Stored size: 1.16 KB

Contents

require "rails_helper"

module Strain
  RSpec.describe Variant, type: :model do

    it "has a valid factory" do
      expect(build(:variant)).to be_valid
    end

    it "is invalid without a name" do
      expect(build(:variant, name: nil)).to be_invalid
    end

    it "is invalid without a Schema" do
      expect(build(:variant, schema: nil)).to be_invalid
      expect(build(:variant, schema: {})).to be_invalid
    end

    it "is invalid with an invalid JSON Schema" do
      expect(build(:variant, schema: {"type": "nonsense"})).to be_invalid
    end

    it "raises a database error with a nonunique name" do
      a = create(:variant)
      b = build(:variant, name: a.name)
      expect {b.save(validate: false)}.to raise_error(ActiveRecord::RecordNotUnique)
    end

    it "is invalid with a nonunique name" do
      a = create(:variant)
      b = build(:variant, name: a.name)
      expect(b).to be_invalid
    end

    it "is invalid unless root schema type is object" do
      a = build(:variant, schema: {"type": "string"})
      expect(a).to be_invalid
      expect(a.errors.messages[:schema]).to include("must have an object as root element.")
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
strain-0.0.2 spec/models/strain/variant_spec.rb
strain-0.0.1 spec/models/strain/variant_spec.rb