typekit-client 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +5 -3
- data/.travis.yml +4 -0
- data/.yardopts +6 -0
- data/CHANGELOG.md +12 -0
- data/Guardfile +21 -3
- data/README.md +253 -248
- data/bin/typekit-client +16 -16
- data/bin/typekit-publisher +6 -5
- data/lib/typekit.rb +6 -2
- data/lib/typekit/client.rb +66 -24
- data/lib/typekit/collection.rb +6 -11
- data/lib/typekit/collection/base.rb +40 -0
- data/lib/typekit/collection/serialization.rb +17 -0
- data/lib/typekit/converter.rb +26 -0
- data/lib/typekit/converter/boolean.rb +12 -0
- data/lib/typekit/converter/collection.rb +13 -0
- data/lib/typekit/converter/datetime.rb +12 -0
- data/lib/typekit/converter/element.rb +13 -0
- data/lib/typekit/converter/errors.rb +12 -0
- data/lib/typekit/converter/unknown.rb +13 -0
- data/lib/typekit/core.rb +8 -10
- data/lib/typekit/element.rb +27 -0
- data/lib/typekit/element/association.rb +63 -0
- data/lib/typekit/element/base.rb +61 -0
- data/lib/typekit/element/persistence.rb +61 -0
- data/lib/typekit/element/query.rb +25 -0
- data/lib/typekit/element/serialization.rb +17 -0
- data/lib/typekit/error.rb +23 -0
- data/lib/typekit/helper.rb +59 -10
- data/lib/typekit/record.rb +18 -22
- data/lib/typekit/record/family.rb +24 -1
- data/lib/typekit/record/kit.rb +29 -1
- data/lib/typekit/record/library.rb +4 -1
- data/lib/typekit/record/variation.rb +13 -1
- data/lib/typekit/version.rb +1 -1
- data/spec/feature/create_kit_spec.rb +52 -0
- data/spec/feature/delete_kit_spec.rb +33 -0
- data/spec/feature/index_kits_spec.rb +55 -0
- data/spec/feature/publish_kit_spec.rb +15 -0
- data/spec/feature/show_family_spec.rb +75 -0
- data/spec/feature/show_kit_spec.rb +56 -0
- data/spec/feature/show_library_spec.rb +29 -0
- data/spec/feature/show_variation_spec.rb +18 -0
- data/spec/feature/update_kit_spec.rb +88 -0
- data/spec/fixture/cassette/create_kits_bad.yml +16 -0
- data/spec/fixture/cassette/create_kits_ok.yml +16 -0
- data/spec/fixture/cassette/delete_kits_xxx_not_found.yml +13 -0
- data/spec/{cassettes → fixture/cassette}/delete_kits_xxx_ok.yml +0 -3
- data/spec/fixture/cassette/index_kits_show_kit_xxx_ok.yml +25 -0
- data/spec/{cassettes → fixture/cassette}/index_kits_unauthorized.yml +0 -3
- data/spec/{cassettes → fixture/cassette}/show_families_xxx_found.yml +0 -3
- data/spec/{cassettes → fixture/cassette}/show_families_xxx_ok.yml +0 -3
- data/spec/{cassettes → fixture/cassette}/show_families_xxx_yyy_ok.yml +0 -3
- data/spec/fixture/cassette/show_families_yyy_update_kits_xxx_families_ok.yml +35 -0
- data/spec/fixture/cassette/show_kits_xxx_families_yyy_show_family_yyy_ok.yml +45 -0
- data/spec/fixture/cassette/show_kits_xxx_not_found.yml +13 -0
- data/spec/fixture/cassette/show_kits_xxx_show_family_yyy_ok.yml +46 -0
- data/spec/{cassettes → fixture/cassette}/show_libraries_xxx_ok.yml +0 -3
- data/spec/fixture/cassette/update_kits_xxx_empty_families_ok.yml +16 -0
- data/spec/fixture/cassette/update_kits_xxx_families_ok.yml +18 -0
- data/spec/fixture/cassette/update_kits_xxx_families_variations_ok.yml +18 -0
- data/spec/fixture/cassette/update_kits_xxx_name_ok.yml +17 -0
- data/spec/fixture/cassette/update_kits_xxx_publish_ok.yml +16 -0
- data/spec/fixture/record/article.rb +11 -0
- data/spec/fixture/record/section.rb +10 -0
- data/spec/lib/typekit/collection_spec.rb +22 -0
- data/spec/{typekit/processing → lib/typekit}/converter_spec.rb +13 -13
- data/spec/lib/typekit/element/association_spec.rb +96 -0
- data/spec/lib/typekit/element/base_spec.rb +70 -0
- data/spec/lib/typekit/element/persistence_spec.rb +97 -0
- data/spec/lib/typekit/element/serialization_spec.rb +28 -0
- data/spec/lib/typekit/element_spec.rb +58 -0
- data/spec/{typekit → lib/typekit}/helper_spec.rb +6 -8
- data/spec/lib/typekit/record_spec.rb +57 -0
- data/spec/spec_helper.rb +10 -3
- data/spec/support/common_helper.rb +5 -0
- data/spec/support/record_helper.rb +38 -0
- data/typekit-client.gemspec +11 -4
- metadata +164 -58
- data/lib/typekit/processing.rb +0 -8
- data/lib/typekit/processing/converter.rb +0 -28
- data/lib/typekit/processing/converter/boolean.rb +0 -14
- data/lib/typekit/processing/converter/collection.rb +0 -18
- data/lib/typekit/processing/converter/datetime.rb +0 -14
- data/lib/typekit/processing/converter/errors.rb +0 -24
- data/lib/typekit/processing/converter/record.rb +0 -16
- data/lib/typekit/processing/converter/unknown.rb +0 -15
- data/lib/typekit/processing/translator.rb +0 -13
- data/lib/typekit/record/base.rb +0 -52
- data/spec/cassettes/index_kits_ok.yml +0 -16
- data/spec/cassettes/show_kits_xxx_families_yyy_ok.yml +0 -16
- data/spec/cassettes/show_kits_xxx_ok.yml +0 -17
- data/spec/features/client/delete_kit_spec.rb +0 -13
- data/spec/features/client/index_kits_spec.rb +0 -25
- data/spec/features/client/show_family_spec.rb +0 -47
- data/spec/features/client/show_kit_spec.rb +0 -18
- data/spec/features/client/show_library_spec.rb +0 -18
- data/spec/features/client/show_variation_spec.rb +0 -22
- data/spec/support/resource_helper.rb +0 -34
- data/spec/typekit/record/base_spec.rb +0 -85
- data/spec/typekit/record_spec.rb +0 -80
@@ -0,0 +1,16 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://typekit.com/api/v1/json/kits
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: name=Megakit
|
9
|
+
response:
|
10
|
+
status:
|
11
|
+
code: 400
|
12
|
+
message: Bad Request
|
13
|
+
body:
|
14
|
+
encoding: UTF-8
|
15
|
+
string: '{"errors":["Missing ''domains'' parameter"]}'
|
16
|
+
recorded_at: Tue, 29 Jul 2014 00:00:00 GMT
|
@@ -0,0 +1,16 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://typekit.com/api/v1/json/kits
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: name=Megakit&domains=localhost
|
9
|
+
response:
|
10
|
+
status:
|
11
|
+
code: 200
|
12
|
+
message: OK
|
13
|
+
body:
|
14
|
+
encoding: UTF-8
|
15
|
+
string: '{"kit":{"id":"xxx","name":"Megakit","analytics":false,"badge":true,"domains":["localhost"],"families":[]}}'
|
16
|
+
recorded_at: Mon, 16 Jun 2014 00:00:00 GMT
|
@@ -0,0 +1,13 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: delete
|
5
|
+
uri: https://typekit.com/api/v1/json/kits/xxx
|
6
|
+
response:
|
7
|
+
status:
|
8
|
+
code: 404
|
9
|
+
message: Not Found
|
10
|
+
body:
|
11
|
+
encoding: UTF-8
|
12
|
+
string: '{"errors":["Not Found"]}'
|
13
|
+
recorded_at: Thu, 12 Jun 2014 00:00:00 GMT
|
@@ -0,0 +1,25 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://typekit.com/api/v1/json/kits
|
6
|
+
response:
|
7
|
+
status:
|
8
|
+
code: 200
|
9
|
+
message: OK
|
10
|
+
body:
|
11
|
+
encoding: UTF-8
|
12
|
+
string: '{"kits":[{"id":"xxx","link":"/api/v1/json/kits/xxx"},{"id":"yyy","link":"/api/v1/json/kits/yyy"},{"id":"zzz","link":"/api/v1/json/kits/zzz"}]}'
|
13
|
+
recorded_at: Mon, 21 Jul 2014 00:00:00 GMT
|
14
|
+
- request:
|
15
|
+
method: get
|
16
|
+
uri: https://typekit.com/api/v1/json/kits/xxx
|
17
|
+
response:
|
18
|
+
status:
|
19
|
+
code: 200
|
20
|
+
message: OK
|
21
|
+
body:
|
22
|
+
encoding: UTF-8
|
23
|
+
string: '{"kit":{"id":"xxx","name":"Megakit","analytics":false,"badge":false,"domains":["localhost"],"families":[{"id":"vcsm","name":"Proxima
|
24
|
+
Nova","slug":"proxima-nova","css_names":["proxima-nova"],"css_stack":"\"proxima-nova\",sans-serif","subset":"default","variations":["n1","n3","n4"]},{"id":"vybr","name":"Calluna","slug":"calluna","css_names":["calluna"],"css_stack":"\"calluna\",serif","subset":"default","variations":["n4","i4"]}]}}'
|
25
|
+
recorded_at: Mon, 21 Jul 2014 00:00:00 GMT
|
@@ -7,9 +7,6 @@ http_interactions:
|
|
7
7
|
status:
|
8
8
|
code: 200
|
9
9
|
message: OK
|
10
|
-
headers:
|
11
|
-
Status:
|
12
|
-
- 200 OK
|
13
10
|
body:
|
14
11
|
encoding: UTF-8
|
15
12
|
string: '{"family":{"id":"vybr","name":"Calluna","slug":"calluna","web_link":"http://typekit.com/fonts/calluna","browse_info":{"capitals":["uppercase-lowercase"],"classification":["serif"],"contrast":["regular"],"language":["ca","cs","de","en","es","fr","it","mt","nl","pl","pt","sl","sv"],"number_style":["lowercase"],"recommended_for":["paragraphs"],"weight":["heavy","regular"],"width":["regular"],"x_height":["regular"]},"css_stack":"serif","description":"Calluna
|
@@ -7,9 +7,6 @@ http_interactions:
|
|
7
7
|
status:
|
8
8
|
code: 200
|
9
9
|
message: OK
|
10
|
-
headers:
|
11
|
-
Status:
|
12
|
-
- 200 OK
|
13
10
|
body:
|
14
11
|
encoding: UTF-8
|
15
12
|
string: '{"variation":{"id":"vcsm:i9","name":"Proxima Nova Black Italic","family":{"id":"vcsm","link":"/api/v1/json/families/vcsm","name":"Proxima
|
@@ -0,0 +1,35 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://typekit.com/api/v1/json/families/gkmg
|
6
|
+
response:
|
7
|
+
status:
|
8
|
+
code: 200
|
9
|
+
message: OK
|
10
|
+
body:
|
11
|
+
encoding: US-ASCII
|
12
|
+
string: ! '{"family":{"id":"gkmg","name":"Droid Sans","slug":"droid-sans","web_link":"http://typekit.com/fonts/droid-sans","browse_info":{"capitals":["uppercase-lowercase"],"classification":["sans-serif"],"contrast":["regular"],"language":["ca","cs","de","en","es","fr","it","mt","nl","pl","pt","ru","sl","sv"],"number_style":["uppercase"],"recommended_for":["paragraphs"],"weight":["regular"],"width":["regular"],"x_height":["high"]},"css_stack":"sans-serif","description":null,"foundry":{"name":"Google
|
13
|
+
Android","slug":"google-android"},"libraries":[{"id":"trial","link":"/api/v1/json/libraries/trial","name":"Trial
|
14
|
+
Library"},{"id":"personal","link":"/api/v1/json/libraries/personal","name":"Personal
|
15
|
+
Library"},{"id":"full","link":"/api/v1/json/libraries/full","name":"Full Library"},{"id":"enterprise","link":"/api/v1/json/libraries/enterprise","name":"Enterprise
|
16
|
+
Library"}],"variations":[{"id":"gkmg:n4","link":"/api/v1/json/families/gkmg/n4","name":"Droid
|
17
|
+
Sans Regular","fvd":"n4"},{"id":"gkmg:n7","link":"/api/v1/json/families/gkmg/n7","name":"Droid
|
18
|
+
Sans Bold","fvd":"n7"}]}}'
|
19
|
+
recorded_at: Thu, 24 Jul 2014 00:00:00 GMT
|
20
|
+
- request:
|
21
|
+
method: post
|
22
|
+
uri: https://typekit.com/api/v1/json/kits/xxx
|
23
|
+
body:
|
24
|
+
encoding: UTF-8
|
25
|
+
string: id=xxx&name=Megakit&analytics=false&badge=true&domains[]=localhost&families[0][id]=vqgt&families[0][subset]=all&families[0][variations][]=n4&families[1][id]=gkmg&families[1][variations][]=n4&families[1][variations][]=n7
|
26
|
+
response:
|
27
|
+
status:
|
28
|
+
code: 200
|
29
|
+
message: OK
|
30
|
+
body:
|
31
|
+
encoding: US-ASCII
|
32
|
+
string: ! '{"kit":{"id":"xxx","name":"Megakit","analytics":false,"domains":["localhost"],"families":[{"id":"gkmg","name":"Droid
|
33
|
+
Sans","slug":"droid-sans","css_names":["droid-sans-1","droid-sans-2"],"css_stack":"\"droid-sans-1\",\"droid-sans-2\",sans-serif","subset":"default","variations":["n4","n7"]},{"id":"vqgt","name":"Droid
|
34
|
+
Sans Mono","slug":"droid-sans-mono","css_names":["droid-sans-mono-1","droid-sans-mono-2"],"css_stack":"\"droid-sans-mono-1\",\"droid-sans-mono-2\",sans-serif","subset":"all","variations":["n4"]}]}}'
|
35
|
+
recorded_at: Thu, 24 Jul 2014 00:00:00 GMT
|
@@ -0,0 +1,45 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://typekit.com/api/v1/json/kits/xxx/families/yyy
|
6
|
+
response:
|
7
|
+
status:
|
8
|
+
code: 200
|
9
|
+
message: OK
|
10
|
+
body:
|
11
|
+
encoding: UTF-8
|
12
|
+
string: '{"family":{"id":"vcsm","name":"Proxima Nova","slug":"proxima-nova","css_names":["proxima-nova"],"css_stack":"\"proxima-nova\",sans-serif","subset":"default","variations":["n1","n3","n4"]}}'
|
13
|
+
recorded_at: Wed, 23 Jul 2014 00:00:00 GMT
|
14
|
+
- request:
|
15
|
+
method: get
|
16
|
+
uri: https://typekit.com/api/v1/json/families/vcsm
|
17
|
+
response:
|
18
|
+
status:
|
19
|
+
code: 200
|
20
|
+
message: OK
|
21
|
+
body:
|
22
|
+
encoding: UTF-8
|
23
|
+
string: '{"family":{"id":"vcsm","name":"Proxima Nova","slug":"proxima-nova","web_link":"http://typekit.com/fonts/proxima-nova","browse_info":{"capitals":["uppercase-lowercase"],"classification":["sans-serif"],"contrast":["low"],"language":["ca","cs","de","en","es","fr","it","mt","nl","pl","pt","ru","sl","sv"],"number_style":["uppercase"],"recommended_for":["headings","paragraphs"],"weight":["heavy","light","regular"],"width":["regular"],"x_height":["high"]},"css_stack":"sans-serif","description":"Proxima
|
24
|
+
Nova (2005) is a complete reworking of Proxima Sans (1994). The original six
|
25
|
+
fonts (three weights with italics) have been expanded to 42 full-featured
|
26
|
+
OpenType fonts.\r\nProxima Nova straddles the gap between typefaces like Futura
|
27
|
+
and Akzidenz Grotesk. The result is a hybrid combining humanistic proportions
|
28
|
+
with a somewhat geometric appearance.","foundry":{"name":"Mark Simonson Studio","slug":"mark-simonson-studio"},"libraries":[{"id":"full","link":"/api/v1/json/libraries/full","name":"Full
|
29
|
+
Library"},{"id":"enterprise","link":"/api/v1/json/libraries/enterprise","name":"Enterprise
|
30
|
+
Library"}],"variations":[{"id":"vcsm:n1","link":"/api/v1/json/families/vcsm/n1","name":"Proxima
|
31
|
+
Nova Thin","fvd":"n1"},{"id":"vcsm:i1","link":"/api/v1/json/families/vcsm/i1","name":"Proxima
|
32
|
+
Nova Thin Italic","fvd":"i1"},{"id":"vcsm:n3","link":"/api/v1/json/families/vcsm/n3","name":"Proxima
|
33
|
+
Nova Light","fvd":"n3"},{"id":"vcsm:i3","link":"/api/v1/json/families/vcsm/i3","name":"Proxima
|
34
|
+
Nova Light Italic","fvd":"i3"},{"id":"vcsm:n4","link":"/api/v1/json/families/vcsm/n4","name":"Proxima
|
35
|
+
Nova Regular","fvd":"n4"},{"id":"vcsm:i4","link":"/api/v1/json/families/vcsm/i4","name":"Proxima
|
36
|
+
Nova Regular Italic","fvd":"i4"},{"id":"vcsm:n6","link":"/api/v1/json/families/vcsm/n6","name":"Proxima
|
37
|
+
Nova Semibold","fvd":"n6"},{"id":"vcsm:i6","link":"/api/v1/json/families/vcsm/i6","name":"Proxima
|
38
|
+
Nova Semibold Italic","fvd":"i6"},{"id":"vcsm:n7","link":"/api/v1/json/families/vcsm/n7","name":"Proxima
|
39
|
+
Nova Bold","fvd":"n7"},{"id":"vcsm:i7","link":"/api/v1/json/families/vcsm/i7","name":"Proxima
|
40
|
+
Nova Bold Italic","fvd":"i7"},{"id":"vcsm:n8","link":"/api/v1/json/families/vcsm/n8","name":"Proxima
|
41
|
+
Nova Extrabold","fvd":"n8"},{"id":"vcsm:i8","link":"/api/v1/json/families/vcsm/i8","name":"Proxima
|
42
|
+
Nova Extrabold Italic","fvd":"i8"},{"id":"vcsm:n9","link":"/api/v1/json/families/vcsm/n9","name":"Proxima
|
43
|
+
Nova Black","fvd":"n9"},{"id":"vcsm:i9","link":"/api/v1/json/families/vcsm/i9","name":"Proxima
|
44
|
+
Nova Black Italic","fvd":"i9"}]}}'
|
45
|
+
recorded_at: Wed, 23 Jul 2014 00:00:00 GMT
|
@@ -0,0 +1,13 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://typekit.com/api/v1/json/kits/xxx
|
6
|
+
response:
|
7
|
+
status:
|
8
|
+
code: 404
|
9
|
+
message: Not Found
|
10
|
+
body:
|
11
|
+
encoding: UTF-8
|
12
|
+
string: '{"errors":["Not Found"]}'
|
13
|
+
recorded_at: Tue, 17 Jun 2014 00:00:00 GMT
|
@@ -0,0 +1,46 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://typekit.com/api/v1/json/kits/xxx
|
6
|
+
response:
|
7
|
+
status:
|
8
|
+
code: 200
|
9
|
+
message: OK
|
10
|
+
body:
|
11
|
+
encoding: UTF-8
|
12
|
+
string: '{"kit":{"id":"xxx","name":"Megakit","analytics":false,"badge":false,"domains":["localhost"],"families":[{"id":"vcsm","name":"Proxima
|
13
|
+
Nova","slug":"proxima-nova","css_names":["proxima-nova"],"css_stack":"\"proxima-nova\",sans-serif","subset":"default","variations":["n1","n3","n4"]},{"id":"vybr","name":"Calluna","slug":"calluna","css_names":["calluna"],"css_stack":"\"calluna\",serif","subset":"default","variations":["n4","i4"]}]}}'
|
14
|
+
recorded_at: Wed, 23 Jul 2014 00:00:00 GMT
|
15
|
+
- request:
|
16
|
+
method: get
|
17
|
+
uri: https://typekit.com/api/v1/json/families/vcsm
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 200
|
21
|
+
message: OK
|
22
|
+
body:
|
23
|
+
encoding: UTF-8
|
24
|
+
string: '{"family":{"id":"vcsm","name":"Proxima Nova","slug":"proxima-nova","web_link":"http://typekit.com/fonts/proxima-nova","browse_info":{"capitals":["uppercase-lowercase"],"classification":["sans-serif"],"contrast":["low"],"language":["ca","cs","de","en","es","fr","it","mt","nl","pl","pt","ru","sl","sv"],"number_style":["uppercase"],"recommended_for":["headings","paragraphs"],"weight":["heavy","light","regular"],"width":["regular"],"x_height":["high"]},"css_stack":"sans-serif","description":"Proxima
|
25
|
+
Nova (2005) is a complete reworking of Proxima Sans (1994). The original six
|
26
|
+
fonts (three weights with italics) have been expanded to 42 full-featured
|
27
|
+
OpenType fonts.\r\nProxima Nova straddles the gap between typefaces like Futura
|
28
|
+
and Akzidenz Grotesk. The result is a hybrid combining humanistic proportions
|
29
|
+
with a somewhat geometric appearance.","foundry":{"name":"Mark Simonson Studio","slug":"mark-simonson-studio"},"libraries":[{"id":"full","link":"/api/v1/json/libraries/full","name":"Full
|
30
|
+
Library"},{"id":"enterprise","link":"/api/v1/json/libraries/enterprise","name":"Enterprise
|
31
|
+
Library"}],"variations":[{"id":"vcsm:n1","link":"/api/v1/json/families/vcsm/n1","name":"Proxima
|
32
|
+
Nova Thin","fvd":"n1"},{"id":"vcsm:i1","link":"/api/v1/json/families/vcsm/i1","name":"Proxima
|
33
|
+
Nova Thin Italic","fvd":"i1"},{"id":"vcsm:n3","link":"/api/v1/json/families/vcsm/n3","name":"Proxima
|
34
|
+
Nova Light","fvd":"n3"},{"id":"vcsm:i3","link":"/api/v1/json/families/vcsm/i3","name":"Proxima
|
35
|
+
Nova Light Italic","fvd":"i3"},{"id":"vcsm:n4","link":"/api/v1/json/families/vcsm/n4","name":"Proxima
|
36
|
+
Nova Regular","fvd":"n4"},{"id":"vcsm:i4","link":"/api/v1/json/families/vcsm/i4","name":"Proxima
|
37
|
+
Nova Regular Italic","fvd":"i4"},{"id":"vcsm:n6","link":"/api/v1/json/families/vcsm/n6","name":"Proxima
|
38
|
+
Nova Semibold","fvd":"n6"},{"id":"vcsm:i6","link":"/api/v1/json/families/vcsm/i6","name":"Proxima
|
39
|
+
Nova Semibold Italic","fvd":"i6"},{"id":"vcsm:n7","link":"/api/v1/json/families/vcsm/n7","name":"Proxima
|
40
|
+
Nova Bold","fvd":"n7"},{"id":"vcsm:i7","link":"/api/v1/json/families/vcsm/i7","name":"Proxima
|
41
|
+
Nova Bold Italic","fvd":"i7"},{"id":"vcsm:n8","link":"/api/v1/json/families/vcsm/n8","name":"Proxima
|
42
|
+
Nova Extrabold","fvd":"n8"},{"id":"vcsm:i8","link":"/api/v1/json/families/vcsm/i8","name":"Proxima
|
43
|
+
Nova Extrabold Italic","fvd":"i8"},{"id":"vcsm:n9","link":"/api/v1/json/families/vcsm/n9","name":"Proxima
|
44
|
+
Nova Black","fvd":"n9"},{"id":"vcsm:i9","link":"/api/v1/json/families/vcsm/i9","name":"Proxima
|
45
|
+
Nova Black Italic","fvd":"i9"}]}}'
|
46
|
+
recorded_at: Wed, 23 Jul 2014 00:00:00 GMT
|
@@ -0,0 +1,16 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://typekit.com/api/v1/json/kits/xxx
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: id=xxx&name=Megakit&analytics=false&badge=true&domains[]=localhost&families=
|
9
|
+
response:
|
10
|
+
status:
|
11
|
+
code: 200
|
12
|
+
message: OK
|
13
|
+
body:
|
14
|
+
encoding: US-ASCII
|
15
|
+
string: ! '{"kit":{"id":"xxx","name":"Megakit","analytics":false,"domains":["localhost"],"families":[]}}'
|
16
|
+
recorded_at: Thu, 24 Jul 2014 00:00:00 GMT
|
@@ -0,0 +1,18 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://typekit.com/api/v1/json/kits/xxx
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: id=xxx&name=Megakit&analytics=false&badge=true&domains[]=localhost&families[0][id]=vqgt&families[0][subset]=all&families[0][variations][]=n4&families[1][id]=gkmg
|
9
|
+
response:
|
10
|
+
status:
|
11
|
+
code: 200
|
12
|
+
message: OK
|
13
|
+
body:
|
14
|
+
encoding: US-ASCII
|
15
|
+
string: ! '{"kit":{"id":"xxx","name":"Megakit","analytics":false,"badge":true,"domains":["localhost"],"families":[{"id":"gkmg","name":"Droid
|
16
|
+
Sans","slug":"droid-sans","css_names":["droid-sans-1","droid-sans-2"],"css_stack":"\"droid-sans-1\",\"droid-sans-2\",sans-serif","subset":"default","variations":["n4","n7"]},{"id":"vqgt","name":"Droid
|
17
|
+
Sans Mono","slug":"droid-sans-mono","css_names":["droid-sans-mono-1","droid-sans-mono-2"],"css_stack":"\"droid-sans-mono-1\",\"droid-sans-mono-2\",sans-serif","subset":"all","variations":["n4"]}]}}'
|
18
|
+
recorded_at: Thu, 24 Jul 2014 00:00:00 GMT
|
@@ -0,0 +1,18 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://typekit.com/api/v1/json/kits/xxx
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: id=xxx&name=Megakit&analytics=false&badge=true&domains[]=localhost&families[0][id]=vqgt&families[0][subset]=all&families[0][variations][]=n4&families[1][id]=gkmg&families[1][variations][]=n4
|
9
|
+
response:
|
10
|
+
status:
|
11
|
+
code: 200
|
12
|
+
message: OK
|
13
|
+
body:
|
14
|
+
encoding: US-ASCII
|
15
|
+
string: ! '{"kit":{"id":"xxx","name":"Megakit","analytics":false,"domains":["localhost"],"families":[{"id":"gkmg","name":"Droid
|
16
|
+
Sans","slug":"droid-sans","css_names":["droid-sans-1","droid-sans-2"],"css_stack":"\"droid-sans-1\",\"droid-sans-2\",sans-serif","subset":"default","variations":["n4"]},{"id":"vqgt","name":"Droid
|
17
|
+
Sans Mono","slug":"droid-sans-mono","css_names":["droid-sans-mono-1","droid-sans-mono-2"],"css_stack":"\"droid-sans-mono-1\",\"droid-sans-mono-2\",sans-serif","subset":"all","variations":["n4"]}]}}'
|
18
|
+
recorded_at: Thu, 24 Jul 2014 00:00:00 GMT
|
@@ -0,0 +1,17 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://typekit.com/api/v1/json/kits/xxx
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: id=xxx&name=Ultrakit&analytics=false&badge=true&domains[]=localhost&families[0][id]=vqgt&families[0][subset]=all&families[0][variations][]=n4
|
9
|
+
response:
|
10
|
+
status:
|
11
|
+
code: 200
|
12
|
+
message: OK
|
13
|
+
body:
|
14
|
+
encoding: US-ASCII
|
15
|
+
string: ! '{"kit":{"id":"xxx","name":"Ultrakit","analytics":false,"badge":true,"domains":["localhost"],"families":[{"id":"vqgt","name":"Droid
|
16
|
+
Sans Mono","slug":"droid-sans-mono","css_names":["droid-sans-mono-1","droid-sans-mono-2"],"css_stack":"\"droid-sans-mono-1\",\"droid-sans-mono-2\",sans-serif","subset":"all","variations":["n4"]}]}}'
|
17
|
+
recorded_at: Thu, 24 Jul 2014 00:00:00 GMT
|
@@ -0,0 +1,16 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://typekit.com/api/v1/json/kits/xxx/publish
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: ''
|
9
|
+
response:
|
10
|
+
status:
|
11
|
+
code: 200
|
12
|
+
message: OK
|
13
|
+
body:
|
14
|
+
encoding: UTF-8
|
15
|
+
string: '{"published":"2014-07-29T13:32:22Z"}'
|
16
|
+
recorded_at: Tue, 29 Jul 2014 00:00:00 GMT
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'fixture/record/article'
|
3
|
+
|
4
|
+
RSpec.describe Typekit::Collection do
|
5
|
+
let(:article_class) { Fixture::Record::Article }
|
6
|
+
|
7
|
+
describe '.build' do
|
8
|
+
subject { described_module.build(:articles, [{ id: 4 }, { id: 2 }]) }
|
9
|
+
|
10
|
+
it 'creates a Collection' do
|
11
|
+
expect(subject).to be_an_instance_of(described_module::Base)
|
12
|
+
end
|
13
|
+
|
14
|
+
describe 'the Collection' do
|
15
|
+
it 'contains Elements' do
|
16
|
+
subject.each do |element|
|
17
|
+
expect(element).to be_an_instance_of(article_class)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -1,50 +1,50 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
RSpec.describe Typekit::
|
3
|
+
RSpec.describe Typekit::Converter do
|
4
4
|
def create(name)
|
5
|
-
Typekit::
|
5
|
+
Typekit::Converter.build(name)
|
6
6
|
end
|
7
7
|
|
8
8
|
let(:request) { double(code: 200) }
|
9
9
|
|
10
10
|
describe '.build#process' do
|
11
11
|
%w{family kit library}.each do |name|
|
12
|
-
it "maps '#{
|
12
|
+
it "maps '#{name}' to a Element" do
|
13
13
|
result = create(name).process(request, {})
|
14
|
-
expect(result).to be_kind_of(Typekit::
|
14
|
+
expect(result).to be_kind_of(Typekit::Element::Base)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
18
|
%w{families kits libraries}.each do |name|
|
19
|
-
it "maps '#{
|
20
|
-
result = create(name).process(request, [
|
21
|
-
result.each { |r| expect(r).to be_kind_of(Typekit::
|
19
|
+
it "maps '#{name}' to an array of Elements" do
|
20
|
+
result = create(name).process(request, [{}])
|
21
|
+
result.each { |r| expect(r).to be_kind_of(Typekit::Element::Base) }
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
%w{ok}.each do |name|
|
26
|
-
it "maps '#{
|
26
|
+
it "maps '#{name}' to a boolean" do
|
27
27
|
result = create(name).process(request, true)
|
28
28
|
expect(result).to be_kind_of(::TrueClass)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
32
|
%w{published}.each do |name|
|
33
|
-
it "maps '#{
|
33
|
+
it "maps '#{name}' to a datetime" do
|
34
34
|
result = create(name).process(request, '2010-05-20T21:15:31Z')
|
35
35
|
expect(result).to be_kind_of(::DateTime)
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
[
|
40
|
-
it "raises an exception for '#{
|
39
|
+
[nil, 'errors'].each do |name|
|
40
|
+
it "raises an exception for '#{name}'" do
|
41
41
|
expect { create(name).process(request, nil) }.to \
|
42
|
-
raise_error(Typekit::
|
42
|
+
raise_error(Typekit::ServerError)
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
46
|
%w{kittens puppies}.each do |name|
|
47
|
-
it "returns unknowns like '#{
|
47
|
+
it "returns unknowns like '#{name}' as they are" do
|
48
48
|
result = create(name).process(request, 42)
|
49
49
|
expect(result).to eq(name => 42)
|
50
50
|
end
|