From d09348ee49bc55aaa8a4d7d6f721cd0a1cb6cad7 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Tue, 20 Dec 2016 16:46:20 +0100 Subject: [PATCH] adds specs --- spec/factories.rb | 7 ++- spec/models/signature_sheet_spec.rb | 68 ++++++++++++++++++++++------- spec/models/signature_spec.rb | 12 ++--- 3 files changed, 64 insertions(+), 23 deletions(-) diff --git a/spec/factories.rb b/spec/factories.rb index 19bfc952a..322f214d5 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -345,10 +345,13 @@ FactoryGirl.define do end factory :signature_sheet do - + association :signable, factory: :proposal + association :author, factory: :user + document_numbers "123A, 456B, 789C" end factory :signature do - + signature_sheet + sequence(:document_number) { |n| "#{n}A" } end end diff --git a/spec/models/signature_sheet_spec.rb b/spec/models/signature_sheet_spec.rb index 2f956541c..3b0ced629 100644 --- a/spec/models/signature_sheet_spec.rb +++ b/spec/models/signature_sheet_spec.rb @@ -2,29 +2,67 @@ require 'rails_helper' describe SignatureSheet do + let(:signature_sheet) { build(:signature_sheet) } + describe "validations" do - it "should be valid" - it "should not be valid without a valid signable" - it "should not be valid without document numbers" - it "should not be valid without an author" + + it "should be valid" do + expect(signature_sheet).to be_valid + end + + it "should not be valid without a valid signable" do + signature_sheet.signable = nil + expect(signature_sheet).to_not be_valid + end + + it "should not be valid without document numbers" do + signature_sheet.document_numbers = nil + expect(signature_sheet).to_not be_valid + end + + it "should not be valid without an author" do + signature_sheet.author = nil + expect(signature_sheet).to_not be_valid + end end - describe "name" do - it "returns name for proposal signature sheets" - it "returns name for spending proposal signature sheets" + describe "#name" do + it "returns name for proposal signature sheets" do + proposal = create(:proposal) + signature_sheet.signable = proposal + + expect(signature_sheet.name).to eq("Citizen proposal #{proposal.id}") + end + it "returns name for spending proposal signature sheets" do + spending_proposal = create(:spending_proposal) + signature_sheet.signable = spending_proposal + + expect(signature_sheet.name).to eq("Spending proposal #{spending_proposal.id}") + end end - describe "verify_signatures" do - it "marks signature sheet as processed after verifing all document numbers" + describe "#verify_signatures" do + it "creates signatures for each document number" do + signature_sheet = create(:signature_sheet, document_numbers: "123A, 456B") + signature_sheet.verify_signatures + + expect(Signature.count).to eq(2) + end + + it "marks signature sheet as processed" do + signature_sheet = create(:signature_sheet) + signature_sheet.verify_signatures + + expect(signature_sheet.processed).to eq(true) + end end - describe "invalid_signatures" do - it "returns invalid signatures" - it "does not return valid signatures" - end + describe "#parsed_document_numbers" do + it "returns an array after spliting document numbers by newlines or commas" do + signature_sheet.document_numbers = "123A\r\n456B\n789C,123B" - describe "parsed_document_numbers" do - it "returns an array after spliting document numbers by newlines" + expect(signature_sheet.parsed_document_numbers).to eq(['123A', '456B', '789C', '123B']) + end end end \ No newline at end of file diff --git a/spec/models/signature_spec.rb b/spec/models/signature_spec.rb index d1f37a3ec..7fac0e65a 100644 --- a/spec/models/signature_spec.rb +++ b/spec/models/signature_spec.rb @@ -1,6 +1,6 @@ require 'rails_helper' -describe Signature +describe Signature do describe "validations" do it "should be valid" @@ -9,25 +9,25 @@ describe Signature it "should not be valid if not in census" end - describe "in census" do + describe "#in_census" do it "checks for all document_types" end - describe "verify" do + describe "#verify" do - describie "valid" do + describe "valid" do it "sets status to verified" it "asigns vote to user" end - describe "invalid" + describe "invalid" do it "sets status to error" it "does not asign any votes" end end - describe "assign vote" do + describe "#assign_vote" do describe "existing user" do it "assigns vote to user"