spec/lib/uploader_spec.rb in jekyll-s3-0.0.4 vs spec/lib/uploader_spec.rb in jekyll-s3-0.0.5
- old
+ new
@@ -1,33 +1,62 @@
-require File.dirname(__FILE__) + "/../../lib/jekyll-s3.rb"
+require 'spec_helper'
-RSpec.configure do |config|
- config.mock_framework = :mocha
-end
-
describe Jekyll::S3::Uploader do
describe "#upload_to_s3" do
-
+
before :each do
AWS::S3::Base.expects(:establish_connection!).at_least(1).returns true
AWS::S3::Service.expects(:buckets).at_least(1).returns []
AWS::S3::Bucket.expects(:create).at_least(1).returns true
bucket = mock()
bucket.expects(:objects).returns []
AWS::S3::Bucket.expects(:find).at_least(1).returns bucket
-
+
@uploader = Jekyll::S3::Uploader.new
@uploader.expects(:local_files).at_least(1).returns ['index.html']
@uploader.expects(:open).at_least(1).returns true
end
-
+
it "should work right when there are no exceptions" do
AWS::S3::S3Object.expects(:store).at_least(1).returns(true)
@uploader.send(:upload_to_s3!).should
end
-
+
it "should properly handle exceptions on uploading to S3" do
AWS::S3::S3Object.expects(:store).raises(AWS::S3::RequestTimeout.new('timeout', 'timeout')).then.at_least(1).returns(true)
@uploader.send(:upload_to_s3!).should
end
end
-end
\ No newline at end of file
+
+ describe "#call_cloudfront_invalidation" do
+ it "should invalidate Cloudfront items if the configuration 'cloudfront_dist_id' exists" do
+ configure_uploader({
+ "s3_id" => "xx",
+ "s3_secret" => "zz",
+ "s3_bucket" => "bucket",
+ "cloudfront_distribution_id" => "dist id"
+ })
+ Jekyll::Cloudfront::Invalidator.expects(:invalidate).with("xx", "zz", "bucket", "dist id")
+ Jekyll::S3::Uploader.run!
+ end
+
+ it "should skip calling Cloudfront if the configuration 'cloudfront_dist_id' is missing" do
+ configure_uploader({
+ "s3_id" => "xx",
+ "s3_secret" => "zz",
+ "s3_bucket" => "bucket"
+ })
+ Jekyll::Cloudfront::Invalidator.expects(:invalidate).never
+ Jekyll::S3::Uploader.run!
+ end
+
+ def configure_uploader(config)
+ def disable_methods_that_interact_with_world
+ Jekyll::S3::Uploader.any_instance.expects(:upload_to_s3!).returns nil
+ Jekyll::S3::Uploader.any_instance.expects(:check_jekyll_project!).returns nil
+ Jekyll::S3::Uploader.any_instance.expects(:check_s3_configuration!).returns nil
+ end
+ YAML.expects(:load_file).with('_jekyll_s3.yml').returns(config)
+ disable_methods_that_interact_with_world
+ end
+ end
+end