ditto 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. data/bin/ditto +1 -1
  2. data/features/create_entities.feature +1 -0
  3. data/features/load_entity.feature +1 -0
  4. data/features/store_entity.feature +5 -4
  5. data/lib/ditto.rb +1 -0
  6. data/lib/ditto/dsl.rb +14 -9
  7. data/lib/ditto/entity.rb +118 -106
  8. data/lib/ditto/error.rb +19 -0
  9. data/lib/ditto/options.rb +45 -13
  10. data/lib/ditto/runner.rb +37 -56
  11. data/lib/ditto/version.rb +1 -1
  12. data/spec/entity_spec.rb +83 -59
  13. data/spec/fixtures/badmap.ditto +18 -0
  14. data/spec/fixtures/badver.ditto +17 -0
  15. data/spec/fixtures/bigcircle.ditto +17 -0
  16. data/spec/fixtures/circle.ditto +16 -0
  17. data/spec/fixtures/continent.ditto +16 -0
  18. data/spec/fixtures/country.ditto +16 -0
  19. data/spec/fixtures/currency.ditto +30 -0
  20. data/spec/fixtures/currency_group.ditto +17 -0
  21. data/spec/fixtures/dot.ditto +17 -0
  22. data/spec/fixtures/dupversion.ditto +32 -0
  23. data/spec/fixtures/good.ditto +17 -0
  24. data/spec/fixtures/multiversion.ditto +32 -0
  25. data/spec/fixtures/nocomma.ditto +16 -0
  26. data/spec/fixtures/nomethod.ditto +18 -0
  27. data/spec/fixtures/random.ditto +17 -0
  28. data/spec/fixtures/syntax.ditto +19 -0
  29. data/spec/options_spec.rb +43 -25
  30. data/test/data/simple_object.xml +23 -0
  31. data/test/data/simple_object.yaml +39 -0
  32. data/test/ditto/currency.ditto +30 -0
  33. data/test/ditto/currency_group.ditto +17 -0
  34. data/test/dm/currency-1.0.0.dm +13 -0
  35. data/test/dm/currency_group-1.0.0.dm +10 -0
  36. data/test/dm/datamart-1.0 +7 -0
  37. data/test/dm/nested +2 -0
  38. data/test/dmtest.rb +41 -0
  39. data/test/sample.test +2 -0
  40. metadata +59 -42
  41. data/lib/ditto/map.rb +0 -39
@@ -0,0 +1,2 @@
1
+ # An empty file to test nesting
2
+ # The end
@@ -0,0 +1,41 @@
1
+ # Test that Datamapper and the database things are working
2
+ #
3
+ require 'data_mapper'
4
+
5
+ load 'dm/currency-1.0.0.dm'
6
+ load 'dm/currency_group-1.0.0.dm'
7
+
8
+ DataMapper::Logger.new($stdout, :debug)
9
+ DataMapper.setup(:default, 'oracle://nick:secret@nixora.local/orcl')
10
+ DataMapper.finalize
11
+
12
+ DataMapper.auto_migrate!
13
+
14
+ americas = CurrencyGroup.create(
15
+ :code => 'Americas',
16
+ :description => 'The Americas',
17
+ :is_commodity => true
18
+ )
19
+ europe = CurrencyGroup.create(
20
+ :code => 'Europe',
21
+ :description => 'European Union',
22
+ :is_commodity => false
23
+ )
24
+ europe.currencies.create(
25
+ :code => 'GBP',
26
+ :description => 'Pounds Sterling',
27
+ :exchange_rate => 1.5,
28
+ :is_designated => false
29
+ )
30
+ europe.currencies.create(
31
+ :code => 'EUR',
32
+ :description => 'Euro',
33
+ :exchange_rate => 1.2,
34
+ :is_designated => false
35
+ )
36
+ americas.currencies.create(
37
+ :code => 'USD',
38
+ :description => 'Greenback',
39
+ :exchange_rate => 1.0,
40
+ :is_designated => true
41
+ )
@@ -0,0 +1,2 @@
1
+ # A test sample
2
+ data/simple_object.yaml
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ditto
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -43,44 +43,9 @@ dependencies:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
45
  version: '2.11'
46
- description: ! 'Database Independent Test Objects (Ditto)
47
-
48
-
49
- Ditto defines a simple DSL that allows test data to be expressed in a database independent
50
- format.
51
-
52
- When the underlying tables are remapped the QA team don''t have to go and change
53
- all the historical test cases.
54
-
55
-
56
- There are three parts, all of them versioned:
57
-
58
- 1. The data declarations
59
-
60
- 2. The mappings to the underlying database
61
-
62
- 3. The data itself
63
-
64
-
65
- Idea is to replace an XML dialect with something simpler. See sample at simple_object.xml
66
-
67
-
68
- Notes on DSL
69
-
70
- ------------
71
-
72
-
73
- The entity declaration style uses verb and hash only, without a block.
74
-
75
- Contrast this with mapping style which uses verb, params and then block. Of course
76
-
77
- mappings need code and so the block usage is natural. This could also be done
78
-
79
- for the declarations, very similar to the way the gem ''datamapper'' does it.
80
-
81
-
82
-
83
- Nick Townsend, Oct 2012
46
+ description: ! 'Ditto defines a simple DSL that allows test data to be expressed in
47
+ a database independent format.When the underlying tables are remapped the QA team
48
+ don''t have to go and change all the historical test cases.
84
49
 
85
50
  '
86
51
  email: nick.townsend@mac.com
@@ -90,11 +55,11 @@ extensions: []
90
55
  extra_rdoc_files: []
91
56
  files:
92
57
  - lib/ditto/dsl.rb
93
- - lib/ditto/options.rb
94
58
  - lib/ditto/entity.rb
95
- - lib/ditto/version.rb
96
- - lib/ditto/map.rb
59
+ - lib/ditto/error.rb
60
+ - lib/ditto/options.rb
97
61
  - lib/ditto/runner.rb
62
+ - lib/ditto/version.rb
98
63
  - lib/ditto.rb
99
64
  - bin/ditto
100
65
  - features/create_entities.feature
@@ -103,7 +68,33 @@ files:
103
68
  - features/store_entity.feature
104
69
  - features/support/hooks.rb
105
70
  - spec/entity_spec.rb
71
+ - spec/fixtures/badmap.ditto
72
+ - spec/fixtures/badver.ditto
73
+ - spec/fixtures/bigcircle.ditto
74
+ - spec/fixtures/circle.ditto
75
+ - spec/fixtures/continent.ditto
76
+ - spec/fixtures/country.ditto
77
+ - spec/fixtures/currency.ditto
78
+ - spec/fixtures/currency_group.ditto
79
+ - spec/fixtures/dot.ditto
80
+ - spec/fixtures/dupversion.ditto
81
+ - spec/fixtures/good.ditto
82
+ - spec/fixtures/multiversion.ditto
83
+ - spec/fixtures/nocomma.ditto
84
+ - spec/fixtures/nomethod.ditto
85
+ - spec/fixtures/random.ditto
86
+ - spec/fixtures/syntax.ditto
106
87
  - spec/options_spec.rb
88
+ - test/data/simple_object.xml
89
+ - test/data/simple_object.yaml
90
+ - test/ditto/currency.ditto
91
+ - test/ditto/currency_group.ditto
92
+ - test/dm/currency-1.0.0.dm
93
+ - test/dm/currency_group-1.0.0.dm
94
+ - test/dm/datamart-1.0
95
+ - test/dm/nested
96
+ - test/dmtest.rb
97
+ - test/sample.test
107
98
  homepage: https://github.com/townsen/ditto
108
99
  licenses: []
109
100
  post_install_message:
@@ -135,4 +126,30 @@ test_files:
135
126
  - features/store_entity.feature
136
127
  - features/support/hooks.rb
137
128
  - spec/entity_spec.rb
129
+ - spec/fixtures/badmap.ditto
130
+ - spec/fixtures/badver.ditto
131
+ - spec/fixtures/bigcircle.ditto
132
+ - spec/fixtures/circle.ditto
133
+ - spec/fixtures/continent.ditto
134
+ - spec/fixtures/country.ditto
135
+ - spec/fixtures/currency.ditto
136
+ - spec/fixtures/currency_group.ditto
137
+ - spec/fixtures/dot.ditto
138
+ - spec/fixtures/dupversion.ditto
139
+ - spec/fixtures/good.ditto
140
+ - spec/fixtures/multiversion.ditto
141
+ - spec/fixtures/nocomma.ditto
142
+ - spec/fixtures/nomethod.ditto
143
+ - spec/fixtures/random.ditto
144
+ - spec/fixtures/syntax.ditto
138
145
  - spec/options_spec.rb
146
+ - test/data/simple_object.xml
147
+ - test/data/simple_object.yaml
148
+ - test/ditto/currency.ditto
149
+ - test/ditto/currency_group.ditto
150
+ - test/dm/currency-1.0.0.dm
151
+ - test/dm/currency_group-1.0.0.dm
152
+ - test/dm/datamart-1.0
153
+ - test/dm/nested
154
+ - test/dmtest.rb
155
+ - test/sample.test
@@ -1,39 +0,0 @@
1
- # Mapping support for Ditto
2
- #
3
- require 'ostruct'
4
- require 'data_mapper'
5
-
6
- module Ditto
7
- module Map
8
- @maps = {}
9
-
10
- def self.add name, opts, &block
11
- @maps[name] = block
12
- end
13
-
14
- def self.check_maps seq, definitions
15
- nerr = 0
16
- seq.each do |entity|
17
- unless @maps.has_key? entity
18
- nerr += 1
19
- Ditto::Entity.error("no mapping", entity, definitions[entity])
20
- end
21
- end
22
- return nerr
23
- end
24
-
25
- def self.add_all seq, data
26
- ninst = 0
27
- seq.each do |entity|
28
- instances = data[entity]
29
- instances.each do |ihash|
30
- puts "adding #{entity} #{ihash.inspect}" if Ditto::Options.instance.verbose > 1
31
- instance = OpenStruct.new ihash
32
- @maps[entity].call instance
33
- ninst += 1
34
- end
35
- end
36
- return ninst
37
- end
38
- end
39
- end