thumbtack 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/lib/thumbtack/client.rb +70 -0
  3. data/lib/thumbtack/note.rb +35 -0
  4. data/lib/thumbtack/note_summary.rb +35 -0
  5. data/lib/thumbtack/notes.rb +26 -0
  6. data/lib/thumbtack/post.rb +37 -0
  7. data/lib/thumbtack/posts.rb +186 -0
  8. data/lib/thumbtack/specification.rb +31 -0
  9. data/lib/thumbtack/tags.rb +45 -0
  10. data/lib/thumbtack/types/boolean.rb +52 -0
  11. data/lib/thumbtack/types/date.rb +47 -0
  12. data/lib/thumbtack/types/date_time.rb +49 -0
  13. data/lib/thumbtack/types/identity.rb +26 -0
  14. data/lib/thumbtack/types/integer.rb +27 -0
  15. data/lib/thumbtack/types/md5.rb +30 -0
  16. data/lib/thumbtack/types/tags.rb +53 -0
  17. data/lib/thumbtack/types/text.rb +26 -0
  18. data/lib/thumbtack/types/title.rb +26 -0
  19. data/lib/thumbtack/types/url.rb +26 -0
  20. data/lib/thumbtack/types.rb +10 -0
  21. data/lib/thumbtack/user.rb +23 -0
  22. data/lib/thumbtack/version.rb +6 -0
  23. data/lib/thumbtack.rb +32 -0
  24. data/test/test_helper.rb +18 -0
  25. data/test/thumbtack/client_test.rb +35 -0
  26. data/test/thumbtack/note_summary_test.rb +24 -0
  27. data/test/thumbtack/note_test.rb +26 -0
  28. data/test/thumbtack/notes_test.rb +61 -0
  29. data/test/thumbtack/post_test.rb +30 -0
  30. data/test/thumbtack/posts_test.rb +178 -0
  31. data/test/thumbtack/specification_test.rb +15 -0
  32. data/test/thumbtack/tags_test.rb +56 -0
  33. data/test/thumbtack/types/boolean_test.rb +28 -0
  34. data/test/thumbtack/types/date_test.rb +27 -0
  35. data/test/thumbtack/types/date_time_test.rb +27 -0
  36. data/test/thumbtack/types/identity_test.rb +18 -0
  37. data/test/thumbtack/types/integer_test.rb +26 -0
  38. data/test/thumbtack/types/md5_test.rb +28 -0
  39. data/test/thumbtack/types/tags_test.rb +29 -0
  40. data/test/thumbtack/types/text_test.rb +22 -0
  41. data/test/thumbtack/types/title_test.rb +22 -0
  42. data/test/thumbtack/types/url_test.rb +23 -0
  43. data/test/thumbtack/user_test.rb +29 -0
  44. metadata +162 -0
@@ -0,0 +1,56 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+
5
+ class TagsTest < Minitest::Test
6
+ def mock_client(url, params, response)
7
+ client = Minitest::Mock.new
8
+ client.expect(:get, response, [url, params].compact)
9
+ client
10
+ end
11
+
12
+ def test_update
13
+ client = mock_client('/tags/get',
14
+ nil,
15
+ {
16
+ 'activedesktop' => '1',
17
+ 'business' => '1',
18
+ 'radio' => '3',
19
+ 'xml' => '5',
20
+ 'xp' => '1',
21
+ 'xpi' => '1',
22
+ })
23
+ tags = Tags.new(client)
24
+
25
+ assert_equal({
26
+ 'activedesktop' => 1,
27
+ 'business' => 1,
28
+ 'radio' => 3,
29
+ 'xml' => 5,
30
+ 'xp' => 1,
31
+ 'xpi' => 1,
32
+ }, tags.get)
33
+
34
+ client.verify
35
+ end
36
+
37
+ def test_delete
38
+ client = mock_client('/tags/delete',
39
+ { tag: 'argentina' },
40
+ { 'result_code' => 'done' })
41
+ tags = Tags.new(client)
42
+
43
+ assert_equal tags, tags.delete('argentina')
44
+ client.verify
45
+ end
46
+
47
+ def test_rename
48
+ client = mock_client('/tags/rename',
49
+ { old: 'argentina', new: 'evita' },
50
+ { 'result_code' => 'done' })
51
+ tags = Tags.new(client)
52
+
53
+ assert_equal tags, tags.rename('argentina', 'evita')
54
+ client.verify
55
+ end
56
+ end
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+
5
+ class BooleanTest < Minitest::Test
6
+ def test_validate
7
+ assert_equal Types::Boolean, Types::Boolean.validate(true)
8
+ assert_equal Types::Boolean, Types::Boolean.validate(false)
9
+
10
+ assert_raises(Types::ValidationError) do
11
+ Types::Boolean.validate('nope')
12
+ end
13
+
14
+ assert_raises(Types::ValidationError) do
15
+ Types::Boolean.validate(nil)
16
+ end
17
+ end
18
+
19
+ def test_to_parameter
20
+ assert_equal 'yes', Types::Boolean.to_parameter(true)
21
+ assert_equal 'no', Types::Boolean.to_parameter(false)
22
+ end
23
+
24
+ def test_from_parameter
25
+ assert_equal true, Types::Boolean.from_parameter('yes')
26
+ assert_equal false, Types::Boolean.from_parameter('no')
27
+ end
28
+ end
@@ -0,0 +1,27 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+
5
+ class DateTest < Minitest::Test
6
+ def test_validate
7
+ assert_equal Types::Date, Types::Date.validate(::Date.today)
8
+
9
+ assert_raises(Types::ValidationError) do
10
+ Types::Date.validate ::Date.new(0, 1, 1)
11
+ end
12
+
13
+ assert_raises(Types::ValidationError) do
14
+ Types::Date.validate ::Date.new(2101, 1, 1)
15
+ end
16
+ end
17
+
18
+ def test_to_parameter
19
+ assert_equal '2010-12-11',
20
+ Types::Date.to_parameter(::Date.new(2010, 12, 11))
21
+ end
22
+
23
+ def test_from_parameter
24
+ assert_equal ::Date.new(2010, 12, 11),
25
+ Types::Date.from_parameter('2010-12-11')
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+
5
+ class DateTimeTest < Minitest::Test
6
+ def test_validate
7
+ assert_equal Types::DateTime, Types::DateTime.validate(::DateTime.now)
8
+
9
+ assert_raises(Types::ValidationError) do
10
+ Types::DateTime.validate ::DateTime.new(0, 1, 1)
11
+ end
12
+
13
+ assert_raises(Types::ValidationError) do
14
+ Types::DateTime.validate ::DateTime.new(2101, 1, 1)
15
+ end
16
+ end
17
+
18
+ def test_to_parameter
19
+ assert_equal '2010-12-11T19:48:02Z',
20
+ Types::DateTime.to_parameter(::DateTime.new(2010, 12, 11, 19, 48, 2))
21
+ end
22
+
23
+ def test_from_parameter
24
+ assert_equal ::DateTime.new(2010, 12, 11, 19, 48, 2),
25
+ Types::DateTime.from_parameter('2010-12-11T19:48:02Z')
26
+ end
27
+ end
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+
5
+ class IdentityTest < Minitest::Test
6
+ def test_validate
7
+ assert_equal Types::Identity, Types::Identity.validate('any value')
8
+ end
9
+
10
+ def test_to_parameter
11
+ assert_equal 'any value', Types::Identity.to_parameter('any value')
12
+ end
13
+
14
+ def test_from_parameter
15
+ assert_equal 'any parameter',
16
+ Types::Identity.from_parameter('any parameter')
17
+ end
18
+ end
@@ -0,0 +1,26 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+
5
+ class IntegerTest < Minitest::Test
6
+ def test_validate
7
+ assert_equal Types::Integer, Types::Integer.validate(0)
8
+ assert_equal Types::Integer, Types::Integer.validate(2**32)
9
+
10
+ assert_raises(Types::ValidationError) do
11
+ Types::Integer.validate(-1)
12
+ end
13
+
14
+ assert_raises(Types::ValidationError) do
15
+ Types::Integer.validate(2**32 + 1)
16
+ end
17
+ end
18
+
19
+ def test_to_parameter
20
+ assert_equal 42, Types::Integer.to_parameter(42)
21
+ end
22
+
23
+ def test_from_parameter
24
+ assert_equal 42, Types::Integer.from_parameter(42)
25
+ end
26
+ end
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+
5
+ class MD5Test < Minitest::Test
6
+ def test_validate
7
+ assert_equal Types::MD5,
8
+ Types::MD5.validate('437b930db84b8079c2dd804a71936b5f')
9
+
10
+ assert_raises(Types::ValidationError) do
11
+ Types::MD5.validate('0' * 33)
12
+ end
13
+
14
+ assert_raises(Types::ValidationError) do
15
+ Types::MD5.validate('gggggggggggggggggggggggggggggggg')
16
+ end
17
+ end
18
+
19
+ def test_to_parameter
20
+ assert_equal '437b930db84b8079c2dd804a71936b5f',
21
+ Types::MD5.to_parameter('437b930db84b8079c2dd804a71936b5f')
22
+ end
23
+
24
+ def test_from_parameter
25
+ assert_equal '437b930db84b8079c2dd804a71936b5f',
26
+ Types::MD5.from_parameter('437b930db84b8079c2dd804a71936b5f')
27
+ end
28
+ end
@@ -0,0 +1,29 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+
5
+ class TagsTest < Minitest::Test
6
+ def test_validate
7
+ assert_equal Types::Tags, Types::Tags.validate('argentina')
8
+ assert_equal Types::Tags, Types::Tags.validate(['argentina'])
9
+ assert_equal Types::Tags, Types::Tags.validate(['.private'])
10
+
11
+ assert_raises(Types::ValidationError) do
12
+ Types::Tags.validate [('x' * 256)]
13
+ end
14
+
15
+ assert_raises(Types::ValidationError) do
16
+ Types::Tags.validate ['comma,']
17
+ end
18
+ end
19
+
20
+ def test_to_parameter
21
+ assert_equal 'one', Types::Tags.to_parameter('one')
22
+ assert_equal 'one two', Types::Tags.to_parameter(['one', 'two'])
23
+ assert_equal 'padding', Types::Tags.to_parameter([' padding '])
24
+ end
25
+
26
+ def test_from_parameter
27
+ assert_equal ['one', 'two'], Types::Tags.from_parameter('one two')
28
+ end
29
+ end
@@ -0,0 +1,22 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+
5
+ class TextTest < Minitest::Test
6
+ def test_validate
7
+ assert_equal Types::Text, Types::Text.validate('')
8
+ assert_equal Types::Text, Types::Text.validate('x' * 65536)
9
+
10
+ assert_raises(Types::ValidationError) do
11
+ Types::Text.validate('x' * 65537)
12
+ end
13
+ end
14
+
15
+ def test_to_parameter
16
+ assert_equal 'text', Types::Text.to_parameter('text')
17
+ end
18
+
19
+ def test_from_parameter
20
+ assert_equal 'text', Types::Text.from_parameter('text')
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+
5
+ class TitleTest < Minitest::Test
6
+ def test_validate
7
+ assert_equal Types::Title, Types::Title.validate('')
8
+ assert_equal Types::Title, Types::Title.validate('x' * 255)
9
+
10
+ assert_raises(Types::ValidationError) do
11
+ Types::Title.validate('x' * 256)
12
+ end
13
+ end
14
+
15
+ def test_to_parameter
16
+ assert_equal 'title', Types::Title.to_parameter('title')
17
+ end
18
+
19
+ def test_from_parameter
20
+ assert_equal 'title', Types::Title.from_parameter('title')
21
+ end
22
+ end
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+
5
+ class URLTest < Minitest::Test
6
+ def test_validate
7
+ assert_equal Types::URL, Types::URL.validate('http://pinboard.in')
8
+
9
+ assert_raises(Types::ValidationError) do
10
+ Types::URL.validate('scp://pinboard.in')
11
+ end
12
+ end
13
+
14
+ def test_to_parameter
15
+ value = 'http://pinboard.in'
16
+ assert_equal value, Types::URL.to_parameter(value)
17
+ end
18
+
19
+ def test_from_parameter
20
+ value = 'http://pinboard.in'
21
+ assert_equal value, Types::URL.from_parameter(value)
22
+ end
23
+ end
@@ -0,0 +1,29 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+
5
+ class UserTest < Minitest::Test
6
+ def mock_client(url, params, response)
7
+ client = Minitest::Mock.new
8
+ client.expect(:get, response, [url, params].compact)
9
+ client
10
+ end
11
+
12
+ def test_secret
13
+ client = mock_client('/user/secret',
14
+ nil,
15
+ { 'result' => '6493a84f72d86e7de130' })
16
+ user = User.new(client)
17
+
18
+ assert_equal '6493a84f72d86e7de130', user.secret
19
+ end
20
+
21
+ def test_api_token
22
+ client = mock_client('/user/api_token',
23
+ nil,
24
+ { 'result' => 'XOG86E7JIYMI' })
25
+ user = User.new(client)
26
+
27
+ assert_equal 'XOG86E7JIYMI', user.api_token
28
+ end
29
+ end
metadata ADDED
@@ -0,0 +1,162 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: thumbtack
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Nate Smith
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-08-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.6.2
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.6.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 5.3.5
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 5.3.5
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 10.3.2
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 10.3.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: rdoc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 4.1.1
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 4.1.1
69
+ description: Thumbtack is a simple wrapper for the Pinboard API
70
+ email:
71
+ - nwjsmith@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - lib/thumbtack.rb
77
+ - lib/thumbtack/client.rb
78
+ - lib/thumbtack/note.rb
79
+ - lib/thumbtack/note_summary.rb
80
+ - lib/thumbtack/notes.rb
81
+ - lib/thumbtack/post.rb
82
+ - lib/thumbtack/posts.rb
83
+ - lib/thumbtack/specification.rb
84
+ - lib/thumbtack/tags.rb
85
+ - lib/thumbtack/types.rb
86
+ - lib/thumbtack/types/boolean.rb
87
+ - lib/thumbtack/types/date.rb
88
+ - lib/thumbtack/types/date_time.rb
89
+ - lib/thumbtack/types/identity.rb
90
+ - lib/thumbtack/types/integer.rb
91
+ - lib/thumbtack/types/md5.rb
92
+ - lib/thumbtack/types/tags.rb
93
+ - lib/thumbtack/types/text.rb
94
+ - lib/thumbtack/types/title.rb
95
+ - lib/thumbtack/types/url.rb
96
+ - lib/thumbtack/user.rb
97
+ - lib/thumbtack/version.rb
98
+ - test/test_helper.rb
99
+ - test/thumbtack/client_test.rb
100
+ - test/thumbtack/note_summary_test.rb
101
+ - test/thumbtack/note_test.rb
102
+ - test/thumbtack/notes_test.rb
103
+ - test/thumbtack/post_test.rb
104
+ - test/thumbtack/posts_test.rb
105
+ - test/thumbtack/specification_test.rb
106
+ - test/thumbtack/tags_test.rb
107
+ - test/thumbtack/types/boolean_test.rb
108
+ - test/thumbtack/types/date_test.rb
109
+ - test/thumbtack/types/date_time_test.rb
110
+ - test/thumbtack/types/identity_test.rb
111
+ - test/thumbtack/types/integer_test.rb
112
+ - test/thumbtack/types/md5_test.rb
113
+ - test/thumbtack/types/tags_test.rb
114
+ - test/thumbtack/types/text_test.rb
115
+ - test/thumbtack/types/title_test.rb
116
+ - test/thumbtack/types/url_test.rb
117
+ - test/thumbtack/user_test.rb
118
+ homepage: https://github.com/nwjsmith/thumbtack
119
+ licenses:
120
+ - MIT
121
+ metadata: {}
122
+ post_install_message:
123
+ rdoc_options: []
124
+ require_paths:
125
+ - lib
126
+ required_ruby_version: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ required_rubygems_version: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ requirements: []
137
+ rubyforge_project:
138
+ rubygems_version: 2.3.0
139
+ signing_key:
140
+ specification_version: 4
141
+ summary: The best Pinboard API client
142
+ test_files:
143
+ - test/test_helper.rb
144
+ - test/thumbtack/client_test.rb
145
+ - test/thumbtack/note_summary_test.rb
146
+ - test/thumbtack/note_test.rb
147
+ - test/thumbtack/notes_test.rb
148
+ - test/thumbtack/post_test.rb
149
+ - test/thumbtack/posts_test.rb
150
+ - test/thumbtack/specification_test.rb
151
+ - test/thumbtack/tags_test.rb
152
+ - test/thumbtack/types/boolean_test.rb
153
+ - test/thumbtack/types/date_test.rb
154
+ - test/thumbtack/types/date_time_test.rb
155
+ - test/thumbtack/types/identity_test.rb
156
+ - test/thumbtack/types/integer_test.rb
157
+ - test/thumbtack/types/md5_test.rb
158
+ - test/thumbtack/types/tags_test.rb
159
+ - test/thumbtack/types/text_test.rb
160
+ - test/thumbtack/types/title_test.rb
161
+ - test/thumbtack/types/url_test.rb
162
+ - test/thumbtack/user_test.rb