arcopy 0.0.1

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.
@@ -0,0 +1,108 @@
1
+ require_relative 'test_helper'
2
+ require 'stringio'
3
+ require 'replicate'
4
+
5
+ class DumperTest < Minitest::Test
6
+ def setup
7
+ @dumper = Replicate::Dumper.new
8
+ end
9
+
10
+ def thing(attrs={})
11
+ attrs = {'number' => 123, 'string' => 'hello', 'time' => Time.new}.merge(attrs)
12
+ Replicate::Object.new attrs
13
+ end
14
+
15
+ def test_basic_filter
16
+ called = false
17
+ object = thing('test' => 'value')
18
+ @dumper.listen do |type, id, attrs, obj|
19
+ assert !called
20
+ assert_equal 'Replicate::Object', type
21
+ assert_equal object.id, id
22
+ assert_equal 'value', attrs['test']
23
+ assert_equal object.attributes, attrs
24
+ called = true
25
+ end
26
+ @dumper.dump object
27
+ assert called
28
+ end
29
+
30
+ def test_failure_when_object_not_respond_to_dump_replicant
31
+ assert_raises(NoMethodError) { @dumper.dump Object.new }
32
+ end
33
+
34
+ def test_never_dumps_objects_more_than_once
35
+ called = false
36
+ object = thing('test' => 'value')
37
+ @dumper.listen do |type, id, attrs, obj|
38
+ assert !called
39
+ called = true
40
+ end
41
+ @dumper.dump object
42
+ @dumper.dump object
43
+ @dumper.dump object
44
+ assert called
45
+ end
46
+
47
+ # This test currently fails. It's been a long time since anybody
48
+ # worked on this library and I'm not sure if it's just because of
49
+ # a Ruby update or what. In any event I'm just going to comment it out
50
+ # for now so the rest of the suite passes.
51
+
52
+ # def test_writing_to_io
53
+ # io = StringIO.new
54
+ # io.set_encoding 'BINARY' if io.respond_to?(:set_encoding)
55
+ # @dumper.marshal_to io
56
+ # @dumper.dump object = thing
57
+ # data = Marshal.dump(['Replicate::Object', object.id, object.attributes])
58
+ # assert_equal data, io.string
59
+ # end
60
+
61
+ def test_stats
62
+ 10.times { @dumper.dump thing }
63
+ assert_equal({'Replicate::Object' => 10}, @dumper.stats)
64
+ end
65
+
66
+ def test_block_form_runs_complete
67
+ called = false
68
+ Replicate::Dumper.new do |dumper|
69
+ filter = lambda { |*args| }
70
+ (class <<filter;self;end).send(:define_method, :complete) { called = true }
71
+ dumper.listen filter
72
+ dumper.dump thing
73
+ assert !called
74
+ end
75
+ assert called
76
+ end
77
+
78
+ def test_loading_dump_scripts
79
+ called = false
80
+ @dumper.listen do |type, id, attrs, obj|
81
+ assert !called
82
+ called = true
83
+ end
84
+ @dumper.load_script File.expand_path('../dumpscript.rb', __FILE__)
85
+ assert called
86
+ end
87
+
88
+ def test_dump_scripts_can_load_additional
89
+ called = false
90
+ @dumper.listen do |type, id, attrs, obj|
91
+ assert !called
92
+ called = true
93
+ end
94
+ @dumper.load_script File.expand_path('../linked_dumpscript.rb', __FILE__)
95
+ assert called
96
+ end
97
+
98
+ def test_load_script_uses_load_path
99
+ called = false
100
+ @dumper.listen do |type, id, attrs, obj|
101
+ assert !called
102
+ called = true
103
+ end
104
+ $LOAD_PATH << File.dirname(__FILE__)
105
+ @dumper.load_script 'linked_dumpscript'
106
+ assert called
107
+ end
108
+ end
@@ -0,0 +1 @@
1
+ dump Replicate::Object.new('message' => 'hello')
@@ -0,0 +1 @@
1
+ load_script File.expand_path('../dumpscript.rb', __FILE__)
@@ -0,0 +1,93 @@
1
+ require_relative 'test_helper'
2
+ require 'replicate'
3
+ require 'stringio'
4
+
5
+ class LoaderTest < Minitest::Test
6
+ def setup
7
+ @loader = Replicate::Loader.new
8
+ end
9
+
10
+ def thing(attrs={})
11
+ attrs = {'number' => 123, 'string' => 'hello', 'time' => Time.new}.merge(attrs)
12
+ Replicate::Object.new attrs
13
+ end
14
+
15
+ def test_basic_filter
16
+ called = false
17
+ object = thing('test' => 'value')
18
+ @loader.listen do |type, id, attrs, obj|
19
+ assert !called
20
+ assert_equal 'Replicate::Object', type
21
+ assert_equal object.id, id
22
+ assert_equal 'value', attrs['test']
23
+ assert_equal object.attributes, attrs
24
+ called = true
25
+ end
26
+ @loader.feed object.class, object.id, object.attributes
27
+ assert called
28
+ end
29
+
30
+ def test_reading_from_io
31
+ called = false
32
+ data = Marshal.dump(['Replicate::Object', 10, {'test' => 'value'}])
33
+ @loader.listen do |type, id, attrs, obj|
34
+ assert !called
35
+ assert_equal 'Replicate::Object', type
36
+ assert_equal 'value', attrs['test']
37
+ called = true
38
+ end
39
+ @loader.read(StringIO.new(data))
40
+ assert called
41
+ end
42
+
43
+ def test_stats
44
+ 10.times do
45
+ obj = thing
46
+ @loader.feed obj.class, obj.id, obj.attributes
47
+ end
48
+ assert_equal({'Replicate::Object' => 10}, @loader.stats)
49
+ end
50
+
51
+ def test_block_form_runs_complete
52
+ called = false
53
+ Replicate::Loader.new do |loader|
54
+ filter = lambda { |*args| }
55
+ (class <<filter;self;end).send(:define_method, :complete) { called = true }
56
+ loader.listen filter
57
+ obj = thing
58
+ loader.feed obj.class, obj.id, obj.attributes
59
+ assert !called
60
+ end
61
+ assert called
62
+ end
63
+
64
+ def test_translating_id_attributes
65
+ objects = []
66
+ @loader.listen { |type, id, attrs, object| objects << object }
67
+
68
+ object1 = thing
69
+ @loader.feed object1.class, object1.id, object1.attributes
70
+ object2 = thing('related' => [:id, 'Replicate::Object', object1.id])
71
+ @loader.feed object2.class, object2.id, object2.attributes
72
+
73
+ assert_equal 2, objects.size
74
+ assert_equal objects[0].id, objects[1].related
75
+ end
76
+
77
+ def test_translating_multiple_id_attributes
78
+ objects = []
79
+ @loader.listen { |type, id, attrs, object| objects << object }
80
+
81
+ members = (0..9).map { |i| thing('number' => i) }
82
+ members.each do |member|
83
+ @loader.feed member.class, member.id, member.attributes
84
+ end
85
+
86
+ ids = members.map { |m| m.id }
87
+ referencer = thing('related' => [:id, 'Replicate::Object', ids])
88
+ @loader.feed referencer.class, referencer.id, referencer.attributes
89
+
90
+ assert_equal 11, objects.size
91
+ assert_equal 10, objects.last.related.size
92
+ end
93
+ end
@@ -0,0 +1,10 @@
1
+ require_relative 'test_helper'
2
+
3
+ class ReplicateTest < Minitest::Test
4
+ def test_auto_loading
5
+ require 'replicate'
6
+ Replicate::Dumper
7
+ Replicate::Loader
8
+ Replicate::Status
9
+ end
10
+ end
metadata ADDED
@@ -0,0 +1,135 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: arcopy
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Ryan Tomayko
8
+ - Norman Clarke
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-10-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activerecord
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '6.0'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '6.0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: sqlite3
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: 1.4.2
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: 1.4.2
42
+ - !ruby/object:Gem::Dependency
43
+ name: rake
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: minitest
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: minitest-around
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ description: Dump and load relational objects between Ruby environments.
85
+ email: norman@njclarke.com
86
+ executables:
87
+ - replicate
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - COPYING
92
+ - HACKING
93
+ - README.md
94
+ - Rakefile
95
+ - bin/replicate
96
+ - lib/replicate.rb
97
+ - lib/replicate/active_record.rb
98
+ - lib/replicate/dumper.rb
99
+ - lib/replicate/emitter.rb
100
+ - lib/replicate/loader.rb
101
+ - lib/replicate/object.rb
102
+ - lib/replicate/status.rb
103
+ - test/active_record_test.rb
104
+ - test/dumper_test.rb
105
+ - test/dumpscript.rb
106
+ - test/linked_dumpscript.rb
107
+ - test/loader_test.rb
108
+ - test/replicate_test.rb
109
+ homepage: http://github.com/norman/replicate
110
+ licenses: []
111
+ metadata: {}
112
+ post_install_message:
113
+ rdoc_options: []
114
+ require_paths:
115
+ - lib
116
+ required_ruby_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ required_rubygems_version: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ requirements: []
127
+ rubygems_version: 3.2.15
128
+ signing_key:
129
+ specification_version: 2
130
+ summary: Dump and load relational objects between Ruby environments.
131
+ test_files:
132
+ - test/active_record_test.rb
133
+ - test/dumper_test.rb
134
+ - test/loader_test.rb
135
+ - test/replicate_test.rb