{"id":336,"date":"2018-08-11T19:47:40","date_gmt":"2018-08-11T19:47:40","guid":{"rendered":"http:\/\/www.bullcrane.com\/angular\/?p=336"},"modified":"2018-08-11T19:49:40","modified_gmt":"2018-08-11T19:49:40","slug":"tabs-and-some-groundwork-for-testing","status":"publish","type":"post","link":"http:\/\/www.bullcrane.com\/angular\/2018\/08\/11\/tabs-and-some-groundwork-for-testing\/","title":{"rendered":"Tabs, and some groundwork for testing"},"content":{"rendered":"<p>Shufflizer now sports Angular Material tabs along the bottom edge of the window.  This provides a more conventional way to navigate between the app&#8217;s pages and also gives me a place to implement an options\/features page when I get to working on that.<\/p>\n<p>In addition, under the hood I put all the http calls to Spotify into their own service.  This is what the Angular documentation&#8217;s <a href=\"https:\/\/angular.io\/guide\/http\">HTTP page<\/a> recommends.  It helped me implement better error handling, and better positions the code to take advantage of Jasmine and Karma testing (which I learned how to do at the Angular Denver 2018 conference, and am looking forward to trying out in Shufflizer).<\/p>\n<p>One other thing:  immediately upon upload Shufflizer will start playing the playlist in Spotify, if you have a device active, running Spotify.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Shufflizer now sports Angular Material tabs along the bottom edge of the window. This provides a more conventional way to navigate between the app&#8217;s pages and also gives me a place to implement an options\/features page when I get to working on that. In addition, under the hood I put all the http calls to &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.bullcrane.com\/angular\/2018\/08\/11\/tabs-and-some-groundwork-for-testing\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Tabs, and some groundwork for testing&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5,7],"tags":[],"_links":{"self":[{"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/posts\/336"}],"collection":[{"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/comments?post=336"}],"version-history":[{"count":3,"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/posts\/336\/revisions"}],"predecessor-version":[{"id":339,"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/posts\/336\/revisions\/339"}],"wp:attachment":[{"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/media?parent=336"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/categories?post=336"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/tags?post=336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}