fbo 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile.lock +2 -2
- data/README.md +23 -0
- data/lib/fbo.rb +17 -0
- data/lib/fbo/notices/archive.rb +8 -0
- data/lib/fbo/notices/fair_opportunity.rb +15 -0
- data/lib/fbo/notices/foreign_standard.rb +13 -0
- data/lib/fbo/notices/intent_to_bundle.rb +13 -0
- data/lib/fbo/notices/justification_approval.rb +18 -0
- data/lib/fbo/notices/sale_of_surplus.rb +13 -0
- data/lib/fbo/notices/special_notice.rb +13 -0
- data/lib/fbo/notices/unarchive.rb +9 -0
- data/lib/fbo/parser.rb +2 -15
- data/lib/fbo/parser/archive_handler.rb +41 -0
- data/lib/fbo/parser/fair_opportunity_handler.rb +61 -0
- data/lib/fbo/parser/foreign_standard_handler.rb +57 -0
- data/lib/fbo/parser/handler_selector.rb +37 -0
- data/lib/fbo/parser/intent_to_bundle_handler.rb +56 -0
- data/lib/fbo/parser/justification_approval_handler.rb +60 -0
- data/lib/fbo/parser/parser_helper.rb +40 -0
- data/lib/fbo/parser/sale_of_surplus_handler.rb +57 -0
- data/lib/fbo/parser/special_notice_handler.rb +57 -0
- data/lib/fbo/parser/unarchive_handler.rb +42 -0
- data/lib/fbo/version.rb +1 -1
- data/spec/fbo/parser/amendment_handler_spec.rb +28 -23
- data/spec/fbo/parser/archive_handler_spec.rb +36 -0
- data/spec/fbo/parser/award_handler_spec.rb +5 -0
- data/spec/fbo/parser/combined_solicitation_handler_spec.rb +4 -0
- data/spec/fbo/parser/fair_opportunity_handler_spec.rb +56 -0
- data/spec/fbo/parser/foreign_standard_handler_spec.rb +51 -0
- data/spec/fbo/parser/handler_selector_spec.rb +40 -0
- data/spec/fbo/parser/intent_to_bundle_handler_spec.rb +52 -0
- data/spec/fbo/parser/justification_approval_handler_spec.rb +53 -0
- data/spec/fbo/parser/modification_handler_spec.rb +5 -0
- data/spec/fbo/parser/presolicitation_handler_spec.rb +5 -0
- data/spec/fbo/parser/sale_of_surplus_handler_spec.rb +53 -0
- data/spec/fbo/parser/sources_sought_handler_spec.rb +27 -22
- data/spec/fbo/parser/special_notice_handler_spec.rb +53 -0
- data/spec/fbo/parser/unarchive_handler_spec.rb +37 -0
- data/spec/fbo/parser/unknown_handler_spec.rb +5 -0
- data/spec/fbo/parser_spec.rb +18 -49
- data/spec/fixtures/notices/archive +10 -0
- data/spec/fixtures/notices/fairopp +29 -0
- data/spec/fixtures/notices/fstd +24 -0
- data/spec/fixtures/notices/itb +19 -0
- data/spec/fixtures/notices/ja +30 -0
- data/spec/fixtures/notices/notanotice +7 -0
- data/spec/fixtures/notices/ssale +24 -0
- data/spec/fixtures/notices/unarchive +10 -0
- metadata +53 -2
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FBO::Parser::FairOpportunityHandler do
|
4
|
+
let(:filename) { File.join(File.dirname(__FILE__), "..", "..", "fixtures", "notices", "fairopp") }
|
5
|
+
let(:file) { File.new(filename) }
|
6
|
+
let(:contents) { file.read }
|
7
|
+
|
8
|
+
subject { FBO::Parser::FairOpportunityHandler }
|
9
|
+
|
10
|
+
it "should recognize fair opportunity content" do
|
11
|
+
subject.is_fair_opportunity?(contents).should be_true
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should parse all fields correctly" do
|
15
|
+
fairopp = subject.parse(contents)
|
16
|
+
fairopp.date.strftime("%Y-%m-%d").should eq "2013-04-04"
|
17
|
+
fairopp.year.should eq 2013
|
18
|
+
fairopp.zip.should eq "39180"
|
19
|
+
fairopp.class_code.should eq "99"
|
20
|
+
fairopp.naics_code.should eq "541712"
|
21
|
+
fairopp.agency.should eq "Department of the Army"
|
22
|
+
fairopp.office.should eq "U.S. Army Corps of Engineers"
|
23
|
+
fairopp.location.should eq "USACE ITL, GSL, EL, CHL, Vicksburg"
|
24
|
+
fairopp.office_address.should eq "USACE ITL, GSL, EL, CHL, Vicksburg, 3909 HALLS FERRY ROAD , VICKSBURG, MS 39180-6199"
|
25
|
+
fairopp.subject.should eq "99--Purchase of Four Modular Protective Systems Kits for mortar pits and overhead cover."
|
26
|
+
fairopp.solicitation_number.should eq "W81EWF23072288"
|
27
|
+
fairopp.notice_type.should eq "SNOTE"
|
28
|
+
fairopp.justification_authority.should eq "Only One Source (except brand name)"
|
29
|
+
fairopp.award_number.should eq "W912HZ-13-C-0014"
|
30
|
+
fairopp.delivery_order_number.should eq "0000"
|
31
|
+
fairopp.modification_number.should be_nil
|
32
|
+
fairopp.award_date.strftime("%Y-%m-%d").should eq "2013-03-29"
|
33
|
+
fairopp.archive_date.strftime("%Y-%m-%d").should eq "2013-05-04"
|
34
|
+
fairopp.description.should eq "USACE, Engineer Research and Development Center (ERDC) Contracting Office intends <br> to issue a sole source award to Concurrent Solutions, LLC, 317 Tinnan Avenue, Franklin, TN 37067-2672 for Modular Protective System (MPS) Mortar pits and MPS Overhead Cover (OHC).The MPS is comprised of frame and armor panel subsystems that can be used to construct protective barrier walls and Over Head Cover structures. MPS is patent pending and Concurrent Solutions, LLC is currently the only vendor that has been granted a Non-Exclusive License Agreement to manufacture MPS. Because Concurrent Solutions, LLC, currently holds the sole Non-Exclusive License Agreement, only Concurrent Solutions, LLC can provide the requirement to ERDC."
|
35
|
+
fairopp.contact_info.should eq "Scott Brown, 601-631-7902\n\n<a href=\"mailto:scott.l.brown@usace.army.mil\">USACE ITL, GSL, EL, CHL, Vicksburg</a>"
|
36
|
+
fairopp.link_url.should eq "https://www.fbo.gov/spg/USA/COE/329/W81EWF23072288/listing.html"
|
37
|
+
fairopp.link_description.should eq "Link To Document"
|
38
|
+
fairopp.email_address.should eq "scott.l.brown@usace.army.mil"
|
39
|
+
fairopp.email_description.should eq "USACE ITL, GSL, EL, CHL, Vicksburg"
|
40
|
+
fairopp.file_list.should eq []
|
41
|
+
fairopp.correction.should be_false
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should return an FairOpportunity notice" do
|
45
|
+
fairopp = subject.parse(contents)
|
46
|
+
fairopp.should be_instance_of(FBO::Notices::FairOpportunity)
|
47
|
+
end
|
48
|
+
|
49
|
+
context "when not a fair opportunity" do
|
50
|
+
let(:filename) { File.join(File.dirname(__FILE__), "..", "..", "fixtures", "notices", "presol") }
|
51
|
+
|
52
|
+
it "should not recognize other notice content" do
|
53
|
+
subject.is_fair_opportunity?(contents).should_not be_true
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FBO::Parser::ForeignStandardHandler do
|
4
|
+
let(:filename) { File.join(File.dirname(__FILE__), "..", "..", "fixtures", "notices", "fstd") }
|
5
|
+
let(:file) { File.new(filename) }
|
6
|
+
let(:contents) { file.read }
|
7
|
+
|
8
|
+
subject { FBO::Parser::ForeignStandardHandler }
|
9
|
+
|
10
|
+
it "should recognize foreign standard content" do
|
11
|
+
subject.is_foreign_standard?(contents).should be_true
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should parse all fields correctly" do
|
15
|
+
fstd = subject.parse(contents)
|
16
|
+
fstd.date.strftime("%Y-%m-%d").should eq "2013-02-28"
|
17
|
+
fstd.year.should eq 2013
|
18
|
+
fstd.agency.should eq "Department of Agriculture"
|
19
|
+
fstd.office.should eq "Forest Service"
|
20
|
+
fstd.location.should eq "WO-AQM"
|
21
|
+
fstd.zip.should eq "22209"
|
22
|
+
fstd.class_code.should eq "U"
|
23
|
+
fstd.naics_code.should eq "611710"
|
24
|
+
fstd.office_address.should eq "1621 N. Kent Street\nAQM Suite 707 RPE Arlington VA 22209"
|
25
|
+
fstd.subject.should eq "Environmental Education in Hebron"
|
26
|
+
fstd.solicitation_number.should eq "AG-3187-S-13-0067"
|
27
|
+
fstd.response_date.strftime("%Y-%m-%d").should eq "2013-03-13"
|
28
|
+
fstd.archive_date.should be_nil
|
29
|
+
fstd.contact_info.should eq "Cassandra Carey, Phone 4043473975, Email cncarey@fs.fed.us"
|
30
|
+
fstd.description.should eq "The USDA Forest Service, Washington Office, Office of the Chief, International Programs (USFS/IP) intends to procure the services of the Palestinian Association for Child Arts and Culture (PCAC), a Palestinian non-governmental organization, to perform environmental outreach activities for youth in the city of Hebron as a sole source fixed-price purchase order under authority of Federal Acquisition Regulation (FAR) subpart 6.302-1, other than full and open competition for the acquisition of services to develop knowledge and understanding on the following: nature and function of ecosystems and how they are interrelated; impact of human activities on the environment; and principles of ecologically sustainable development. <br />Project objectives, activities will include:<br />• Hold a two-day workshop training to a minimum of 10 staff members and volunteer leaders on project objectives and specific activities. <br />• Host a summer-long environmental summer camp for a minimum of 40 children that focuses on learning about the environment and the arts. <br />• Arrange a field trip for a minimum of 30 children to Hebron's environmentally important sites. <br />• Arrange a field trip for a minimum of 30 children to Jericho's environmentally important sites. <br />• Conduct a minimum of five volunteer activities in Hebron with at least 30 children toward city beautification. <br />• Complete a minimum of two art murals related to the environment in Hebron public spaces. <br />USFS/IP seeks to provide environmental-related activities to youth in the Hebron area. To fulfill the specified activities, the institution must have access to necessary in-house expertise and facilities to lead and host workshops, conduct environmental-related activities that tie into art and drama activities, and arrange field trips to select areas in the West Bank. <br />In consultation with USAID/West Bank and the US Consulate, PCAC is deemed the only responsible organization in the Hebron region that has the in-house expertise and facilities to provide the specified services. PCAC has 15 trained staff and facilities that include: library for children, arts and craft supplies, musical instruments, and rooms to host public seminars of up to 50 people.\n<p> </p>"
|
31
|
+
fstd.link_url.should eq "https://www.fbo.gov/spg/USDA/FS/WO-AQM/AG-3187-S-13-0067/listing.html"
|
32
|
+
fstd.link_description.should eq "Link To Document"
|
33
|
+
fstd.setaside.should eq "N/A"
|
34
|
+
fstd.pop_country.should eq "PS"
|
35
|
+
fstd.pop_zip.should be_nil
|
36
|
+
fstd.pop_address.should eq "Hebron"
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should return a ForeignStandard notice" do
|
40
|
+
fstd = subject.parse(contents)
|
41
|
+
fstd.should be_instance_of(FBO::Notices::ForeignStandard)
|
42
|
+
end
|
43
|
+
|
44
|
+
context "when not a foreign standard" do
|
45
|
+
let(:filename) { File.join(File.dirname(__FILE__), "..", "..", "fixtures", "notices", "presol") }
|
46
|
+
|
47
|
+
it "should not recognize other notice content" do
|
48
|
+
subject.is_foreign_standard?(contents).should_not be_true
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FBO::Parser::HandlerSelector do
|
4
|
+
let(:file) { File.new(filename) }
|
5
|
+
let(:contents) { file.read }
|
6
|
+
|
7
|
+
subject { FBO::Parser::HandlerSelector }
|
8
|
+
|
9
|
+
# Judo this.
|
10
|
+
tag_to_name_map = {
|
11
|
+
amdcss: "Amendment", archive: "Archive", award: "Award",
|
12
|
+
combine: "Combined Solicitation", fairopp: "Fair Opportunity",
|
13
|
+
fstd: "Foreign Standard", itb: "Intent to Bundle",
|
14
|
+
ja: "Justification Approval", mod: "Modification",
|
15
|
+
presol: "Presolicitation", ssale: "Sale of Surplus",
|
16
|
+
srcsgt: "Sources Sought", snote: "Special Notice",
|
17
|
+
unarchive: "Unarchive" }
|
18
|
+
|
19
|
+
tag_to_name_map.each do |tag, name|
|
20
|
+
handler_name = name.split.map { |w| w.capitalize }.join
|
21
|
+
handler = Kernel.const_get("FBO::Parser::#{ handler_name }Handler")
|
22
|
+
|
23
|
+
context "#{ name } notice" do
|
24
|
+
let(:filename) { File.join(File.dirname(__FILE__), "..", "..", "fixtures", "notices", tag.to_s) }
|
25
|
+
|
26
|
+
it "should return #{ handler_name }" do
|
27
|
+
subject.select(contents).should eq handler
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context "any other format of content" do
|
33
|
+
let(:filename) { File.join(File.dirname(__FILE__), "..", "..", "fixtures", "notices", "notanotice") }
|
34
|
+
|
35
|
+
it "should return UnknownHandler" do
|
36
|
+
subject.select(contents).should eq FBO::Parser::UnknownHandler
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FBO::Parser::IntentToBundleHandler do
|
4
|
+
let(:filename) { File.join(File.dirname(__FILE__), "..", "..", "fixtures", "notices", "itb") }
|
5
|
+
let(:file) { File.new(filename) }
|
6
|
+
let(:contents) { file.read }
|
7
|
+
|
8
|
+
subject { FBO::Parser::IntentToBundleHandler }
|
9
|
+
|
10
|
+
it "should recognize intent to bundle content" do
|
11
|
+
subject.is_intent_to_bundle?(contents).should be_true
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should parse all fields correctly" do
|
15
|
+
itb = subject.parse(contents)
|
16
|
+
itb.date.strftime("%Y-%m-%d").should eq "2011-03-24"
|
17
|
+
itb.year.should eq 2011
|
18
|
+
itb.agency.should eq "Department of the Army"
|
19
|
+
itb.office.should eq "U.S. Army Corps of Engineers"
|
20
|
+
itb.location.should eq "USACE District, Albuquerque"
|
21
|
+
itb.zip.should eq "87109-3435"
|
22
|
+
itb.class_code.should eq "Y"
|
23
|
+
itb.naics_code.should eq "236220"
|
24
|
+
itb.office_address.should eq "Attn: CESPA-CT\n4101 Jefferson Plaza NE Albuquerque NM 87109-3435"
|
25
|
+
itb.subject.should eq "Y--FY11 SOF Operations and Training Facility and a UAS Squad Ops Facility at Cannon Air Force Base (CAFB), Curry County, New Mexico"
|
26
|
+
itb.solicitation_number.should eq "W912PP11R0011"
|
27
|
+
itb.archive_date.should be_nil
|
28
|
+
itb.contact_info.should eq "Diana Martinez, Phone 5053423263, Email Diana.M.Martinez@usace.army.mil"
|
29
|
+
itb.description.should eq "T<span style=\"FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Times New Roman','serif'\">he need for consolidation of these two facilities has been determined by the SPA district to be in the best interest to provide the best overall value to the Government in regards to time, cost, and construction performance benefits that would be received.<span style=\"mso-spacerun: yes\"> </span>The critical need for these projects and the market research that has been conducted, coupled with the reasons listed above support the conclusion of the SPA team that consolidated of these projects into one is both necessary and justified.<span style=\"mso-spacerun: yes\"> </span>A measurably substantial benefit comes from an operational standpoint.<span style=\"mso-spacerun: yes\"> </span>The Air Force determined that allowing AFCEE and AFSOC squadrons to share mission essential classified information, equipment and resources will greatly enhance the dissemination of classified information to the Overseas Contingency Operation (OCO) theater.<span style=\"mso-spacerun: yes\"> </span><span style=\"mso-spacerun: yes\"> </span>This requirement meets the threshold <span style=\"mso-spacerun: yes\"> </span>in excess of 10% of the exception found in FAR .<span style=\"mso-spacerun: yes\"> </span>Small Businesses will have the opportunity to propose on this project.<span style=\"mso-spacerun: yes\"> </span>In addition, Small Business Participation will be used as an evaluation factor in the Source Selection process.<span style=\"mso-spacerun: yes\"> </span>Small Business Participation is the extent to which prime contractors will be including small businesses in the project.<span style=\"mso-spacerun: yes\"> </span>Therefore, SPA will ensure that small business participation is considered.<span style=\"mso-spacerun: yes\"> </span>All provisions allowed per the FAR for Small Business participation will be utilized.<span style=\"mso-spacerun: yes\"> </span>The anticipated benefits of the proposed bundled contract justify its use.<span style=\"mso-spacerun: yes\"> </span>There are no alternative strategies that would reduce or minimize the scope of the bundling.<span style=\"mso-spacerun: yes\"> </span>The rationale for bundling is savings in cost to the taxpayers, time, and other issues as discussed above.</span>"
|
30
|
+
itb.notice_type.should be_nil
|
31
|
+
itb.award_number.should be_nil
|
32
|
+
itb.delivery_order_number.should be_nil
|
33
|
+
itb.link_url.should eq "https://www.fbo.gov/spg/USA/COE/DACA47/W912PP11R0011/listing.html"
|
34
|
+
itb.link_description.should eq "Link To Document"
|
35
|
+
itb.email_address.should be_nil
|
36
|
+
itb.email_description.should be_nil
|
37
|
+
itb.correction.should be_false
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should return an IntentToBundle notice" do
|
41
|
+
itb = subject.parse(contents)
|
42
|
+
itb.should be_instance_of(FBO::Notices::IntentToBundle)
|
43
|
+
end
|
44
|
+
|
45
|
+
context "when not an intent to bundle" do
|
46
|
+
let(:filename) { File.join(File.dirname(__FILE__), "..", "..", "fixtures", "notices", "presol") }
|
47
|
+
|
48
|
+
it "should not recognize other notice content" do
|
49
|
+
subject.is_intent_to_bundle?(contents).should_not be_true
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FBO::Parser::JustificationApprovalHandler do
|
4
|
+
let(:filename) { File.join(File.dirname(__FILE__), "..", "..", "fixtures", "notices", "ja") }
|
5
|
+
let(:file) { File.new(filename) }
|
6
|
+
let(:contents) { file.read }
|
7
|
+
|
8
|
+
subject { FBO::Parser::JustificationApprovalHandler }
|
9
|
+
|
10
|
+
it "should recognize justification & approval content" do
|
11
|
+
subject.is_justification_approval?(contents).should be_true
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should parse all fields correctly" do
|
15
|
+
ja = subject.parse(contents)
|
16
|
+
ja.date.strftime("%Y-%m-%d").should eq Date.parse("2013-04-04").strftime("%Y-%m-%d")
|
17
|
+
ja.year.should eq 2013
|
18
|
+
ja.agency.should eq "Department of the Air Force"
|
19
|
+
ja.office.should eq "Air Combat Command"
|
20
|
+
ja.location.should eq "9 CONS"
|
21
|
+
ja.zip.should eq "95903-1712"
|
22
|
+
ja.class_code.should eq "R"
|
23
|
+
ja.naics_code.should eq "541611"
|
24
|
+
ja.office_address.should eq "6500 B St Ste 101 Beale AFB CA 95903-1712"
|
25
|
+
ja.subject.should eq "ISR A&AS Mission Support Services"
|
26
|
+
ja.solicitation_number.should eq "FA4686-13-R-0006"
|
27
|
+
ja.notice_type.should be_nil
|
28
|
+
ja.archive_date.strftime("%Y-%m-%d").should eq "2013-04-19"
|
29
|
+
ja.contact_info.should eq "Dylan J. Edwards, Phone 5306342478, Email dylan.edwards@beale.af.mil - Eric R. Schmitt, Contracting Adminstrator, Phone 530-634-3411, Fax 530-634-3311 , Email eric.schmitt@beale.af.mil"
|
30
|
+
ja.description.should eq "The 9th Contracting Sq intends to issue a firm-fixed price contract to a single source under the authority of FAR 6.302-1(a)(2)(iii)(B), Only One Responsible Source and No Other Supplies or Services will Satisfy Agency Requirements, on or about 1 Apr 2013 to Spectrum Comm. Inc. The period of performance is 3 months with 3, 1-month option periods.\n<p>The requirement is for the continuation of specialized A&AS support in executing high altitude reconnaissance and intelligence collection processes for the Combat Air Forces (CAF) at Beale AFB, California and other worldwide locations in direct support of the RQ-4 (Global Hawk), T-38 and U-2 air frames and platforms. The contractor is required to provide support in, but not limited to: operational airborne sensor management; Air Force mission systems; high altitude intelligence system program and weapons and tactics; mission planning; electronic warfare operations and tactics management; operational test & evaluation management; advanced reconnaissance tactics course; and in the areas of logistics/training/command post/deployment/communications and plans and exercises management.</p>\n<p>A follow-on competitive task order, to be competed under ACC/AMIC CAAS IV contract is projected for award on/about 1 August.</p>\n<p>The North American Industry Classification System (NAICS) code for this requirement is 541611 with the size standard of $7M.</p>\n<p>Responsible sources may submit a capability statement, proposal, or quotation which may be reviewed by the agency. This notice of intent is not a request for competitive proposals. The Government will not be responsible for any cost incurred in preparation of statements, proposal, or quotations. A determination by the Government not to compete with this proposed contract based upon responses to this notice is solely within the discretion of the Government. Information received will normally be considered solely for the purpose of determining whether to conduct a competitive procurement. No solicitation or additional information will be made available with regard to this sole source notice.</p>\n<p>Any responses to this notice of contract action shall be submitted to 1st Lt Dylan Edwards, dylan.edwards@beale.af.mil, no later than 4:00 PM, PST, April 17, 2013.</p>"
|
31
|
+
ja.award_number.should eq "FA4686-13-C-0006"
|
32
|
+
ja.award_date.strftime("%Y-%m-%d").should eq Date.parse("2013-03-29").strftime("%Y-%m-%d")
|
33
|
+
ja.link_url.should eq "https://www.fbo.gov/spg/USAF/ACC/9CONS/FA4686-13-R-0006/listing.html"
|
34
|
+
ja.link_description.should eq "Link To Document"
|
35
|
+
ja.email_address.should eq "shari.l.bealer2.civ@mail.mil"
|
36
|
+
ja.email_description.should eq "ACC - Rock Island (ACC-RI)"
|
37
|
+
ja.file_list.should be_instance_of Array
|
38
|
+
ja.correction.should be_false
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should return a JustificationApproval notice" do
|
42
|
+
ja = subject.parse(contents)
|
43
|
+
ja.should be_instance_of(FBO::Notices::JustificationApproval)
|
44
|
+
end
|
45
|
+
|
46
|
+
context "when not a JustificationApproval" do
|
47
|
+
let(:filename) { File.join(File.dirname(__FILE__), "..", "..", "fixtures", "notices", "presol") }
|
48
|
+
|
49
|
+
it "should not recognize other notice content" do
|
50
|
+
subject.is_justification_approval?(contents).should_not be_true
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -37,6 +37,11 @@ describe FBO::Parser::ModificationHandler do
|
|
37
37
|
mod.pop_address.should eq "USDA, ARS, EMBUL, BARC\n10300 BALTIMORE AVE.\nBeltsville, MD"
|
38
38
|
end
|
39
39
|
|
40
|
+
it "should return a Modification notice" do
|
41
|
+
mod = subject.parse(contents)
|
42
|
+
mod.should be_instance_of(FBO::Notices::Modification)
|
43
|
+
end
|
44
|
+
|
40
45
|
context "when not a modification" do
|
41
46
|
let(:filename) { File.join(File.dirname(__FILE__), "..", "..", "fixtures", "notices", "presol") }
|
42
47
|
|
@@ -36,6 +36,11 @@ describe FBO::Parser::PresolicitationHandler do
|
|
36
36
|
|
37
37
|
end
|
38
38
|
|
39
|
+
it "should return a Presolicitation notice" do
|
40
|
+
presol = subject.parse(contents)
|
41
|
+
presol.should be_instance_of(FBO::Notices::Presolicitation)
|
42
|
+
end
|
43
|
+
|
39
44
|
context "when not a presolication" do
|
40
45
|
let(:filename) { File.join(File.dirname(__FILE__), "..", "..", "fixtures", "notices", "combine") }
|
41
46
|
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FBO::Parser::SaleOfSurplusHandler do
|
4
|
+
let(:filename) { File.join(File.dirname(__FILE__), "..", "..", "fixtures", "notices", "ssale") }
|
5
|
+
let(:file) { File.new(filename) }
|
6
|
+
let(:contents) { file.read }
|
7
|
+
|
8
|
+
subject { FBO::Parser::SaleOfSurplusHandler }
|
9
|
+
|
10
|
+
it "should recognize sale of surplus property content" do
|
11
|
+
subject.is_sale_of_surplus?(contents).should be_true
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should parse all fields correctly" do
|
15
|
+
snote = subject.parse(contents)
|
16
|
+
snote.date.strftime("%Y-%m-%d").should eq "2013-04-11"
|
17
|
+
snote.year.should eq 2013
|
18
|
+
snote.zip.should eq "20401"
|
19
|
+
snote.class_code.should eq "99"
|
20
|
+
snote.naics_code.should eq "322299"
|
21
|
+
snote.agency.should eq "Government Printing Office"
|
22
|
+
snote.office.should eq "Acquisition Services"
|
23
|
+
snote.location.should eq "Acquisition Services"
|
24
|
+
snote.office_address.should eq "732 North Capitol Street, NW Washington DC 20401"
|
25
|
+
snote.subject.should eq "Sale No. 5-2013 of Govt. Surplus Waste Paper"
|
26
|
+
snote.solicitation_number.should eq "5-2013"
|
27
|
+
snote.response_date.strftime("%Y-%m-%d").should eq "2013-04-29"
|
28
|
+
snote.archive_date.should be_nil
|
29
|
+
snote.contact_info.should eq "Gloria Robertson, Phone 202-512-2010 ext. 31679, Fax 202-512-1354, Email glrobertson@gpo.gov"
|
30
|
+
snote.description.should eq "Surplus Sale of Waste Paper.<br /><br />Period of Performance May 1, 2013 (or Date of Award) through April 30, 2014 (Base Year) with up to 4 Year Options."
|
31
|
+
snote.link_url.should eq "https://www.fbo.gov/spg/GPO/PSPSD/WashingtonDC/5-2013/listing.html"
|
32
|
+
snote.link_description.should eq "Link To Document"
|
33
|
+
snote.email_address.should be_nil
|
34
|
+
snote.email_description.should be_nil
|
35
|
+
snote.setaside.should eq "N/A"
|
36
|
+
snote.pop_address.should eq "DC Location: 732 North Capital Street, NW, Washinghton, DC 20401\n\nLaurel Location: 8660 Cherry Lane, Laurel, MD 20707"
|
37
|
+
snote.pop_zip.should be_nil
|
38
|
+
snote.pop_country.should eq "US"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should return a SaleOfSurplus notice" do
|
42
|
+
snote = subject.parse(contents)
|
43
|
+
snote.should be_instance_of(FBO::Notices::SaleOfSurplus)
|
44
|
+
end
|
45
|
+
|
46
|
+
context "when not a sale of surplus property" do
|
47
|
+
let(:filename) { File.join(File.dirname(__FILE__), "..", "..", "fixtures", "notices", "presol") }
|
48
|
+
|
49
|
+
it "should not recognize other notice content" do
|
50
|
+
subject.is_sale_of_surplus?(contents).should_not be_true
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -12,28 +12,33 @@ describe FBO::Parser::SourcesSoughtHandler do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
it "should parse all fields correctly" do
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
15
|
+
srcsgt = subject.parse(contents)
|
16
|
+
srcsgt.date.strftime("%Y-%m-%d").should eq Date.parse("2013-04-07").strftime("%Y-%m-%d")
|
17
|
+
srcsgt.year.should eq 2013
|
18
|
+
srcsgt.agency.should eq "Department of Housing and Urban Development"
|
19
|
+
srcsgt.office.should eq "OCPO, Office of Support Operations"
|
20
|
+
srcsgt.location.should eq "Office of Support Operations, NO"
|
21
|
+
srcsgt.zip.should eq "20410"
|
22
|
+
srcsgt.class_code.should eq "R"
|
23
|
+
srcsgt.naics_code.should eq "541211"
|
24
|
+
srcsgt.office_address.should eq "451 7th Street S.W. Washington DC 20410"
|
25
|
+
srcsgt.subject.should eq "The U.S. Department of Housing and Urban Development is trying to determine the availability and capability of qualified small businesses to analyze internal control over financial reporting in accordance with The Office and Budget (OMB) Circular A-123."
|
26
|
+
srcsgt.solicitation_number.should eq "HUD_FHA_OMB_CIRCULAR_A123"
|
27
|
+
srcsgt.response_date.strftime("%Y-%m-%d").should eq "2013-04-22"
|
28
|
+
srcsgt.archive_date.should be_nil
|
29
|
+
srcsgt.contact_info.should eq "Robert E. Caldwell, Contract Specialist, Phone (202) 402-3503, Email robert.e.caldwell@hud.gov - Diane Toledo-Gaskins, Contracting Officer, Phone (202) 402-4140, Email diane.e.toledo-gaskins@hud.gov"
|
30
|
+
srcsgt.description.should eq "This is a SOURCES SOUGHT NOTICE for the United States Department of Housing and Urban Development's, Federal Housing Administration (FHA) to determine the availability and capability of qualified small businesses (including certified 8(a), Small Disadvantaged, HUBZone firms; veteran and service-disabled veteran-owned small businesses, and women-owned small businesses) to analyze FHA's internal control over financial reporting. <br />\n<p>The contractor assessing FHA's internal control over financial reporting shall determine whether control deficiencies, as defined in A-123, exist. If control deficiencies exist, the contractor shall determine if they rise to the level of a significant deficiency or material weakness as defined in A-123. For identified control deficiencies, the contractor shall recommend improvements needed to strengthen internal controls. The result of this assessment will provide a basis for management's assurance statement regarding the effectiveness of internal control over financial reporting.</p>\n<p>Responses to this announcement will not be returned, nor will there be any discussions or debriefings of any responses. However, information obtained as a result of this announcement may be reflected in the subsequent solicitation, and HUD may contact one or more respondents for clarifications and to enhance the government's understanding. This announcement is Government market research, and may result in revisions in both its requirements and its acquisition strategy based on industry responses. RESPONDENTS MUST SUBMIT THEIR CAPABILITY STATEMENT AND SUPPORTING DOCUMENTATION VIA E-MAIL in MS Word, WordPerfect, or Adobe Portable Document Format (PDF) to Robert Caldwell at robert.e.caldwell@hud.gov no later than Monday, April 22, 2013 at 5:00PM Eastern Standard Time for consideration.</p>"
|
31
|
+
srcsgt.link_url.should eq "https://www.fbo.gov/spg/HUD/NO/NO/HUD_FHA_OMB_CIRCULAR_A123/listing.html"
|
32
|
+
srcsgt.link_description.should eq "Link To Document"
|
33
|
+
srcsgt.setaside.should eq "N/A"
|
34
|
+
srcsgt.pop_country.should eq "US"
|
35
|
+
srcsgt.pop_zip.should eq "20410"
|
36
|
+
srcsgt.pop_address.should eq "An initial visit to Washington, D.C. to HUD Headquarters to meet with HUD staff will be required after contract award.\n\nWashington, DC"
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should return a SourcesSought notice" do
|
40
|
+
srcsgt = subject.parse(contents)
|
41
|
+
srcsgt.should be_instance_of(FBO::Notices::SourcesSought)
|
37
42
|
end
|
38
43
|
|
39
44
|
context "when not a sources sought" do
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FBO::Parser::SpecialNoticeHandler do
|
4
|
+
let(:filename) { File.join(File.dirname(__FILE__), "..", "..", "fixtures", "notices", "snote") }
|
5
|
+
let(:file) { File.new(filename) }
|
6
|
+
let(:contents) { file.read }
|
7
|
+
|
8
|
+
subject { FBO::Parser::SpecialNoticeHandler }
|
9
|
+
|
10
|
+
it "should recognize special notice content" do
|
11
|
+
subject.is_special_notice?(contents).should be_true
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should parse all fields correctly" do
|
15
|
+
snote = subject.parse(contents)
|
16
|
+
snote.date.strftime("%Y-%m-%d").should eq "2013-03-26"
|
17
|
+
snote.year.should eq 2013
|
18
|
+
snote.zip.should eq "32403-5526"
|
19
|
+
snote.class_code.should eq "66"
|
20
|
+
snote.naics_code.should eq "811219"
|
21
|
+
snote.agency.should eq "Department of the Air Force"
|
22
|
+
snote.office.should eq "Air Combat Command"
|
23
|
+
snote.location.should eq "325 CONS"
|
24
|
+
snote.office_address.should eq "501 Illinois Ave, Ste 5\nBldg 647\n Tyndall AFB, FL 32403-5526"
|
25
|
+
snote.subject.should eq "Install and repair the Oxford Instruments America, Inc"
|
26
|
+
snote.solicitation_number.should eq "F4AB003063A005"
|
27
|
+
snote.response_date.strftime("%Y-%m-%d").should eq "2013-04-02"
|
28
|
+
snote.archive_date.should be_nil
|
29
|
+
snote.contact_info.should eq "Yvette M. Kelly, Contract Specialist, Phone 8502838630, Fax 8502838491, Email yvette.kelly@tyndall.af.mil - Melissa J. Blair, Contract Officer, Phone 8502830061, Fax 850-283-8491, Email melissa.blair@tyndall.af.mil"
|
30
|
+
snote.description.should eq "NOTICE OF INTENT TO AWARD - The 325th Contracting Squadron intends to award a sole-source firm-fixed price purchase order to Oxford Instruments America, Inc. to install and repair the Oxford Instrument America. The intent of this procurement is to award based on sole source requirement. Quotes are not being requested and a written solicitation will not be used.<br />This purchase will be made under Simplified Acquisition Procedures and Other than Full and Open Competition as authorized by FAR 13.106-1(b)(1) Single source. This notice is neither a request for competitive proposals nor a solicitation of offers. A determination by the Government not to compete this requirement based on responses to this notice is solely within the discretion of the Government. Information received will be considered solely for the purpose of determining whether to conduct a competitive procurement.<br />"
|
31
|
+
snote.link_url.should eq "https://www.fbo.gov/notices/bad4233bab267120f1752ad4b9bf095f"
|
32
|
+
snote.link_description.should eq "Link To Document"
|
33
|
+
snote.email_address.should be_nil
|
34
|
+
snote.email_description.should be_nil
|
35
|
+
snote.setaside.should eq "N/A"
|
36
|
+
snote.pop_address.should eq "501 Illinois Ave Suite 5\nTyndall AFB, FL"
|
37
|
+
snote.pop_zip.should eq "32403"
|
38
|
+
snote.pop_country.should eq "US"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should return a SpecialNotice notice" do
|
42
|
+
snote = subject.parse(contents)
|
43
|
+
snote.should be_instance_of(FBO::Notices::SpecialNotice)
|
44
|
+
end
|
45
|
+
|
46
|
+
context "when not a special notice" do
|
47
|
+
let(:filename) { File.join(File.dirname(__FILE__), "..", "..", "fixtures", "notices", "presol") }
|
48
|
+
|
49
|
+
it "should not recognize other notice content" do
|
50
|
+
subject.is_special_notice?(contents).should_not be_true
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|