vigetlabs-unfuzzle 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +21 -1
- data/Rakefile +2 -2
- data/lib/unfuzzle.rb +13 -2
- data/lib/unfuzzle/component.rb +31 -0
- data/lib/unfuzzle/milestone.rb +17 -26
- data/lib/unfuzzle/priority.rb +30 -0
- data/lib/unfuzzle/project.rb +13 -20
- data/lib/unfuzzle/request.rb +5 -8
- data/lib/unfuzzle/response.rb +0 -7
- data/lib/unfuzzle/severity.rb +31 -0
- data/lib/unfuzzle/ticket.rb +58 -25
- data/lib/unfuzzle/version.rb +1 -1
- data/test/fixtures/component.xml +8 -0
- data/test/fixtures/components.xml +17 -0
- data/test/fixtures/milestone.xml +12 -0
- data/test/fixtures/milestones.xml +25 -0
- data/test/fixtures/project.xml +17 -0
- data/test/fixtures/projects.xml +35 -0
- data/test/fixtures/severities.xml +24 -0
- data/test/fixtures/severity.xml +8 -0
- data/test/fixtures/ticket.xml +25 -0
- data/test/fixtures/tickets.xml +51 -0
- data/test/test_helper.rb +5 -7
- data/test/unit/unfuzzle/component_test.rb +36 -0
- data/test/unit/unfuzzle/milestone_test.rb +12 -44
- data/test/unit/unfuzzle/priority_test.rb +25 -0
- data/test/unit/unfuzzle/project_test.rb +17 -37
- data/test/unit/unfuzzle/request_test.rb +3 -13
- data/test/unit/unfuzzle/response_test.rb +0 -28
- data/test/unit/unfuzzle/severity_test.rb +36 -0
- data/test/unit/unfuzzle/ticket_test.rb +108 -47
- metadata +21 -12
- data/lib/unfuzzle/model.rb +0 -56
- data/test/fixtures/milestone.json +0 -11
- data/test/fixtures/milestones.json +0 -22
- data/test/fixtures/project.json +0 -16
- data/test/fixtures/projects.json +0 -32
- data/test/fixtures/tickets.json +0 -44
- data/test/unit/unfuzzle/model_test.rb +0 -55
data/lib/unfuzzle/model.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
module Unfuzzle
|
2
|
-
module Model # :nodoc:
|
3
|
-
|
4
|
-
module ClassMethods
|
5
|
-
def attribute(name, options = {}) # :nodoc:
|
6
|
-
key = options.delete(:from) || name
|
7
|
-
|
8
|
-
class_eval <<-CODE
|
9
|
-
def #{name}
|
10
|
-
@response_data['#{key}']
|
11
|
-
end
|
12
|
-
|
13
|
-
def #{name}=(value)
|
14
|
-
@response_data['#{key}'] = value
|
15
|
-
end
|
16
|
-
CODE
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
module InstanceMethods
|
21
|
-
|
22
|
-
def initialize(response_data)
|
23
|
-
@response_data = response_data
|
24
|
-
end
|
25
|
-
|
26
|
-
def to_hash
|
27
|
-
@response_data
|
28
|
-
end
|
29
|
-
|
30
|
-
def tag_name
|
31
|
-
full_class_name = self.class.to_s
|
32
|
-
class_name = full_class_name.split('::').last
|
33
|
-
|
34
|
-
class_name.downcase
|
35
|
-
end
|
36
|
-
|
37
|
-
def to_xml
|
38
|
-
xml = Builder::XmlMarkup.new
|
39
|
-
xml.instruct!
|
40
|
-
xml.tag! tag_name do
|
41
|
-
to_hash.each do |attribute, value|
|
42
|
-
xml.tag! attribute, value
|
43
|
-
end
|
44
|
-
end
|
45
|
-
xml.target!
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
49
|
-
|
50
|
-
def self.included(other)
|
51
|
-
other.send(:extend, Unfuzzle::Model::ClassMethods)
|
52
|
-
other.send(:include, Unfuzzle::Model::InstanceMethods)
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
56
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
[{
|
2
|
-
"archived": false,
|
3
|
-
"created_at": "2008-07-30T22:12:37Z",
|
4
|
-
"completed": true,
|
5
|
-
"title": "Milestone 1",
|
6
|
-
"person_responsible_id": 12345,
|
7
|
-
"due_on": "2008-07-30",
|
8
|
-
"updated_at": "2008-12-26T22:32:03Z",
|
9
|
-
"id": 1,
|
10
|
-
"project_id": 1
|
11
|
-
},
|
12
|
-
{
|
13
|
-
"archived": false,
|
14
|
-
"created_at": "2009-02-09T15:15:30Z",
|
15
|
-
"completed": true,
|
16
|
-
"title": "Milestone 2",
|
17
|
-
"person_responsible_id": 12344,
|
18
|
-
"due_on": "2009-02-13",
|
19
|
-
"updated_at": "2009-02-17T15:37:01Z",
|
20
|
-
"id": 2,
|
21
|
-
"project_id": 1
|
22
|
-
}]
|
data/test/fixtures/project.json
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"archived": false,
|
3
|
-
"short_name": "blip",
|
4
|
-
"created_at": "2008-07-28T16:57:10Z",
|
5
|
-
"title": "Blip Bleep Co.",
|
6
|
-
"close_ticket_simultaneously_default": true,
|
7
|
-
"account_id": 1,
|
8
|
-
"description": "This is the project for Blip Bleep Co.",
|
9
|
-
"enable_time_tracking": true,
|
10
|
-
"default_ticket_report_id": 0,
|
11
|
-
"updated_at": "2009-04-28T18:48:52Z",
|
12
|
-
"id": 1,
|
13
|
-
"theme": "teal",
|
14
|
-
"disk_usage": 1416,
|
15
|
-
"assignee_on_resolve": "none"
|
16
|
-
}
|
data/test/fixtures/projects.json
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
[{
|
2
|
-
"archived": false,
|
3
|
-
"short_name": "aa",
|
4
|
-
"created_at": "2008-07-28T16:57:10Z",
|
5
|
-
"title": "A Client",
|
6
|
-
"close_ticket_simultaneously_default": true,
|
7
|
-
"account_id": 12345,
|
8
|
-
"description": "A great project",
|
9
|
-
"enable_time_tracking": true,
|
10
|
-
"default_ticket_report_id": 0,
|
11
|
-
"updated_at": "2009-04-28T18:48:52Z",
|
12
|
-
"id": 1,
|
13
|
-
"theme": "teal",
|
14
|
-
"disk_usage": 1416,
|
15
|
-
"assignee_on_resolve": "none"
|
16
|
-
},
|
17
|
-
{
|
18
|
-
"archived": true,
|
19
|
-
"short_name": "zz",
|
20
|
-
"created_at": "2008-06-23T21:06:01Z",
|
21
|
-
"title": "Zee Client",
|
22
|
-
"close_ticket_simultaneously_default": false,
|
23
|
-
"account_id": 12345,
|
24
|
-
"description": null,
|
25
|
-
"enable_time_tracking": true,
|
26
|
-
"default_ticket_report_id": null,
|
27
|
-
"updated_at": "2009-05-20T23:15:24Z",
|
28
|
-
"id": 2,
|
29
|
-
"theme": "grey",
|
30
|
-
"disk_usage": 14008,
|
31
|
-
"assignee_on_resolve": "reporter"
|
32
|
-
}]
|
data/test/fixtures/tickets.json
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
[{
|
2
|
-
"severity_id": null,
|
3
|
-
"hours_estimate_current": 0.0,
|
4
|
-
"resolution_description": "",
|
5
|
-
"reporter_id": 1,
|
6
|
-
"created_at": "2008-11-25T14:00:19Z",
|
7
|
-
"priority": "4",
|
8
|
-
"number": 1,
|
9
|
-
"milestone_id": 1,
|
10
|
-
"description": "Do something important",
|
11
|
-
"assignee_id": null,
|
12
|
-
"due_on": null,
|
13
|
-
"status": "closed",
|
14
|
-
"summary": "Ticket #1",
|
15
|
-
"resolution": "fixed",
|
16
|
-
"component_id": null,
|
17
|
-
"version_id": null,
|
18
|
-
"updated_at": "2008-12-31T15:51:41Z",
|
19
|
-
"id": 1,
|
20
|
-
"project_id": 1,
|
21
|
-
"hours_estimate_initial": 1.75
|
22
|
-
},
|
23
|
-
{
|
24
|
-
"severity_id": null,
|
25
|
-
"hours_estimate_current": 0.25,
|
26
|
-
"resolution_description": "",
|
27
|
-
"reporter_id": 1,
|
28
|
-
"created_at": "2009-02-09T15:17:52Z",
|
29
|
-
"priority": "3",
|
30
|
-
"number": 2,
|
31
|
-
"milestone_id": 1,
|
32
|
-
"description": "Do something else important",
|
33
|
-
"assignee_id": null,
|
34
|
-
"due_on": null,
|
35
|
-
"status": "closed",
|
36
|
-
"summary": "Ticket #2",
|
37
|
-
"resolution": "fixed",
|
38
|
-
"component_id": null,
|
39
|
-
"version_id": null,
|
40
|
-
"updated_at": "2009-02-17T15:36:40Z",
|
41
|
-
"id": 2,
|
42
|
-
"project_id": 1,
|
43
|
-
"hours_estimate_initial": 0.0
|
44
|
-
}]
|
@@ -1,55 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../test_helper'
|
2
|
-
|
3
|
-
class MyModel
|
4
|
-
include Unfuzzle::Model
|
5
|
-
attribute :foo
|
6
|
-
end
|
7
|
-
|
8
|
-
module MyModule
|
9
|
-
class MyModel
|
10
|
-
include Unfuzzle::Model
|
11
|
-
attribute :bar
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
module Unfuzzle
|
16
|
-
class ModelTest < Test::Unit::TestCase
|
17
|
-
|
18
|
-
context "An instance of the MyModel class" do
|
19
|
-
should "have an accessor for :foo" do
|
20
|
-
m = MyModel.new({})
|
21
|
-
m.foo = 'bar'
|
22
|
-
m.foo.should == 'bar'
|
23
|
-
end
|
24
|
-
|
25
|
-
should "be able to generate a hash representation of its data" do
|
26
|
-
m = MyModel.new('foo' => 'bar')
|
27
|
-
m.to_hash.should == {'foo' => 'bar'}
|
28
|
-
end
|
29
|
-
|
30
|
-
should "be able to generate its tag name when the class is not namespaced" do
|
31
|
-
m = MyModel.new({})
|
32
|
-
m.tag_name.should == 'mymodel'
|
33
|
-
end
|
34
|
-
|
35
|
-
should "be able to generate its tag name when the class is namespaced" do
|
36
|
-
m = MyModule::MyModel.new({})
|
37
|
-
m.tag_name.should == 'mymodel'
|
38
|
-
end
|
39
|
-
|
40
|
-
should "be able to generate an XML representation of its data" do
|
41
|
-
m = MyModel.new('foo' => 'bar')
|
42
|
-
m.foo = 'bar'
|
43
|
-
|
44
|
-
xml = <<-XML
|
45
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
46
|
-
|
47
|
-
XML
|
48
|
-
|
49
|
-
m.to_xml.should == '<?xml version="1.0" encoding="UTF-8"?><mymodel><foo>bar</foo></mymodel>'
|
50
|
-
end
|
51
|
-
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
55
|
-
end
|