# encoding: utf-8 require "spec_helper" module Okei describe Unit do let!(:unit) { Unit.new } describe "#uuids" do let!(:value) { "48f53a7c-726f-4ec1-9b83-a12b247844a6" } it "has a list of uuids" do expect(unit).to respond_to :uuids expect(unit).to respond_to :uuid expect(Unit).to respond_to :by_uuid end end describe "#name=" do it "assigns a name" do value = "Морская миля (1852 м)" expect { unit.name = value }.to change { unit.name }.to value end end describe "#code=" do it "assigns a code" do value = "МИЛЬ" expect { unit.code = value }.to change { unit.code }.to value end end describe "#num=" do it "assigns a num" do value = "049" expect { unit.num = value }.to change { unit.num }.to value end end describe "#int_code=" do it "assigns an int_code" do value = "NMI" expect { unit.int_code = value }.to change { unit.int_code }.to value end end describe "#base=" do it "assigns a base" do value = "M" expect { unit.base = value }.to change { unit.base }.to value end end describe "#factor=" do it "assigns a factor" do value = 1852.0 expect { unit.factor = value }.to change { unit.factor }.to value end end describe "#measure=" do it "assigns a measure" do value = "Длина" expect { unit.measure = value }.to change { unit.measure }.to value end end describe "#valid?" do let!(:unit) { build :unit } before { expect(unit).to be_valid } it "fails when a name is absent" do unit.name = nil expect(unit).not_to be_valid end it "fails when a name is already taken" do create :unit, name: unit.name expect(unit).not_to be_valid end it "fails when a code is absent" do unit.code = nil expect(unit).not_to be_valid end it "fails when a code is already taken" do create :unit, code: unit.code expect(unit).not_to be_valid end it "passes when a num is absent" do unit.num = nil expect(unit).to be_valid end it "fails when a num has a wrong format" do %w(99 1000 abc).each do |value| unit.num = value expect(unit).not_to be_valid end end it "passes when a num is already taken" do create :unit, num: unit.num expect(unit).to be_valid end it "passes when an int_code is absent" do unit.int_code = nil expect(unit).to be_valid end it "passes when an int_code is already taken" do create :unit, int_code: unit.int_code expect(unit).to be_valid end it "fails when a base is absent" do unit.base = nil expect(unit).not_to be_valid end it "fails when a factor is absent" do unit.factor = nil expect(unit).not_to be_valid end it "fails when a factor is non-positive" do [-1.0, 0.0].each do |value| unit.factor = value expect(unit).not_to be_valid end end it "fails when a measure is absent" do unit.measure = nil expect(unit).not_to be_valid end end end end