fbo 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -5
  3. data/Gemfile +0 -2
  4. data/Rakefile +8 -1
  5. data/fbo.gemspec +14 -9
  6. data/lib/fbo.rb +7 -38
  7. data/lib/fbo/chunked_file.rb +74 -0
  8. data/lib/fbo/dump.treetop +324 -0
  9. data/lib/fbo/file.rb +17 -1
  10. data/lib/fbo/interpreter.rb +87 -0
  11. data/lib/fbo/node_extensions.rb +173 -0
  12. data/lib/fbo/parser.rb +43 -46
  13. data/lib/fbo/remote_file.rb +4 -4
  14. data/lib/fbo/version.rb +1 -1
  15. data/spec/fbo/chunked_file_spec.rb +22 -0
  16. data/spec/fbo/file_spec.rb +26 -9
  17. data/spec/fbo/interpreter_spec.rb +73 -0
  18. data/spec/fbo/parser_spec.rb +36 -38
  19. data/spec/fbo/remote_file_spec.rb +28 -24
  20. data/spec/fixtures/.keep +0 -0
  21. data/spec/fixtures/FBOFeed20130331 +52 -5529
  22. data/spec/fixtures/FBOFeed20131003 +35126 -0
  23. data/spec/spec_helper.rb +14 -16
  24. metadata +70 -108
  25. data/.rspec +0 -2
  26. data/Gemfile.lock +0 -27
  27. data/lib/fbo/notice.rb +0 -9
  28. data/lib/fbo/notices.rb +0 -6
  29. data/lib/fbo/notices/amendment.rb +0 -13
  30. data/lib/fbo/notices/archive.rb +0 -8
  31. data/lib/fbo/notices/award.rb +0 -14
  32. data/lib/fbo/notices/combined_solicitation.rb +0 -14
  33. data/lib/fbo/notices/fair_opportunity.rb +0 -15
  34. data/lib/fbo/notices/foreign_standard.rb +0 -13
  35. data/lib/fbo/notices/intent_to_bundle.rb +0 -13
  36. data/lib/fbo/notices/justification_approval.rb +0 -18
  37. data/lib/fbo/notices/modification.rb +0 -14
  38. data/lib/fbo/notices/presolicitation.rb +0 -14
  39. data/lib/fbo/notices/sale_of_surplus.rb +0 -13
  40. data/lib/fbo/notices/sources_sought.rb +0 -13
  41. data/lib/fbo/notices/special_notice.rb +0 -13
  42. data/lib/fbo/notices/unarchive.rb +0 -9
  43. data/lib/fbo/notices/unknown.rb +0 -7
  44. data/lib/fbo/parser/amendment_handler.rb +0 -58
  45. data/lib/fbo/parser/archive_handler.rb +0 -41
  46. data/lib/fbo/parser/award_handler.rb +0 -62
  47. data/lib/fbo/parser/combined_solicitation_handler.rb +0 -57
  48. data/lib/fbo/parser/fair_opportunity_handler.rb +0 -61
  49. data/lib/fbo/parser/foreign_standard_handler.rb +0 -57
  50. data/lib/fbo/parser/handler_selector.rb +0 -37
  51. data/lib/fbo/parser/intent_to_bundle_handler.rb +0 -56
  52. data/lib/fbo/parser/justification_approval_handler.rb +0 -60
  53. data/lib/fbo/parser/modification_handler.rb +0 -66
  54. data/lib/fbo/parser/notice_handler.rb +0 -27
  55. data/lib/fbo/parser/parser_helper.rb +0 -315
  56. data/lib/fbo/parser/presolicitation_handler.rb +0 -57
  57. data/lib/fbo/parser/sale_of_surplus_handler.rb +0 -57
  58. data/lib/fbo/parser/sources_sought_handler.rb +0 -57
  59. data/lib/fbo/parser/special_notice_handler.rb +0 -57
  60. data/lib/fbo/parser/unarchive_handler.rb +0 -42
  61. data/lib/fbo/parser/unknown_handler.rb +0 -20
  62. data/spec/fbo/parser/amendment_handler_spec.rb +0 -51
  63. data/spec/fbo/parser/archive_handler_spec.rb +0 -36
  64. data/spec/fbo/parser/award_handler_spec.rb +0 -56
  65. data/spec/fbo/parser/combined_solicitation_handler_spec.rb +0 -51
  66. data/spec/fbo/parser/fair_opportunity_handler_spec.rb +0 -56
  67. data/spec/fbo/parser/foreign_standard_handler_spec.rb +0 -51
  68. data/spec/fbo/parser/handler_selector_spec.rb +0 -40
  69. data/spec/fbo/parser/intent_to_bundle_handler_spec.rb +0 -52
  70. data/spec/fbo/parser/justification_approval_handler_spec.rb +0 -53
  71. data/spec/fbo/parser/modification_handler_spec.rb +0 -52
  72. data/spec/fbo/parser/presolicitation_handler_spec.rb +0 -51
  73. data/spec/fbo/parser/sale_of_surplus_handler_spec.rb +0 -53
  74. data/spec/fbo/parser/sources_sought_handler_spec.rb +0 -51
  75. data/spec/fbo/parser/special_notice_handler_spec.rb +0 -53
  76. data/spec/fbo/parser/unarchive_handler_spec.rb +0 -37
  77. data/spec/fbo/parser/unknown_handler_spec.rb +0 -24
  78. data/spec/fixtures/FBOFeed20130404 +0 -45653
  79. data/spec/fixtures/FBOFeed20130406 +0 -10152
  80. data/spec/fixtures/FBOFeed20130407 +0 -6610
  81. data/spec/fixtures/notices/amdcss +0 -26
  82. data/spec/fixtures/notices/archive +0 -10
  83. data/spec/fixtures/notices/award +0 -31
  84. data/spec/fixtures/notices/combine +0 -29
  85. data/spec/fixtures/notices/fairopp +0 -29
  86. data/spec/fixtures/notices/fstd +0 -24
  87. data/spec/fixtures/notices/itb +0 -19
  88. data/spec/fixtures/notices/ja +0 -30
  89. data/spec/fixtures/notices/mod +0 -28
  90. data/spec/fixtures/notices/notanotice +0 -7
  91. data/spec/fixtures/notices/presol +0 -25
  92. data/spec/fixtures/notices/snote +0 -26
  93. data/spec/fixtures/notices/srcsgt +0 -27
  94. data/spec/fixtures/notices/ssale +0 -24
  95. data/spec/fixtures/notices/unarchive +0 -10
@@ -1,51 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe FBO::Parser::CombinedSolicitationHandler do
4
- let(:filename) { File.join(File.dirname(__FILE__), "..", "..", "fixtures", "notices", "combine") }
5
- let(:file) { File.new(filename) }
6
- let(:contents) { file.read }
7
-
8
- subject { FBO::Parser::CombinedSolicitationHandler }
9
-
10
- it "should recognize combined solicitation content" do
11
- subject.is_combined_solicitation?(contents).should be_true
12
- end
13
-
14
- it "should parse all fields correctly" do
15
- combine = subject.parse(contents)
16
- combine.date.strftime("%Y-%m-%d").should eq Date.parse("2013-04-07").strftime("%Y-%m-%d")
17
- combine.year.should eq 2013
18
- combine.agency.should eq "Defense Logistics Agency"
19
- combine.office.should eq "DLA Acquisition Locations"
20
- combine.location.should eq "DLA Aviation - BSM"
21
- combine.zip.should eq "23297"
22
- combine.class_code.should eq "61"
23
- combine.naics_code.should eq "335931"
24
- combine.office_address.should eq "DLA AVIATION; 8000 JEFFERSON DAVIS HIGHWAY; RICHMOND VA 23297"
25
- combine.subject.should eq "61--CABLE ASSEMBLY,SPECIAL"
26
- combine.solicitation_number.should eq "SPE4A613TBW31"
27
- combine.response_date.strftime("%Y-%m-%d").should eq "2013-04-15"
28
- combine.archive_date.strftime("%Y-%m-%d").should eq "2013-05-15"
29
- combine.contact_info.should eq "Questions regarding this solicitation should be emailed to dibbsBSM@dla.mil"
30
- combine.description.should eq "Proposed procurement for NSN 6150012666487 CABLE ASSEMBLY,SPECIAL:\nLine 0001 Qty 40.00 UI EA Deliver To: W1BG DLA DISTRIBUTION By: 0189 DAYS ADOApproved sources are 56540 75A756180-9AUK; 76301 75A756180-9AUK.\nThe solicitation is an RFQ and will be available at the link provided in this notice. Hard copies of this solicitation are not available. Specifications, plans, or drawings are not available.\nAll responsible sources may submit a quote which, if timely received, shall be considered.\nQuotes must be submitted electronically."
31
- combine.link_url.should eq "https://www.fbo.gov/spg/DLA/J3/DSCR-BSM/SPE4A613TBW31/listing.html"
32
- combine.link_description.should eq "Link To Document"
33
- combine.setaside.should eq "Total Small Business"
34
- combine.pop_country.should eq "US"
35
- combine.pop_zip.should eq "20005-4026"
36
- combine.pop_address.should eq "Washington, DC 20005"
37
- end
38
-
39
- it "should return a CombinedSolicitation notice" do
40
- combine = subject.parse(contents)
41
- combine.should be_instance_of(FBO::Notices::CombinedSolicitation)
42
- end
43
-
44
- context "when not a combined solicitation" 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_combined_solicitation?(contents).should_not be_true
49
- end
50
- end
51
- end
@@ -1,56 +0,0 @@
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
@@ -1,51 +0,0 @@
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 />&bull; Hold a two-day workshop training to a minimum of 10 staff members and volunteer leaders on project objectives and specific activities. <br />&bull; Host a summer-long environmental summer camp for a minimum of 40 children that focuses on learning about the environment and the arts. <br />&bull; Arrange a field trip for a minimum of 30 children to Hebron's environmentally important sites. <br />&bull; Arrange a field trip for a minimum of 30 children to Jericho's environmentally important sites. <br />&bull; Conduct a minimum of five volunteer activities in Hebron with at least 30 children toward city beautification. <br />&bull; 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>&nbsp;</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
@@ -1,40 +0,0 @@
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
@@ -1,52 +0,0 @@
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\">&nbsp; </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\">&nbsp; </span>A measurably substantial benefit comes from an operational standpoint.<span style=\"mso-spacerun: yes\">&nbsp; </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\">&nbsp; </span><span style=\"mso-spacerun: yes\">&nbsp;</span>This requirement meets the threshold <span style=\"mso-spacerun: yes\">&nbsp;</span>in excess of 10% of the exception found in FAR .<span style=\"mso-spacerun: yes\">&nbsp; </span>Small Businesses will have the opportunity to propose on this project.<span style=\"mso-spacerun: yes\">&nbsp; </span>In addition, Small Business Participation will be used as an evaluation factor in the Source Selection process.<span style=\"mso-spacerun: yes\">&nbsp; </span>Small Business Participation is the extent to which prime contractors will be including small businesses in the project.<span style=\"mso-spacerun: yes\">&nbsp; </span>Therefore, SPA will ensure that small business participation is considered.<span style=\"mso-spacerun: yes\">&nbsp; </span>All provisions allowed per the FAR for Small Business participation will be utilized.<span style=\"mso-spacerun: yes\">&nbsp;&nbsp; </span>The anticipated benefits of the proposed bundled contract justify its use.<span style=\"mso-spacerun: yes\">&nbsp; </span>There are no alternative strategies that would reduce or minimize the scope of the bundling.<span style=\"mso-spacerun: yes\">&nbsp; </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
@@ -1,53 +0,0 @@
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&amp;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 &amp; 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
@@ -1,52 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe FBO::Parser::ModificationHandler do
4
- let(:filename) { File.join(File.dirname(__FILE__), "..", "..", "fixtures", "notices", "mod") }
5
- let(:file) { File.new(filename) }
6
- let(:contents) { file.read }
7
-
8
- subject { FBO::Parser::ModificationHandler }
9
-
10
- it "should recognize modification content" do
11
- subject.is_modification?(contents).should be_true
12
- end
13
-
14
- it "should parse all fields correctly" do
15
- mod = subject.parse(contents)
16
- mod.date.strftime("%Y-%m-%d").should eq Date.parse("2013-03-27").strftime("%Y-%m-%d")
17
- mod.year.should eq 2013
18
- mod.agency.should eq "Department of Agriculture"
19
- mod.office.should eq "Agricultural Research Service"
20
- mod.location.should eq "ARS EBSC APB DM"
21
- mod.zip.should eq "20705"
22
- mod.class_code.should eq "66"
23
- mod.naics_code.should eq "811219"
24
- mod.office_address.should eq "5601 Sunnyside Avenue Beltsville MD 20705"
25
- mod.subject.should eq "Maintenance/Service contract (Plus 2 Option years) for a \"ELAN DRC E Inductively Coupled Spectrometer\""
26
- mod.solicitation_number.should eq "625715"
27
- mod.notice_type.should eq "SNOTE"
28
- mod.response_date.strftime("%Y-%m-%d").should eq "2013-04-01"
29
- mod.archive_date.should be_nil
30
- mod.contact_info.should eq "John C. Wilkinson, Purchasing Agent, Phone 301-504-1731, Email john.wilkinson@ars.usda.gov - Rene D. Edwards, Contract Specialist, Phone 301 504-1744, Email rene.edwards@ars.usda.gov"
31
- mod.description.should eq "&nbsp;\n<p><span style=\"COLOR: #1f497d\">___________________________________________________________________________________________________________________</span></p>\n<p>&nbsp;THIS IS AN AMENDMENT TO ADD THE ADDITIONAL VERBIAGE&nbsp;AS&nbsp;A&nbsp; CRITICAL MINIMUM&nbsp;REQUIREMENT&nbsp;FOR&nbsp;&nbsp;THE FOLLOWING SERVICE CONTRACT REQUIREMENT: &nbsp;\"GUARANTEE\" OF&nbsp;A CERTIFIED ENGINEER'S PHONE RESPONSE TO U.S. DEPARTMENT OF AGRICULTURE (USDA'S)&nbsp;REQUEST&nbsp;&nbsp;WITHIN 24 HOURS OF A &nbsp;USDA CUSTOMER PLACING A SERVICE CALL.&nbsp;PLEASE ALSO NOTE THE CORRECTED TIME FRAME OF THE ANTICIPATED AWARD DATE BEING APRIL 3, 2013 AND THE QUOTES DUE NO LATER TO ME: JOHN WILKINSON&nbsp; AT USDA BY CLOSE OF BUSINESS APRIL 1, 2013 TO <a href=\"mailto:JOHN.WILKINSON@ARS.USDA.GOV\">JOHN.WILKINSON@ARS.USDA.GOV</a> AT PHONE # 301-504-1731.</p>\n<p>U.S. Department of Agriculture, Agriculture Research Service in Beltsville, Maryland intends to award a <span style=\"COLOR: #1f497d\">(yearly maintenance plus 2 option years) </span>contract<span style=\"COLOR: #1f497d\"> as a sole source award &nbsp;for the following instrument: &nbsp;\"ICP-MS Elan DRC E\" instrument, Serial Number: AH00430510 located in Beltsville, Maryland, &nbsp;that is manufactured by Perkin Elmer Health Sciences, Inc.</span> , located in <span style=\"COLOR: #1f497d\">Shelton, Connecticut.&nbsp;&nbsp; &nbsp;The following are the requirements of this service contract:&nbsp;&nbsp; Personnel that performs service on the above instrument, must be able to demonstrate that they are trained,&nbsp; in testing, service and software support, for this instrument, and can replace internal parts of this equipment.&nbsp; The repair coverage for the above instrument will include: Parts, Components, &nbsp;labor, travel, and phone support.&nbsp;&nbsp; Perkin Elmer Health Sciences, Inc. is the sole source provider for factory new or factory re-manufactured parts, local service representation and factory trained/certified engineers to provide service and installation for all instrumentation &nbsp;manufactured and sold by Perkin Elmer, Inc.&nbsp;&nbsp; Perkin Elmer does not certify third party technical service nor does Perkin Elmer have any dealers or distributors selling parts.&nbsp; &nbsp;&nbsp;The base year of this maintenance contract will run from April 3, 2013&nbsp; to March 26, 2014, then option year I would run from March 27, 2014 to March 26, 2015 and Option Year II would run from March 27, 2015 to March 26, 2016</span></p>"
32
- mod.link_url.should eq "https://www.fbo.gov/notices/9189b266ca1710152c807950c8b13cbe"
33
- mod.link_description.should eq "Link To Document"
34
- mod.setaside.should eq "N/A"
35
- mod.pop_country.should eq "US"
36
- mod.pop_zip.should be_nil
37
- mod.pop_address.should eq "USDA, ARS, EMBUL, BARC\n10300 BALTIMORE AVE.\nBeltsville, MD"
38
- end
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
-
45
- context "when not a modification" 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_modification?(contents).should_not be_true
50
- end
51
- end
52
- end
@@ -1,51 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe FBO::Parser::PresolicitationHandler do
4
- let(:filename) { File.join(File.dirname(__FILE__), "..", "..", "fixtures", "notices", "presol") }
5
- let(:file) { File.new(filename) }
6
- let(:contents) { file.read }
7
-
8
- subject { FBO::Parser::PresolicitationHandler }
9
-
10
- it "should recognize presolication content" do
11
- subject.is_presolicitation?(contents).should be_true
12
- end
13
-
14
- it "should parse all fields correctly" do
15
- presol = subject.parse(contents)
16
- presol.date.strftime("%Y-%m-%d").should eq Date.parse("2013-03-31").strftime("%Y-%m-%d")
17
- presol.year.should eq 2013
18
- presol.agency.should eq "Defense Logistics Agency"
19
- presol.office.should eq "DLA Acquisition Locations"
20
- presol.location.should eq "DLA Aviation - BSM"
21
- presol.zip.should eq "23297-5000"
22
- presol.class_code.should eq "15"
23
- presol.naics_code.should eq "336412"
24
- presol.office_address.should eq "8000 Jefferson Davis Highway Richmond VA 23297-5000"
25
- presol.subject.should eq "Seal, AFT; F108-CF100"
26
- presol.solicitation_number.should eq "SPE4A713R0795"
27
- presol.response_date.strftime("%Y-%m-%d").should eq "2013-05-15"
28
- presol.contact_info.should eq "Heidi LaCosse, Acquisition Specialist, Phone 8042793395, Fax 8042792314, Email heidi.lacosse@dla.mil - Amanda M Parker, Acquisition Supervisor, Phone (804)279-2326, Fax (804)279-4722, Email amanda.parker@dla.mil"
29
- presol.description.should eq "&nbsp;\n<p>PR# 49250123; NSN 2840-01-183-1908; Firm Fixed Price; Definite Quantity Contract; Unrestricted Acquisition; Other Than Full and Open Competition; The only approved manufacturing sources are Jet Avion, Cage 14236 and CFM International, Cage 58828;<span style=\"mso-spacerun: yes\">&nbsp; </span>Seal, Aft; Critical Application Item; Configuration Control Applies; Government FAT; Quantity of 3929 units; Inspection/Acceptance at Origin; FOB at Origin; Requested delivery is 450 days after receipt of order; Electronic Offers are not acceptable; Progress Payments are not offered as the conditions at FAR 32.5 have not been met; Any manufacturer, other than the approved source, wishing to submit a proposal on this item must submit a complete source approval package and a complete solicitation package; A copy of the solicitation will be available via DIBBS at <a href=\"https://www.dibbs.bsm.dla.mil/RFP\"><span style=\"mso-ansi-font-size: 12.0pt\">https://www.dibbs.bsm.dla.mil/RFP</span></a> on the issue date cited in this synopsis.<span style=\"mso-spacerun: yes\">&nbsp; </span>RFP's are in portable document format (PDF).<span style=\"mso-spacerun: yes\">&nbsp; </span>To download and view these documents you will need the latest version of Adobe Acrobat.<span style=\"mso-spacerun: yes\">&nbsp; </span>This software is available free at http://www.adobe.com.<span style=\"mso-spacerun: yes\">&nbsp; </span>A paper copy of this solicitation will be available to requesters.<span style=\"mso-spacerun: yes\">&nbsp; </span>The solicitation issue date is April 15, 2013.</p>"
30
- presol.link_url.should eq "https://www.fbo.gov/spg/DLA/J3/DSCR-BSM/SPE4A713R0795/listing.html"
31
- presol.link_description.should eq "Link To Document"
32
- presol.setaside.should eq "N/A"
33
- presol.pop_country.should eq "US"
34
- presol.pop_zip.should eq "23297"
35
- presol.pop_address.should eq "8000 Jefferson Davis Highway\nRichmonda, VA"
36
-
37
- end
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
-
44
- context "when not a presolication" do
45
- let(:filename) { File.join(File.dirname(__FILE__), "..", "..", "fixtures", "notices", "combine") }
46
-
47
- it "should not recognize other notice content" do
48
- subject.is_presolicitation?(contents).should_not be_true
49
- end
50
- end
51
- end
@@ -1,53 +0,0 @@
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