adds specs

This commit is contained in:
rgarcia
2016-12-21 18:46:38 +01:00
parent 675081141c
commit 0deba76db1
2 changed files with 181 additions and 58 deletions

View File

@@ -1,3 +1,5 @@
require 'rails_helper'
feature 'Signature sheets' do
background do
@@ -5,31 +7,61 @@ feature 'Signature sheets' do
login_as(admin.user)
end
scenario "Index"
scenario "Index" do
3.times { create(:signature_sheet) }
scenario 'Create' do
visit admin_path
visit admin_signature_sheets_path
click_link 'Signature Sheets'
click_link 'New'
expect(page).to have_css(".signature_sheet", count: 3)
select "Proposal", from: "signable_type"
fill_in "signable_id", with: "1"
fill_in "document_numbers", with: "12345678Z, 99999999Z"
click_button "Save"
expect(page).to have_content "Signature sheet saved successfully"
SignatureSheet.all.each do |signature_sheet|
expect(page).to have_content signature_sheet.name
end
end
scenario 'Errors on create'
scenario 'Create' do
proposal = create(:proposal)
visit new_admin_signature_sheet_path
select "Citizen proposal", from: "signature_sheet_signable_type"
fill_in "signature_sheet_signable_id", with: proposal.id
fill_in "signature_sheet_document_numbers", with: "12345678Z, 99999999Z"
click_button "Create signature sheet"
expect(page).to have_content "Signature sheet created successfully"
end
scenario 'Errors on create' do
visit new_admin_signature_sheet_path
click_button "Create signature sheet"
expect(page).to have_content error_message
end
scenario 'Show' do
#display signable
#display created_at
#display author
#display valid signatures count
#display invalid signatures count
#display invalid signatures with their error
proposal = create(:proposal)
user = Administrator.first.user
signature_sheet = create(:signature_sheet,
signable: proposal,
document_numbers: "12345678Z, 123A, 123B",
author: user)
signature_sheet.verify_signatures
visit admin_signature_sheet_path(signature_sheet)
expect(page).to have_content "Citizen proposal #{proposal.id}"
expect(page).to have_content "12345678Z, 123A, 123B"
expect(page).to have_content signature_sheet.created_at.strftime("%d %b %H:%M")
expect(page).to have_content user.name
within("#verified_signatures") do
expect(page).to have_content 1
end
within("#unverified_signatures") do
expect(page).to have_content 2
end
end
end

View File

@@ -5,6 +5,7 @@ describe Signature do
let(:signature) { build(:signature) }
describe "validations" do
it "should be valid" do
expect(signature).to be_valid
end
@@ -18,61 +19,151 @@ describe Signature do
signature.signature_sheet = nil
expect(signature).to_not be_valid
end
end
describe "#in_census" do
it "checks for all document_types" do
####
end
end
describe "#verify" do
describe "valid", :focus do
it "asigns vote to user" do
proposal = create(:proposal)
user = create(:user, document_number: "123A")
signature_sheet = create(:signature_sheet, signable: proposal)
signature = create(:signature, signature_sheet: signature_sheet, document_number: "123A")
signature.verify
expect(user.voted_for?(proposal)).to be
end
it "sets status to verified" do
end
end
describe "invalid" do
it "sets status to error"
it "does not asign any votes"
end
end
describe "#verified?" do
it "returns true if user exists" do
it "returns true if user exists" do
user = create(:user, :level_two, document_number: "123A")
signature = create(:signature, document_number: user.document_number)
expect(signature.verified?).to eq(true)
end
it "returns true if document number in census" do
signature = create(:signature, document_number: "12345678Z")
expect(signature.verified?).to eq(true)
end
it "returns false if user does not exist and not in census" do
signature = create(:signature, document_number: "123A")
expect(signature.verified?).to eq(false)
end
it "returns true if document number in census"
it "returns false if user does not exist and not in census"
end
describe "#assign_vote" do
describe "existing user" do
it "assigns vote to user"
it "does not assign vote to user if already voted"
it "marks the vote as coming from a signature"
it "assigns vote to user" do
user = create(:user, :level_two, document_number: "123A")
signature = create(:signature, document_number: user.document_number)
proposal = signature.signable
signature.assign_vote
expect(user.voted_for?(proposal)).to be
end
it "does not assign vote to user multiple times" do
user = create(:user, :level_two, document_number: "123A")
signature = create(:signature, document_number: user.document_number)
signature.assign_vote
signature.assign_vote
expect(Vote.count).to eq(1)
end
it "does not assign vote to user if already voted" do
proposal = create(:proposal)
user = create(:user, :level_two, document_number: "123A")
vote = create(:vote, votable: proposal, voter: user)
signature_sheet = create(:signature_sheet, signable: proposal)
signature = create(:signature, signature_sheet: signature_sheet, document_number: user.document_number)
signature.assign_vote
expect(Vote.count).to eq(1)
end
it "marks the vote as coming from a signature" do
signature = create(:signature, document_number: "12345678Z")
signature.assign_vote
expect(Vote.last.signature).to eq(signature)
end
end
describe "inexistent user" do
it "creates a user with that document number"
it "assign the vote to newly created user"
it "marks the vote as coming from a signature"
it "creates a user with that document number" do
signature = create(:signature, document_number: "12345678Z")
proposal = signature.signable
signature.assign_vote
user = User.last
expect(user.document_number).to eq("12345678Z")
expect(user.created_from_signature).to eq(true)
expect(user.verified_at).to be
expect(user.erased_at).to be
end
it "assign the vote to newly created user" do
signature = create(:signature, document_number: "12345678Z")
proposal = signature.signable
signature.assign_vote
user = signature.user
expect(user.voted_for?(proposal)).to be
end
it "assigns signature to vote" do
signature = create(:signature, document_number: "12345678Z")
signature.assign_vote
expect(Vote.last.signature).to eq(signature)
end
end
end
describe "#verify" do
describe "document in census" do
it "calls assign_vote" do
signature = create(:signature, document_number: "12345678Z")
expect(signature).to receive(:assign_vote)
signature.verify
end
it "sets signature as verified" do
user = create(:user, :level_two, document_number: "123A")
signature = create(:signature, document_number: user.document_number)
signature.verify
expect(signature).to be_verified
end
end
describe "document not in census" do
it "does not call assign_vote" do
signature = create(:signature, document_number: "123A")
expect(signature).to_not receive(:assign_vote)
signature.verify
end
it "maintains signature as not verified" do
signature = create(:signature, document_number: "123A")
signature.verify
expect(signature).to_not be_verified
end
end
end