fake-aws-sdk 0.0.1 → 0.1.0

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 ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NjEwYzgyMWM4M2ZkZTI0NDQ2NWUyMDg5Mzg4M2YxNjRiYWY2MjI1NA==
5
+ data.tar.gz: !binary |-
6
+ YzE1ZTEzMTEzOTkwMDNjNzQ5NWRmMWU1MjMwYjA2NjFhOGY4YWViZg==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ OThmODliYjJlNjQyZTk2MzY4OGM0ZmFiMWEzY2FkNDIyZTgxYzc2MGZmMGY4
10
+ MTA1MTNiNGVmMGM0N2Y2MjkwMTAxNzcyZmUxMTUyODY0MDdlYTE3YTk4NzJh
11
+ MThmM2NiNTJkNmY3NTY3NTBjOWQ2N2ExYjEzMzFlNjBjNjRjNGM=
12
+ data.tar.gz: !binary |-
13
+ NDBkMGE4ZGRiZWI0MTZkYjMxNTJiZjc1MjJlYWRlNjdiYWUzYTEzYzVjM2Rl
14
+ ZGVlNGI0OGQ3Y2MyOTQ5ZDM2NGJjNmU1Mjc4OWViNDEyZjcwZWU5MmFlNzJm
15
+ Yzk5MWI2ZWJiZjdlZTZhM2QxNDE3OWYxYTU1MjExNmZiZDM4M2E=
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --colour
data/lib/fake_aws/s3.rb CHANGED
@@ -1,2 +1,18 @@
1
- require "fake_aws/s3/bucket"
1
+ require "fake_aws/s3/bucket_collection"
2
2
  require "fake_aws/s3/s3_object"
3
+
4
+ module FakeAWS
5
+
6
+ class S3
7
+
8
+ def initialize(options = {})
9
+ @options = options
10
+ @buckets = BucketCollection.new
11
+ end
12
+
13
+ attr_reader :buckets
14
+ attr_reader :options
15
+
16
+ end
17
+
18
+ end
@@ -1,18 +1,22 @@
1
1
  require "fake_aws/s3/object_collection"
2
2
 
3
3
  module FakeAWS
4
- module S3
4
+ class S3
5
5
 
6
6
  class Bucket
7
7
 
8
8
  def initialize(name)
9
9
  @name = name
10
- @objects = ObjectCollection.new(self)
10
+ @objects = ObjectCollection.new
11
11
  end
12
12
 
13
13
  attr_reader :name
14
14
  attr_reader :objects
15
15
 
16
+ def exists?
17
+ true
18
+ end
19
+
16
20
  end
17
21
 
18
22
  end
@@ -0,0 +1,33 @@
1
+ require "fake_aws/s3/bucket"
2
+ require "forwardable"
3
+
4
+ module FakeAWS
5
+ class S3
6
+
7
+ class BucketCollection
8
+
9
+ def initialize
10
+ @buckets = Hash.new do |h, name|
11
+ h[name] = Bucket.new(name)
12
+ end
13
+ end
14
+
15
+ def [](name)
16
+ name = name.to_s
17
+ @buckets[name]
18
+ end
19
+
20
+ extend Forwardable
21
+
22
+ def_delegators :@buckets, :empty?
23
+
24
+ include Enumerable
25
+
26
+ def each(&block)
27
+ @buckets.each_value(&block)
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+ end
@@ -2,14 +2,13 @@ require "fake_aws/s3/s3_object"
2
2
  require "forwardable"
3
3
 
4
4
  module FakeAWS
5
- module S3
5
+ class S3
6
6
 
7
7
  class ObjectCollection
8
8
 
9
- def initialize(bucket)
10
- @bucket = bucket
9
+ def initialize
11
10
  @objects = Hash.new do |h, key|
12
- h[key] = S3Object.new(self, key)
11
+ h[key] = S3Object.new(key)
13
12
  end
14
13
  end
15
14
 
@@ -20,7 +19,17 @@ module FakeAWS
20
19
 
21
20
  extend Forwardable
22
21
 
23
- def_delegators :@objects, :count
22
+ include Enumerable
23
+
24
+ def each
25
+ @objects.each_value do |object|
26
+ yield object if object.exists?
27
+ end
28
+ end
29
+
30
+ def empty?
31
+ !@objects.values.any?(&:exists?)
32
+ end
24
33
 
25
34
  end
26
35
 
@@ -1,14 +1,12 @@
1
1
  module FakeAWS
2
- module S3
2
+ class S3
3
3
 
4
4
  class S3Object
5
5
 
6
- def initialize(bucket, key)
7
- @bucket = bucket
6
+ def initialize(key)
8
7
  @key = key
9
8
  end
10
9
 
11
- attr_reader :bucket
12
10
  attr_reader :key
13
11
 
14
12
  def write(data)
@@ -1,3 +1,3 @@
1
1
  module FakeAWS
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -0,0 +1,39 @@
1
+ require "fake_aws/s3/bucket_collection"
2
+
3
+ describe FakeAWS::S3::BucketCollection do
4
+
5
+ let(:buckets) { FakeAWS::S3::BucketCollection.new }
6
+
7
+ it "starts empty" do
8
+ buckets.should be_empty
9
+ end
10
+
11
+ describe "#[]" do
12
+
13
+ it "returns a Bucket" do
14
+ buckets["foo"].should be_kind_of(FakeAWS::S3::Bucket)
15
+ end
16
+
17
+ it "always returns the same Bucket" do
18
+ buckets["foo"].should equal(buckets["foo"])
19
+ end
20
+
21
+ it "converts Symbol names to String" do
22
+ buckets["foo"].should equal(buckets[:foo])
23
+ end
24
+
25
+ end
26
+
27
+ it "is Enumerable" do
28
+ buckets.should be_kind_of(Enumerable)
29
+ end
30
+
31
+ describe "#each" do
32
+ it "yields all buckets" do
33
+ buckets["a"]
34
+ buckets["b"]
35
+ buckets.map(&:name).should eq(%w(a b))
36
+ end
37
+ end
38
+
39
+ end
@@ -1,5 +1,3 @@
1
- require "spec_helper"
2
-
3
1
  require "fake_aws/s3/bucket"
4
2
 
5
3
  describe FakeAWS::S3::Bucket do
@@ -10,28 +8,14 @@ describe FakeAWS::S3::Bucket do
10
8
  bucket.name.should eq("foo")
11
9
  end
12
10
 
13
- let(:objects) { bucket.objects }
14
-
15
- describe "#objects" do
16
-
17
- it "starts empty" do
18
- objects.count.should be_zero
19
- end
20
-
11
+ it "implicitly exists" do
12
+ bucket.should exist
21
13
  end
22
14
 
23
- describe "#objects['key']" do
24
-
25
- it "returns an S3Object" do
26
- objects["foo"].should be_kind_of(FakeAWS::S3::S3Object)
27
- end
28
-
29
- it "always returns the same S3Object" do
30
- objects["foo"].should equal(objects["foo"])
31
- end
15
+ describe "#objects" do
32
16
 
33
- it "converts Symbol keys to String" do
34
- objects["foo"].should equal(objects[:foo])
17
+ it "returns an ObjectCollection" do
18
+ bucket.objects.should be_kind_of(FakeAWS::S3::ObjectCollection)
35
19
  end
36
20
 
37
21
  end
@@ -0,0 +1,77 @@
1
+ require "fake_aws/s3/object_collection"
2
+
3
+ describe FakeAWS::S3::ObjectCollection do
4
+
5
+ let(:objects) { FakeAWS::S3::ObjectCollection.new }
6
+
7
+ it "starts empty" do
8
+ objects.should be_empty
9
+ end
10
+
11
+ describe "#[]" do
12
+
13
+ it "returns an S3Object" do
14
+ objects["foo"].should be_kind_of(FakeAWS::S3::S3Object)
15
+ end
16
+
17
+ it "always returns the same S3Object" do
18
+ objects["foo"].should equal(objects["foo"])
19
+ end
20
+
21
+ it "passes along the object key" do
22
+ objects["foo"].key.should eq("foo")
23
+ end
24
+
25
+ it "converts Symbol keys to String" do
26
+ objects["foo"].should equal(objects[:foo])
27
+ end
28
+
29
+ end
30
+
31
+ it "is Enumerable" do
32
+ objects.should be_kind_of(Enumerable)
33
+ end
34
+
35
+ context "after writing some objects" do
36
+
37
+ before do
38
+ objects["a"].write("CONTENT")
39
+ objects["b"].write("CONTENT")
40
+ end
41
+
42
+ it "is no longer empty" do
43
+ objects.should_not be_empty
44
+ end
45
+
46
+ describe "#each" do
47
+
48
+ it "yields the objects with content" do
49
+ objects.map(&:key).should eq(%w(a b))
50
+ end
51
+
52
+ end
53
+
54
+ end
55
+
56
+ context "after referencing some objects (without writing content)" do
57
+
58
+ before do
59
+ objects["a"]
60
+ objects["b"]
61
+ end
62
+
63
+ it "is still considered empty" do
64
+ objects.should be_empty
65
+ end
66
+
67
+ describe "#each" do
68
+
69
+ it "yields nothing" do
70
+ objects.map(&:key).should be_empty
71
+ end
72
+
73
+ end
74
+
75
+ end
76
+
77
+ end
@@ -1,13 +1,9 @@
1
- require "spec_helper"
2
-
3
1
  require "fake_aws/s3/bucket"
4
2
  require "fake_aws/s3/s3_object"
5
3
 
6
4
  describe FakeAWS::S3::S3Object do
7
5
 
8
- let(:bucket) { FakeAWS::S3::Bucket.new("test-bucket") }
9
-
10
- let(:object) { FakeAWS::S3::S3Object.new(bucket, "test-object") }
6
+ let(:object) { FakeAWS::S3::S3Object.new("test-object") }
11
7
 
12
8
  subject { object }
13
9
 
@@ -0,0 +1,15 @@
1
+ require "fake_aws/s3"
2
+
3
+ describe FakeAWS::S3 do
4
+
5
+ let(:fake_s3) { FakeAWS::S3.new }
6
+
7
+ describe "#buckets" do
8
+
9
+ it "returns a BucketCollection" do
10
+ fake_s3.buckets.should be_kind_of(FakeAWS::S3::BucketCollection)
11
+ end
12
+
13
+ end
14
+
15
+ end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fake-aws-sdk
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.0.1
4
+ version: 0.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Mike Williams
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-06 00:00:00.000000000 Z
11
+ date: 2013-02-27 00:00:00.000000000 Z
13
12
  dependencies: []
14
13
  description: Fake implementation of AWS SDK
15
14
  email:
@@ -19,6 +18,7 @@ extensions: []
19
18
  extra_rdoc_files: []
20
19
  files:
21
20
  - .gitignore
21
+ - .rspec
22
22
  - Gemfile
23
23
  - LICENSE.txt
24
24
  - README.md
@@ -28,43 +28,41 @@ files:
28
28
  - lib/fake_aws.rb
29
29
  - lib/fake_aws/s3.rb
30
30
  - lib/fake_aws/s3/bucket.rb
31
+ - lib/fake_aws/s3/bucket_collection.rb
31
32
  - lib/fake_aws/s3/object_collection.rb
32
33
  - lib/fake_aws/s3/s3_object.rb
33
34
  - lib/fake_aws/version.rb
35
+ - spec/fake-aws/s3/bucket_collection_spec.rb
34
36
  - spec/fake-aws/s3/bucket_spec.rb
37
+ - spec/fake-aws/s3/object_collection_spec.rb
35
38
  - spec/fake-aws/s3/s3_object_spec.rb
36
- - spec/spec_helper.rb
39
+ - spec/fake-aws/s3_spec.rb
37
40
  homepage: http://github.com/cogent/fake-aws-sdk
38
41
  licenses: []
42
+ metadata: {}
39
43
  post_install_message:
40
44
  rdoc_options: []
41
45
  require_paths:
42
46
  - lib
43
47
  required_ruby_version: !ruby/object:Gem::Requirement
44
- none: false
45
48
  requirements:
46
49
  - - ! '>='
47
50
  - !ruby/object:Gem::Version
48
- segments:
49
- - 0
50
- hash: 4095608689954055844
51
51
  version: '0'
52
52
  required_rubygems_version: !ruby/object:Gem::Requirement
53
- none: false
54
53
  requirements:
55
54
  - - ! '>='
56
55
  - !ruby/object:Gem::Version
57
- segments:
58
- - 0
59
- hash: 4095608689954055844
60
56
  version: '0'
61
57
  requirements: []
62
58
  rubyforge_project:
63
- rubygems_version: 1.8.24
59
+ rubygems_version: 2.0.0
64
60
  signing_key:
65
- specification_version: 3
61
+ specification_version: 4
66
62
  summary: Fake implementation of AWS SDK
67
63
  test_files:
64
+ - spec/fake-aws/s3/bucket_collection_spec.rb
68
65
  - spec/fake-aws/s3/bucket_spec.rb
66
+ - spec/fake-aws/s3/object_collection_spec.rb
69
67
  - spec/fake-aws/s3/s3_object_spec.rb
70
- - spec/spec_helper.rb
68
+ - spec/fake-aws/s3_spec.rb
data/spec/spec_helper.rb DELETED
@@ -1 +0,0 @@
1
- require "aws-sdk"