cookie_cutter 0.3.4 → 0.4.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,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 3eeaa96820553e14150a41c1846012869792ab90aad9862bb58d138fbeb558ad
4
+ data.tar.gz: b5184f8c9d5264389266d7963cfe92254b62491027d149361e6e00f17b7469f6
5
+ SHA512:
6
+ metadata.gz: 5695bf9d898efbf72174d124b190472934c0e15039adc5d233d79e76140ce96f195df5dfe27929876b56696b71d14365c4f9eb49c80d4032cb38b01e8d537d67
7
+ data.tar.gz: 1fe0e333feb02c9e27e6d4f0e0aa16d0feefe691e98504e1d5f2087287d61abf573a9d69556ec7d6d29bb4e9a015fb53ff6e108710a3d55a7cabf4b1abec1510
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in cookie_cutter.gemspec
4
4
  gemspec
@@ -15,8 +15,8 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = CookieCutter::VERSION
17
17
 
18
- gem.add_development_dependency 'activesupport' #for date helpers
19
- gem.add_development_dependency 'rake'
20
- gem.add_development_dependency 'rspec'
21
- gem.add_development_dependency 'rspec-mocks'
18
+ gem.add_development_dependency 'activesupport', '~> 3.2.22' #for date helpers
19
+ gem.add_development_dependency 'rake', '~> 10.5'
20
+ gem.add_development_dependency 'rspec', '~> 2.14.1'
21
+ gem.add_development_dependency 'rspec-mocks', '~> 2.14.6'
22
22
  end
@@ -1,4 +1,5 @@
1
1
  require 'cookie_cutter/cookie_attribute'
2
+ require 'cookie_cutter/cookie_registry'
2
3
 
3
4
  module CookieCutter
4
5
  module Cookie
@@ -12,6 +13,7 @@ module CookieCutter
12
13
 
13
14
  def store_as(name)
14
15
  @cookie_name = name
16
+ ensure_registered
15
17
  end
16
18
 
17
19
  attr_reader :cookie_domain
@@ -50,6 +52,14 @@ module CookieCutter
50
52
  @secure ? true : false
51
53
  end
52
54
 
55
+ def multi_valued
56
+ @multi_valued = true
57
+ end
58
+
59
+ def multi_valued?
60
+ @multi_valued || attributes.any?
61
+ end
62
+
53
63
  def http_only
54
64
  @http_only = true
55
65
  add_handler do |cookie|
@@ -67,6 +77,7 @@ module CookieCutter
67
77
 
68
78
  def has_attribute(attribute_name, options={})
69
79
  raise "CookieCutter value names must by symbols. #{attribute_name} is not a symbol" unless attribute_name.is_a?(Symbol)
80
+ ensure_registered
70
81
  #make value and value= private when the cookie has one or more named values
71
82
  private :value, :value=, :set_value
72
83
 
@@ -89,6 +100,7 @@ module CookieCutter
89
100
 
90
101
  def add_handler(&block)
91
102
  handlers << block
103
+ ensure_registered
92
104
  end
93
105
 
94
106
  def handlers
@@ -98,6 +110,12 @@ module CookieCutter
98
110
  def attributes
99
111
  @attributes ||= []
100
112
  end
113
+
114
+ private
115
+
116
+ def ensure_registered
117
+ CookieRegistry.instance.register self
118
+ end
101
119
  end
102
120
 
103
121
  def self.included(klass)
@@ -0,0 +1,23 @@
1
+ require 'singleton'
2
+
3
+ module CookieCutter
4
+ class CookieRegistry
5
+ include Singleton
6
+
7
+ def initialize
8
+ @cookies = Set.new
9
+ end
10
+
11
+ def register(cookie_class)
12
+ @cookies.add cookie_class
13
+ end
14
+
15
+ def all
16
+ @cookies
17
+ end
18
+
19
+ def clear
20
+ @cookies.clear
21
+ end
22
+ end
23
+ end
@@ -4,8 +4,8 @@ module CookieCutter
4
4
  module TestSupport
5
5
  module Stubs
6
6
  module Finders
7
- def find(*args)
8
- new(TestSupport::FakeCookieJar.find)
7
+ def find(request, options={})
8
+ new(TestSupport::FakeCookieJar.find, options)
9
9
  end
10
10
  end
11
11
 
@@ -1,3 +1,3 @@
1
1
  module CookieCutter
2
- VERSION = "0.3.4"
2
+ VERSION = "0.4.0"
3
3
  end
data/spec/base_spec.rb CHANGED
@@ -17,6 +17,11 @@ class MultiValuedCookie < CookieCutter::Base
17
17
  has_attribute :value2, store_as: 'val2'
18
18
  end
19
19
 
20
+ class MultiValuedCookieWithoutAttribute < CookieCutter::Base
21
+ store_as :mvcwa
22
+ multi_valued
23
+ end
24
+
20
25
  describe CookieCutter::Base do
21
26
  let(:cookie_jar) { CookieCutter::TestSupport::FakeCookieJar.new }
22
27
  it 'should not update the cookie_jar when no value is set' do
@@ -161,6 +166,9 @@ describe CookieCutter::Base do
161
166
  single_value_cookie = SingleValuedCookie.new(CookieCutter::TestSupport::FakeCookieJar.new({ svc: "preset value" }))
162
167
  single_value_cookie.value.should == "preset value"
163
168
  end
169
+ it 'is not multivalued' do
170
+ SingleValuedCookie.multi_valued?.should be_false
171
+ end
164
172
  end
165
173
  describe 'multi-valued cookie' do
166
174
  let(:multi_valued_cookie) { MultiValuedCookie.new(cookie_jar) }
@@ -183,6 +191,9 @@ describe CookieCutter::Base do
183
191
  multi_valued_cookie.value2 = "myval2"
184
192
  cookie_jar[:mvc][:val2].should == "myval2"
185
193
  end
194
+ it "is multivalued" do
195
+ MultiValuedCookie.multi_valued?.should be_true
196
+ end
186
197
  describe 'attribute metadata' do
187
198
  it "should provide attributes array" do
188
199
  MultiValuedCookie.attributes.length.should == 2
@@ -197,4 +208,9 @@ describe CookieCutter::Base do
197
208
  end
198
209
  end
199
210
  end
211
+ describe 'multi-valued cookie without attribute' do
212
+ it 'is multivalued' do
213
+ MultiValuedCookieWithoutAttribute.multi_valued?.should be_true
214
+ end
215
+ end
200
216
  end
@@ -0,0 +1,28 @@
1
+ require 'rspec'
2
+ require 'cookie_cutter/base'
3
+ require 'cookie_cutter/cookie_registry'
4
+
5
+ describe CookieCutter::CookieRegistry do
6
+ before do
7
+ CookieCutter::CookieRegistry.instance.clear
8
+ class MyCookie < CookieCutter::Base
9
+ store_as 'my'
10
+ end
11
+ class MyOtherCookie < CookieCutter::Base
12
+ store_as 'other'
13
+ end
14
+ class DynamicCookie < CookieCutter::Base
15
+ # no store_as
16
+ has_attribute :foo
17
+ end
18
+ end
19
+ let :registered_cookies do
20
+ CookieCutter::CookieRegistry.instance.all
21
+ end
22
+ it 'all cookies are registered' do
23
+ registered_cookies.length.should == 3
24
+ registered_cookies.should include(MyCookie)
25
+ registered_cookies.should include(MyOtherCookie)
26
+ registered_cookies.should include(DynamicCookie)
27
+ end
28
+ end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cookie_cutter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
5
- prerelease:
4
+ version: 0.4.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Andy Alm
@@ -10,72 +9,64 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2014-01-31 00:00:00.000000000 Z
12
+ date: 2022-05-17 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: activesupport
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ! '>='
18
+ - - "~>"
21
19
  - !ruby/object:Gem::Version
22
- version: '0'
20
+ version: 3.2.22
23
21
  type: :development
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
- - - ! '>='
25
+ - - "~>"
29
26
  - !ruby/object:Gem::Version
30
- version: '0'
27
+ version: 3.2.22
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: rake
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
- - - ! '>='
32
+ - - "~>"
37
33
  - !ruby/object:Gem::Version
38
- version: '0'
34
+ version: '10.5'
39
35
  type: :development
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
- - - ! '>='
39
+ - - "~>"
45
40
  - !ruby/object:Gem::Version
46
- version: '0'
41
+ version: '10.5'
47
42
  - !ruby/object:Gem::Dependency
48
43
  name: rspec
49
44
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
45
  requirements:
52
- - - ! '>='
46
+ - - "~>"
53
47
  - !ruby/object:Gem::Version
54
- version: '0'
48
+ version: 2.14.1
55
49
  type: :development
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
52
  requirements:
60
- - - ! '>='
53
+ - - "~>"
61
54
  - !ruby/object:Gem::Version
62
- version: '0'
55
+ version: 2.14.1
63
56
  - !ruby/object:Gem::Dependency
64
57
  name: rspec-mocks
65
58
  requirement: !ruby/object:Gem::Requirement
66
- none: false
67
59
  requirements:
68
- - - ! '>='
60
+ - - "~>"
69
61
  - !ruby/object:Gem::Version
70
- version: '0'
62
+ version: 2.14.6
71
63
  type: :development
72
64
  prerelease: false
73
65
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
66
  requirements:
76
- - - ! '>='
67
+ - - "~>"
77
68
  - !ruby/object:Gem::Version
78
- version: '0'
69
+ version: 2.14.6
79
70
  description: Provides a way to define the structure, lifetime, and other properties
80
71
  of a cookie all in one place.
81
72
  email:
@@ -84,8 +75,8 @@ executables: []
84
75
  extensions: []
85
76
  extra_rdoc_files: []
86
77
  files:
87
- - .gitignore
88
- - .travis.yml
78
+ - ".gitignore"
79
+ - ".travis.yml"
89
80
  - Gemfile
90
81
  - LICENSE
91
82
  - README.md
@@ -95,41 +86,36 @@ files:
95
86
  - lib/cookie_cutter/base.rb
96
87
  - lib/cookie_cutter/cookie.rb
97
88
  - lib/cookie_cutter/cookie_attribute.rb
89
+ - lib/cookie_cutter/cookie_registry.rb
98
90
  - lib/cookie_cutter/test_support.rb
99
91
  - lib/cookie_cutter/test_support/fake_cookie_jar.rb
100
92
  - lib/cookie_cutter/test_support/stubs.rb
101
93
  - lib/cookie_cutter/version.rb
102
94
  - spec/base_spec.rb
95
+ - spec/cookie_registry_spec.rb
103
96
  homepage: http://github.com/gettyimages/cookie_cutter
104
97
  licenses: []
98
+ metadata: {}
105
99
  post_install_message:
106
100
  rdoc_options: []
107
101
  require_paths:
108
102
  - lib
109
103
  required_ruby_version: !ruby/object:Gem::Requirement
110
- none: false
111
104
  requirements:
112
- - - ! '>='
105
+ - - ">="
113
106
  - !ruby/object:Gem::Version
114
107
  version: '0'
115
- segments:
116
- - 0
117
- hash: 2405927852129059589
118
108
  required_rubygems_version: !ruby/object:Gem::Requirement
119
- none: false
120
109
  requirements:
121
- - - ! '>='
110
+ - - ">="
122
111
  - !ruby/object:Gem::Version
123
112
  version: '0'
124
- segments:
125
- - 0
126
- hash: 2405927852129059589
127
113
  requirements: []
128
- rubyforge_project:
129
- rubygems_version: 1.8.24
114
+ rubygems_version: 3.3.10
130
115
  signing_key:
131
- specification_version: 3
116
+ specification_version: 4
132
117
  summary: Provides a way to define the structure, lifetime, and other properties of
133
118
  a cookie all in one place.
134
119
  test_files:
135
120
  - spec/base_spec.rb
121
+ - spec/cookie_registry_spec.rb