shoes-mocks 0.0.1 → 0.0.2
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.
- data/lib/shoes/mocks.rb +2 -6
- data/lib/shoes/mocks/bootstrap.rb +19 -0
- data/lib/shoes/mocks/mocked_classes.rb +34 -0
- data/lib/shoes/mocks/shoes.rb +53 -0
- data/lib/shoes/mocks/version.rb +3 -2
- data/shoes-mocks.gemspec +5 -2
- metadata +24 -6
data/lib/shoes/mocks.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
# All of the classes are ones that Shoes needs to be just bootstrapped
|
2
|
+
class Shoes
|
3
|
+
class Types; end
|
4
|
+
class Background; end
|
5
|
+
class Border; end
|
6
|
+
class Canvas; end
|
7
|
+
class Check; end
|
8
|
+
class Radio; end
|
9
|
+
class EditLine; end
|
10
|
+
class EditBox; end
|
11
|
+
class Effect; end
|
12
|
+
class Image; end
|
13
|
+
class ListBox; end
|
14
|
+
class Progress; end
|
15
|
+
class Shape; end
|
16
|
+
class TextBlock; end
|
17
|
+
class Text; end
|
18
|
+
end
|
19
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# The classes mocked out from the C-Code
|
2
|
+
class Shoes
|
3
|
+
|
4
|
+
class TextElement
|
5
|
+
attr_accessor :text
|
6
|
+
def initialize(text)
|
7
|
+
self.text = text
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
# quite an inheritance chain... someone told me inheritance is bad :<
|
12
|
+
# But it felt like so much duplication
|
13
|
+
class TextBlockElement < TextElement
|
14
|
+
attr_accessor :block, :parent
|
15
|
+
def initialize(parent, text, &blk)
|
16
|
+
super(text)
|
17
|
+
self.parent = parent
|
18
|
+
self.block = blk
|
19
|
+
end
|
20
|
+
|
21
|
+
def click
|
22
|
+
parent.instance_eval(&block)
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
class Alert < TextElement; end
|
28
|
+
class Paragraph < TextElement; end
|
29
|
+
|
30
|
+
class Link < TextBlockElement; end
|
31
|
+
class Button < TextBlockElement; end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'rspec/mocks'
|
2
|
+
require_relative 'bootstrap'
|
3
|
+
require_relative 'mocked_classes'
|
4
|
+
|
5
|
+
# mocking the whole Shoes
|
6
|
+
class Shoes
|
7
|
+
|
8
|
+
RSpec::Mocks.setup(self)
|
9
|
+
|
10
|
+
attr_accessor :elements
|
11
|
+
|
12
|
+
# for alerts and other things (for now)
|
13
|
+
attr_accessor :events
|
14
|
+
|
15
|
+
def initialize(&block)
|
16
|
+
self.elements = []
|
17
|
+
self.events = []
|
18
|
+
instance_eval(&block) if block_given?
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.app(&block)
|
22
|
+
@application = new(&block)
|
23
|
+
end
|
24
|
+
|
25
|
+
# get the application that was most recently initilized with shoes
|
26
|
+
# unfortunately this won't work with multiple Shoes.apps in a program,
|
27
|
+
# as we only get the most recent ones (see above)
|
28
|
+
def self.application
|
29
|
+
@application
|
30
|
+
end
|
31
|
+
|
32
|
+
def append(&blk)
|
33
|
+
instance_eval &blk if block_given?
|
34
|
+
end
|
35
|
+
|
36
|
+
def button(name, &blk)
|
37
|
+
self.elements << Button.new(self, name, &blk)
|
38
|
+
end
|
39
|
+
|
40
|
+
def para(text)
|
41
|
+
self.elements << Paragraph.new(text)
|
42
|
+
end
|
43
|
+
|
44
|
+
def link(text, &blk)
|
45
|
+
self.elements << Link.new(self, text, &blk)
|
46
|
+
end
|
47
|
+
|
48
|
+
def alert(text)
|
49
|
+
self.events << Alert.new(text)
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
data/lib/shoes/mocks/version.rb
CHANGED
data/shoes-mocks.gemspec
CHANGED
@@ -5,14 +5,17 @@ require "shoes/mocks/version"
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "shoes-mocks"
|
7
7
|
s.version = Shoes::Mocks::VERSION
|
8
|
-
s.authors = ["Steve Klabnik"]
|
9
|
-
s.email = ["steve@steveklabnik.com"]
|
8
|
+
s.authors = ["Steve Klabnik", "Tobias Pfeiffer"]
|
9
|
+
s.email = ["steve@steveklabnik.com", "tobias.pfeiffer@student.hpi.uni-potsdam.de"]
|
10
10
|
s.homepage = "http://github.com/shoes/shoes-mocks"
|
11
11
|
s.summary = %q{Mocking for Shoes}
|
12
12
|
s.description = %q{If you want your tests to be isolated, you need mocks. Mocking GUIs is hard. shoes-mocks to the rescue!}
|
13
13
|
|
14
|
+
s.add_runtime_dependency 'rspec'
|
15
|
+
|
14
16
|
s.files = `git ls-files`.split("\n")
|
15
17
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
19
|
s.require_paths = ["lib"]
|
18
20
|
end
|
21
|
+
|
metadata
CHANGED
@@ -1,27 +1,42 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shoes-mocks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Steve Klabnik
|
14
|
+
- Tobias Pfeiffer
|
14
15
|
autorequire:
|
15
16
|
bindir: bin
|
16
17
|
cert_chain: []
|
17
18
|
|
18
|
-
date: 2011-
|
19
|
+
date: 2011-09-25 00:00:00 -07:00
|
19
20
|
default_executable:
|
20
|
-
dependencies:
|
21
|
-
|
21
|
+
dependencies:
|
22
|
+
- !ruby/object:Gem::Dependency
|
23
|
+
name: rspec
|
24
|
+
prerelease: false
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ">="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
hash: 3
|
31
|
+
segments:
|
32
|
+
- 0
|
33
|
+
version: "0"
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
22
36
|
description: If you want your tests to be isolated, you need mocks. Mocking GUIs is hard. shoes-mocks to the rescue!
|
23
37
|
email:
|
24
38
|
- steve@steveklabnik.com
|
39
|
+
- tobias.pfeiffer@student.hpi.uni-potsdam.de
|
25
40
|
executables: []
|
26
41
|
|
27
42
|
extensions: []
|
@@ -34,6 +49,9 @@ files:
|
|
34
49
|
- README.md
|
35
50
|
- Rakefile
|
36
51
|
- lib/shoes/mocks.rb
|
52
|
+
- lib/shoes/mocks/bootstrap.rb
|
53
|
+
- lib/shoes/mocks/mocked_classes.rb
|
54
|
+
- lib/shoes/mocks/shoes.rb
|
37
55
|
- lib/shoes/mocks/version.rb
|
38
56
|
- shoes-mocks.gemspec
|
39
57
|
has_rdoc: true
|