Sha256: daace019f91719019b02da4057b5ec52ee2567690bf25d3d5d80d6b801eb92dd

Contents?: true

Size: 1.99 KB

Versions: 2

Compression:

Stored size: 1.99 KB

Contents

require 'rails_helper'

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

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

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

    it "is invalid with a non-URL-safe slug" do
      expect(build(:article, slug: "invalid slug")).to be_invalid
    end

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

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

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

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

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

    it "is valid when compliant with its Variant" do
      v = create(:variant)
      a = build(:article, variant: v, body: {"summary": "test", "main": "test"})
      expect(a).to be_valid
    end

    it "is invalid when not compliant with its Variant" do
      v = create(:variant)
      a = build(:article, variant: v, body: {"extra_property": "test", "main": "test"})
      expect(a).to be_invalid
    end

    it "fills in schema-defined defaults" do
      v = build(:variant, schema: {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "default": "default Title"
          }
        }
      })
      a = create(:article, variant: v, body:{})
      expect(a.body["title"]).to eq("default Title")
    end

    it "provides detailed errors when invalid according to JSON schema"
    it "enforces key format? - hyphenated, underscores, camelcase?"

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

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