streamy_csv 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,5 +1,6 @@
1
1
  *.gem
2
2
  *.rbc
3
+ .DS_Store
3
4
  .bundle
4
5
  .config
5
6
  .yardoc
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/README.md CHANGED
@@ -26,7 +26,7 @@ In your model:
26
26
  end
27
27
 
28
28
  def to_csv_row
29
- CSV::Row(name: name, title: title)
29
+ CSV::Row([:name, :title], ['John', 'Mr'])
30
30
  end
31
31
 
32
32
  end
data/Rakefile CHANGED
@@ -1 +1,7 @@
1
1
  require "bundler/gem_tasks"
2
+
3
+ require 'rspec/core/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ task :default => :spec
@@ -15,6 +15,7 @@ module StreamyCsv
15
15
  set_file_headers(file_name)
16
16
 
17
17
  response.status = 200
18
+
18
19
  self.response_body = csv_lines(header_row, &block)
19
20
  end
20
21
 
@@ -1,3 +1,3 @@
1
1
  module StreamyCsv
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -0,0 +1,64 @@
1
+ require 'ostruct'
2
+
3
+ module ActionController
4
+ class Base
5
+ attr_accessor :response_body
6
+
7
+ def headers
8
+ @headers ||= {}
9
+ end
10
+
11
+ def response
12
+ @response ||= OpenStruct.new
13
+ end
14
+
15
+ end
16
+ end
17
+
18
+ $: << File.join(File.dirname(__FILE__), "/../lib")
19
+ require 'streamy_csv.rb'
20
+ require 'csv'
21
+
22
+ describe StreamyCsv do
23
+
24
+ it 'extends the action controller with the module' do
25
+ ActionController::Base.ancestors.should include(StreamyCsv)
26
+ end
27
+
28
+ context '#stream_csv' do
29
+ before(:each) do
30
+ @controller = ActionController::Base.new
31
+ @header = CSV::Row.new([:name, :title], ['Name', 'Title'], true)
32
+ end
33
+
34
+ it 'sets the streaming headers' do
35
+ @controller.stream_csv('abc.csv', @header)
36
+ @controller.headers.should include({'X-Accel-Buffering' => 'no',
37
+ "Cache-Control" => "no-cache"
38
+ })
39
+ end
40
+
41
+ it 'sets the file headers' do
42
+ @controller.stream_csv('abc.csv', @header)
43
+ @controller.headers.should include({"Content-Type" => "text/csv",
44
+ "Content-disposition" => "attachment; filename=\"abc.csv\""
45
+ })
46
+ end
47
+
48
+ it 'streams the csv file' do
49
+ row_1 = CSV::Row.new([:name, :title], ['AB', 'Mr'])
50
+ row_2 = CSV::Row.new([:name, :title], ['CD', 'Pres'])
51
+
52
+ rows = [@header, row_1]
53
+
54
+ @controller.stream_csv('abc.csv', @header) do |rows|
55
+ rows << row_1
56
+ rows << row_2
57
+ end
58
+
59
+ @controller.response.status.should == 200
60
+ @controller.response_body.is_a?(Enumerator).should == true
61
+ end
62
+ end
63
+
64
+ end
@@ -10,10 +10,12 @@ Gem::Specification.new do |gem|
10
10
  gem.email = ["sohan39@gmail.com"]
11
11
  gem.description = %q{Streamy CSV lets you stream live generated CSV files}
12
12
  gem.summary = %q{Provides a simple API for your controllers to stream CSV files one row at a time}
13
- gem.homepage = ""
13
+ gem.homepage = "https://github.com/smsohan/streamy_csv"
14
14
 
15
15
  gem.files = `git ls-files`.split($/)
16
16
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
+
20
+ gem.add_development_dependency('rspec')
19
21
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: streamy_csv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,23 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
  date: 2013-05-10 00:00:00.000000000 Z
13
- dependencies: []
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
14
30
  description: Streamy CSV lets you stream live generated CSV files
15
31
  email:
16
32
  - sohan39@gmail.com
@@ -19,14 +35,16 @@ extensions: []
19
35
  extra_rdoc_files: []
20
36
  files:
21
37
  - .gitignore
38
+ - .rspec
22
39
  - Gemfile
23
40
  - LICENSE.txt
24
41
  - README.md
25
42
  - Rakefile
26
43
  - lib/streamy_csv.rb
27
44
  - lib/streamy_csv/version.rb
45
+ - spec/streamy_csv_spec.rb
28
46
  - streamy_csv.gemspec
29
- homepage: ''
47
+ homepage: https://github.com/smsohan/streamy_csv
30
48
  licenses: []
31
49
  post_install_message:
32
50
  rdoc_options: []
@@ -51,4 +69,5 @@ signing_key:
51
69
  specification_version: 3
52
70
  summary: Provides a simple API for your controllers to stream CSV files one row at
53
71
  a time
54
- test_files: []
72
+ test_files:
73
+ - spec/streamy_csv_spec.rb