Skip to content

Commit

Permalink
TW-96 AssertedDistribution.stub_new w/spec finished.
Browse files Browse the repository at this point in the history
  • Loading branch information
TuckerJD committed Jan 22, 2015
1 parent 0bbc710 commit f141bcb
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 6 deletions.
20 changes: 19 additions & 1 deletion app/models/asserted_distribution.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def self.find_for_autocomplete(params)
# where('geographic_area LIKE ?', "%#{params[:term]}%").with_project_id(params[:project_id])
term = params[:term]
include(:geographic_area, :otu, :source).
where(geographic_areas: {name: term}, otus: {name: term}, sources: {cached: term})
where(geographic_areas: {name: term}, otus: {name: term}, sources: {cached: term})
end

#region Soft validation
Expand All @@ -49,4 +49,22 @@ def sv_conflicting_geographic_area

#end region

#region Class methods

# @param options [Hash] of e.g., {otu_id: 5, source_id: 5, latitude: '12.12', longitude: '12.312'}
# @ return an array of new AssertedDistributions.
def self.stub_new(options = {})

areas = GeographicArea.find_by_lat_long(options[:latitude], options[:longitude])
options.delete(:latitude)
options.delete(:longitude)
result = []
areas.each do |ga|
result.push(AssertedDistribution.new(options.merge(:geographic_area_id => ga.id)))
end
result
end

#end region

end
39 changes: 34 additions & 5 deletions spec/models/asserted_distribution_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@
context 'associations' do
context 'belongs_to' do
specify 'otu' do
expect(asserted_distribution.otu = Otu.new).to be_truthy
expect(asserted_distribution.otu = Otu.new).to be_truthy
end

specify 'source' do
expect(asserted_distribution.source = Source.new).to be_truthy
expect(asserted_distribution.source = Source.new).to be_truthy
end

specify 'geographic_area' do
Expand Down Expand Up @@ -40,20 +40,49 @@

context 'soft validation' do
# Can't miss source, it's required by definition
specify 'is_absent - False' do
ga = FactoryGirl.create(:level2_geographic_area)
specify 'is_absent - False' do
ga = FactoryGirl.create(:level2_geographic_area)
ad1 = FactoryGirl.create(:valid_asserted_distribution, geographic_area: ga.parent, is_absent: 1)
ad2 = FactoryGirl.build_stubbed(:valid_asserted_distribution, geographic_area: ga)
ad2.soft_validate(:conflicting_geographic_area)
expect(ad2.soft_validations.messages_on(:geographic_area_id).count).to eq(1)
end
specify 'is_absent - True' do
ga = FactoryGirl.create(:level2_geographic_area)
ga = FactoryGirl.create(:level2_geographic_area)
ad1 = FactoryGirl.create(:valid_asserted_distribution, geographic_area: ga)
ad2 = FactoryGirl.build_stubbed(:valid_asserted_distribution, geographic_area: ga, is_absent: 1)
ad2.soft_validate(:conflicting_geographic_area)
expect(ad2.soft_validations.messages_on(:geographic_area_id).count).to eq(1)
end
end

context 'stub_new' do

let(:otu) { FactoryGirl.create(:valid_otu) }
let(:source) { FactoryGirl.create(:valid_source) }

before(:all) do
clean_slate_geo
generate_political_areas_with_collecting_events
end

after(:all) do
clean_slate_geo
User.delete_all
Project.delete_all
ActiveRecord::Base.connection.reset_pk_sequence!('users')
ActiveRecord::Base.connection.reset_pk_sequence!('projects')
end

specify 'creates some number of ADs' do
# pending
point = @gr_n3_ob.geographic_item.geo_object
areas = AssertedDistribution.stub_new({otu_id: otu.id,
source_id: source.id,
latitude: point.y,
longitude: point.x}).map(&:geographic_area)
expect(areas.map(&:name)).to include('Great Northern Land Mass', 'Old Boxia', 'R', 'RN3', 'N3')
end
end

end

0 comments on commit f141bcb

Please sign in to comment.