lanekit 0.1.6 → 0.1.7

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NjhjZDVkYzIyYmY4ZWM4OWQ1Y2VlOTRhZTI1N2RiNGMwNDZiOTg1Yw==
4
+ YzI4ZDM1ZGM3MjhkYjRmYjU1NzkxZGM1ZDdmYzM2MjBjZTUyODgzOA==
5
5
  data.tar.gz: !binary |-
6
- MDg1NmM1MDlmYmRkMGQ3M2ZkMTQ4ODdiZTZlZWYzN2QzYjUwN2Q4Zg==
6
+ MDIxOTc1ZTM4NjdiOTk2NTZjYzk2NWFjMGE1YjY0M2RiZjgzNTU5Zg==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- ZmRkODljYjQ5ODE4NTBhNmZhMzU2Y2I2YTA0MThkYmM2MDYxNzdlYzRmNWY0
10
- NWE4YjdmNTkzMzgwNzlmYzFkMmY0ZWY5MjA3ZDM1NzU2MjFlMzMwOWM0MTdm
11
- NDQ4YzA0ZWI1NmJjMTg2MjNmNzc2NmI3MGVjNGNhNDUzMjFhYjY=
9
+ OTY4N2M1NmQxYmIzOWEwODlhOTMzMmI4YWU2OTU2YzBlY2VmYzlhMzQ5OTBm
10
+ Zjc5ZjkzODViMWY3MDJhZGMwYzFhYjI2MjRmMDE5MDFiNzkzNGRkMzc3YTMw
11
+ MWE2NTAwOTJkMjE3ZjljOGE4ZWUzY2JlMTNiZWQ4YWI4MDdiYjQ=
12
12
  data.tar.gz: !binary |-
13
- MmMxZThlYzk5NDFmODg2MGU4ZWYwM2MwMzNiNDkwODljOWE3NjZmMzViNDQx
14
- OTc2NTZjZDJhM2IxMWNhYzVjM2U3NDlkMjYzNDQ5MmU1NDM2N2RmMTcwOTM5
15
- MDZmMGE4NmM1MzE1YzBkMzRlNGQ5ZTQ4NDgzNzUzYjM2ZTE4ODU=
13
+ YmFiZDM3NWQ4YzY3NGE0NjhjOWI3ZmQyNDkxZGIxODhjMDNhYzAyMTllZDRh
14
+ NDU4ZGZhODkzMTU4N2JiNDE1MTY0OTMxNDJhMTMzYTg2ZjZjNTliYmRmNjBj
15
+ MGYyYzBhNjU2OGJlNjcyMzE0YjYzN2E4NjYzMzBlNGRhYmMwY2Q=
data/README.md CHANGED
@@ -1,6 +1,9 @@
1
1
  ## LaneKit
2
2
 
3
- LaneKit is a Ruby command line app that creates iOS Objective-C models for integration with RestKit.
3
+
4
+ LaneKit is a code generator for iOS Objective-C models for integration with RestKit. It includes support
5
+ for unit testing with SenTestingKit including fixtures and tests. LaneKit is a command line app written
6
+ in Ruby and packaged as a Ruby Gem.
4
7
 
5
8
  - [Source code for LaneKit](https://github.com/LarryAasen/LaneKit/zipball/master) from [GitHub](http://github.com).
6
9
  - Questions? [Stack Overflow](http://stackoverflow.com/questions/tagged/lanekit) is the best place to find answers.
@@ -17,12 +20,18 @@ LaneKit is a Ruby command line app that creates iOS Objective-C models for integ
17
20
  ## Example Usage
18
21
 
19
22
  ### Add a new model called Video to an existing Xcode project.
20
- ```
21
- $ lanekit generate model Video duration:string headline:string image:string location:string
22
- create Classes/model
23
- create Classes/model/Video.h
24
- create Classes/model/Video.m
25
- ```
23
+
24
+ $ lanekit generate model Video duration:string headline:string id:integer image:string location:string
25
+
26
+ create Classes/Models
27
+ create Classes/Tests/Fixtures
28
+ create Classes/Tests/Models
29
+ create Classes/Models/Video.h
30
+ create Classes/Models/Video.m
31
+ create Classes/Tests/Fixtures/VideoFixtures.h
32
+ create Classes/Tests/Fixtures/VideoFixtures.m
33
+ create Classes/Tests/Models/VideoTest.h
34
+ create Classes/Tests/Models/VideoTest.m
26
35
 
27
36
  and here is the Objective-C header file that was generated by LaneKit:
28
37
 
@@ -30,10 +39,10 @@ and here is the Objective-C header file that was generated by LaneKit:
30
39
  //
31
40
  // Video.h
32
41
  //
33
- // This model was created on 2013-07-23 by LaneKit v0.1.6.
42
+ // This model was created on 2013-08-10 by LaneKit v0.1.7.
34
43
  //
35
44
  // The following LaneKit command was used to generate this model:
36
- // lanekit generate model Video duration:string headline:string image:string location:string
45
+ // lanekit generate model Video duration:string headline:string id:integer image:string location:string
37
46
  //
38
47
 
39
48
  #import <Foundation/Foundation.h>
@@ -44,6 +53,7 @@ and here is the Objective-C header file that was generated by LaneKit:
44
53
 
45
54
  @property (nonatomic,strong) NSString *duration;
46
55
  @property (nonatomic,strong) NSString *headline;
56
+ @property (nonatomic,strong) NSNumber *id;
47
57
  @property (nonatomic,strong) NSString *image;
48
58
  @property (nonatomic,strong) NSString *location;
49
59
 
@@ -59,16 +69,12 @@ and here is the Objective-C .m file that was generated by LaneKit:
59
69
  //
60
70
  // Video.m
61
71
  //
62
- // This model was created on 2013-07-23 by LaneKit v0.1.6.
63
- //
72
+ // This model was created on 2013-08-10 by LaneKit v0.1.7.
64
73
  //
65
74
 
66
75
  #import "Video.h"
67
- #import "MobileCoreServices/MobileCoreServices.h"
68
- #import "SystemConfiguration/SystemConfiguration.h"
69
76
  #import "RestKit.h"
70
77
 
71
-
72
78
  @implementation Video
73
79
 
74
80
  + (void)initialize
@@ -83,6 +89,7 @@ and here is the Objective-C .m file that was generated by LaneKit:
83
89
  return @{
84
90
  @"duration": @"duration",
85
91
  @"headline": @"headline",
92
+ @"id": @"id",
86
93
  @"image": @"image",
87
94
  @"location": @"location"
88
95
  };
@@ -1,3 +1,3 @@
1
1
  module LaneKit
2
- VERSION = "0.1.6"
2
+ VERSION = "0.1.7"
3
3
  end
data/lib/lanekit.rb CHANGED
@@ -49,16 +49,54 @@ module LaneKit
49
49
  end
50
50
  type
51
51
  end
52
+
53
+ def self.objective_c_type_fixture_value(type_name)
54
+ if type_name == "array"
55
+ value = "@[]"
56
+ elsif type_name == "date"
57
+ value = "NSDate.new"
58
+ elsif type_name == "integer"
59
+ value = "[NSNumber numberWithInteger:1]"
60
+ elsif type_name == "string"
61
+ value = "@\"MyString\""
62
+ elsif type_name
63
+ value = "nil"
64
+ else
65
+ value = "nil"
66
+ end
67
+ value
68
+ end
69
+
70
+ def self.objective_c_type_unit_test_assert(model_name, name, type_name)
71
+ if type_name == "array"
72
+ assert = "STAssertNotNil(#{model_name}.#{name}, @\"#{name} is nil\")"
73
+ elsif type_name == "date"
74
+ assert = "STAssertNotNil(#{model_name}.#{name}, @\"#{name} is nil\")"
75
+ elsif type_name == "integer"
76
+ assert = "STAssertTrue(#{model_name}.#{name}.integerValue == #{self.objective_c_type_fixture_value(type_name)}.integerValue, @\"#{name} not #{self.objective_c_type_fixture_value(type_name)}\")"
77
+ elsif type_name == "string"
78
+ assert = "STAssertTrue([#{model_name}.#{name} isEqualToString:#{self.objective_c_type_fixture_value(type_name)}], @\"#{name} not correct value\")"
79
+ elsif type_name
80
+ assert = "STAssertNotNil(#{model_name}.#{name}, @\"#{name} is nil\")"
81
+ else
82
+ assert = "STAssertNotNil(#{model_name}.#{name}, @\"#{name} is nil\")"
83
+ end
84
+ assert
85
+ end
52
86
 
53
87
  module Generators
54
88
 
55
89
  class Generate < Thor
56
90
  include Thor::Actions
57
91
 
58
- desc "model [name] [name:type:relationship, name:type:relationship, ...] where type is [date|integer|string|<class_name>] and relationship (optional) is []", "Generates an Objective-C model for RestKit"
92
+ desc "model [name] [name:type:relationship, name:type:relationship, ...] where type is [date|integer|string|<class_name>] and relationship (optional) is []", "Generates an Objective-C model for RestKit including unit tests"
59
93
  def model(model_name, *attributes)
60
94
  @model_name = LaneKit.derive_model_name(model_name)
61
- @file_name = LaneKit.derive_file_name(@model_name)
95
+
96
+ @model_file_name = LaneKit.derive_file_name(@model_name)
97
+ @model_fixtures_file_name = "#{@model_file_name}Fixtures"
98
+ @model_tests_file_name = "#{@model_file_name}Test"
99
+
62
100
  @class_name = LaneKit.derive_class_name(@model_name)
63
101
  @lanekit_version = VERSION;
64
102
 
@@ -72,7 +110,10 @@ module LaneKit
72
110
  :type => type,
73
111
  :name => name,
74
112
  :objective_c_type => objective_c_type,
75
- :relationship => relationship
113
+ :relationship => relationship,
114
+ :relationship_fixtures_file_name => "#{relationship}Fixtures",
115
+ :fixture_value => LaneKit.objective_c_type_fixture_value(type),
116
+ :unit_test_assert => LaneKit.objective_c_type_unit_test_assert(@model_name, name, type)
76
117
  }
77
118
  @any_relationships = relationship ? true : @any_relationships
78
119
  }
@@ -95,7 +136,11 @@ module LaneKit
95
136
  no_commands {
96
137
  def initialize_stuff
97
138
  @model_date = Date.today.to_s
98
- @models_folder = "Classes/model"
139
+
140
+ @models_folder = "Classes/Models"
141
+ @tests_fixtures_folder = "Classes/Tests/Fixtures"
142
+ @tests_models_folder = "Classes/Tests/Models"
143
+
99
144
  @template_folder = File.expand_path('../template', __FILE__)
100
145
  @using_core_data = false
101
146
  end
@@ -106,20 +151,45 @@ module LaneKit
106
151
 
107
152
  def create_model_folders
108
153
  empty_directory @models_folder
154
+ empty_directory @tests_fixtures_folder
155
+ empty_directory @tests_models_folder
109
156
  end
110
157
 
111
158
  def create_model_files(model_name)
112
159
  # Files are created lowercase
113
160
  # Class names are camel case, videodata => VideoData
114
-
161
+
162
+ # 1) Create the Models
115
163
  # Create the .h file
116
164
  source = "model.h.erb"
117
- target = File.join(@models_folder, "#{@file_name}.h")
165
+ target = File.join(@models_folder, "#{@model_file_name}.h")
118
166
  template(source,target)
119
167
 
120
168
  # Create the .m file
121
169
  source = "model.m.erb"
122
- target = File.join(@models_folder, "#{@file_name}.m")
170
+ target = File.join(@models_folder, "#{@model_file_name}.m")
171
+ template(source,target)
172
+
173
+ # 2) Create the Model Test Fixtures
174
+ # Create the .h file
175
+ source = "model_fixture.h.erb"
176
+ target = File.join(@tests_fixtures_folder, "#{@model_fixtures_file_name}.h")
177
+ template(source,target)
178
+
179
+ # Create the .m file
180
+ source = "model_fixture.m.erb"
181
+ target = File.join(@tests_fixtures_folder, "#{@model_fixtures_file_name}.m")
182
+ template(source,target)
183
+
184
+ # 3) Create the Model Tests
185
+ # Create the .h file
186
+ source = "model_test.h.erb"
187
+ target = File.join(@tests_models_folder, "#{@model_tests_file_name}.h")
188
+ template(source,target)
189
+
190
+ # Create the .m file
191
+ source = "model_test.m.erb"
192
+ target = File.join(@tests_models_folder, "#{@model_tests_file_name}.m")
123
193
  template(source,target)
124
194
  end
125
195
 
@@ -134,7 +204,7 @@ end
134
204
 
135
205
  module LaneKit
136
206
  class CLI < Thor
137
- desc "generate", "Generate a model compatible with RestKit"
207
+ desc "generate", "Generate a model compatible with RestKit that includes unit tests"
138
208
 
139
209
  # register(class_name, subcommand_alias, usage_list_string, description_string)
140
210
  register(LaneKit::Generators::Generate, "generate", "generate", "Runs a generator")
@@ -1,5 +1,5 @@
1
1
  //
2
- // <%=@file_name%>.h
2
+ // <%=@model_file_name%>.h
3
3
  //
4
4
  // This model was created on <%=@model_date%> by LaneKit v<%=@lanekit_version%>.
5
5
  //
@@ -1,15 +1,12 @@
1
1
  //
2
- // <%=@file_name%>.m
2
+ // <%=@model_file_name%>.m
3
3
  //
4
4
  // This model was created on <%=@model_date%> by LaneKit v<%=@lanekit_version%>.
5
5
  //
6
- //
7
6
 
8
- #import "<%=@file_name%>.h"
9
- #import "MobileCoreServices/MobileCoreServices.h"
10
- #import "SystemConfiguration/SystemConfiguration.h"
11
- #import "RestKit.h"
12
- <% @attributes.each do |attribute| %><% if attribute[:relationship] %>#import "<%=attribute[:relationship]%>.h"<%end%><%end%>
7
+ #import "<%=@model_file_name%>.h"
8
+ #import "RestKit.h"<% @attributes.each do |attribute| %><% if attribute[:relationship] %>
9
+ #import "<%=attribute[:relationship]%>.h"<%end%><%end%>
13
10
 
14
11
  @implementation <%=@class_name%>
15
12
 
@@ -0,0 +1,16 @@
1
+ //
2
+ // <%=@model_fixtures_file_name%>.h
3
+ //
4
+ // This model fixture was created on <%=@model_date%> by LaneKit v<%=@lanekit_version%>.
5
+ //
6
+
7
+ #import <Foundation/Foundation.h>
8
+ #import "<%=@model_file_name%>.h"<% @attributes.each do |attribute| %><% if attribute[:relationship] %>
9
+ #import "<%=attribute[:relationship]%>.h"<%end%><%end%>
10
+
11
+ @interface <%=@class_name%>Fixtures : NSObject
12
+
13
+ + (<%=@class_name%> *)one;
14
+ + (<%=@class_name%> *)two;
15
+
16
+ @end
@@ -0,0 +1,30 @@
1
+ //
2
+ // <%=@model_fixtures_file_name%>.m
3
+ //
4
+ // This model fixture was created on <%=@model_date%> by LaneKit v<%=@lanekit_version%>.
5
+ //
6
+
7
+ #import "<%=@model_fixtures_file_name%>.h"<% @attributes.each do |attribute| %><% if attribute[:relationship] %>
8
+ #import "<%=attribute[:relationship_fixtures_file_name]%>.h"<%end%><%end%>
9
+
10
+ @implementation <%=@class_name%>Fixtures
11
+
12
+ + (<%=@class_name%> *)one
13
+ {
14
+ <%=@class_name%> *<%=@model_name%> = <%=@class_name%>.new;
15
+
16
+ <% @attributes.each_with_index do |attribute, index| %><% if attribute[:relationship] %> <%=@model_name%>.<%=attribute[:name]%> = @[<%=attribute[:relationship]%>Fixtures.one];<% else %><%=@model_name%>.<%=attribute[:name]%> = <%=attribute[:fixture_value]%>;<% end %>
17
+ <% end %>
18
+ return <%=@model_name%>;
19
+ }
20
+
21
+ + (<%=@class_name%> *)two
22
+ {
23
+ <%=@class_name%> *<%=@model_name%> = <%=@class_name%>.new;
24
+
25
+ <% @attributes.each_with_index do |attribute, index| %><% if attribute[:relationship] %> <%=@model_name%>.<%=attribute[:name]%> = @[<%=attribute[:relationship]%>Fixtures.one, <%=attribute[:relationship]%>Fixtures.two];<% else %> <%=@model_name%>.<%=attribute[:name]%> = <%=attribute[:fixture_value]%>;<% end %>
26
+ <% end %>
27
+ return <%=@model_name%>;
28
+ }
29
+
30
+ @end
@@ -0,0 +1,10 @@
1
+ //
2
+ // <%=@model_tests_file_name%>.h
3
+ //
4
+ // This model test was created on <%=@model_date%> by LaneKit v<%=@lanekit_version%>.
5
+ //
6
+
7
+ #import <SenTestingKit/SenTestingKit.h>
8
+
9
+ @interface <%=@class_name%>Test : SenTestCase
10
+ @end
@@ -0,0 +1,51 @@
1
+ //
2
+ // <%=@model_tests_file_name%>.m
3
+ //
4
+ // This model test was created on <%=@model_date%> by LaneKit v<%=@lanekit_version%>.
5
+ //
6
+
7
+ #import "<%=@model_tests_file_name%>.h"
8
+ #import "<%=@model_fixtures_file_name%>.h"
9
+
10
+ @implementation <%=@class_name%>Test
11
+
12
+ - (void)setUp
13
+ {
14
+ [super setUp];
15
+
16
+ // Set-up code here.
17
+ }
18
+
19
+ - (void)tearDown
20
+ {
21
+ // Tear-down code here.
22
+
23
+ [super tearDown];
24
+ }
25
+
26
+ - (void)test<%=@class_name%>NewOne
27
+ {
28
+ <%=@class_name%> *<%=@model_name%> = <%=@class_name%>Fixtures.one;
29
+ STAssertNotNil(<%=@model_name%>, @"<%=@model_name%> is nil");
30
+
31
+ <% @attributes.each_with_index do |attribute, index| %><% if !attribute[:relationship] %> <%=attribute[:unit_test_assert]%>;<% end %>
32
+ <% end %>}
33
+
34
+ - (void)test<%=@class_name%>NewTwo
35
+ {
36
+ <%=@class_name%> *<%=@model_name%> = <%=@class_name%>Fixtures.two;
37
+ STAssertNotNil(<%=@model_name%>, @"<%=@model_name%> is nil");
38
+
39
+ <% @attributes.each_with_index do |attribute, index| %><% if !attribute[:relationship] %> <%=attribute[:unit_test_assert]%>;<% end %>
40
+ <% end %>}
41
+
42
+ - (void)testMapping
43
+ {
44
+ RKObjectMapping *requestMapping = [<%=@class_name%> requestMapping];
45
+ STAssertNotNil(requestMapping, @"[<%=@class_name%> requestMapping] returned nil.");
46
+
47
+ RKObjectMapping *responseMapping = [<%=@class_name%> responseMapping];
48
+ STAssertNotNil(responseMapping, @"[<%=@class_name%> responseMapping] returned nil.");
49
+ }
50
+
51
+ @end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lanekit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Larry Aasen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-24 00:00:00.000000000 Z
11
+ date: 2013-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -38,7 +38,7 @@ dependencies:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.5.5
41
- description: an Objective-C model creator for RestKit.
41
+ description: a code generator for iOS Objective-C models for integration with RestKit.
42
42
  email:
43
43
  - larryaasen@gmail.com
44
44
  executables:
@@ -50,6 +50,10 @@ files:
50
50
  - lib/lanekit.rb
51
51
  - lib/template/model.h.erb
52
52
  - lib/template/model.m.erb
53
+ - lib/template/model_fixture.h.erb
54
+ - lib/template/model_fixture.m.erb
55
+ - lib/template/model_test.h.erb
56
+ - lib/template/model_test.m.erb
53
57
  - bin/lanekit
54
58
  - README.md
55
59
  - LICENSE
@@ -76,6 +80,6 @@ rubyforge_project:
76
80
  rubygems_version: 2.0.3
77
81
  signing_key:
78
82
  specification_version: 4
79
- summary: LaneKit is a Ruby command line app that creates Objective-C models for integration
80
- to RestKit.
83
+ summary: LaneKit is a code generator for iOS Objective-C models for integration with
84
+ RestKit.
81
85
  test_files: []