{"id":13747521,"url":"https://github.com/seratch/rspec-kickstarter","last_synced_at":"2025-04-05T18:08:40.616Z","repository":{"id":8231127,"uuid":"9672039","full_name":"seratch/rspec-kickstarter","owner":"seratch","description":"RSpec 3 code generator toward existing Ruby code.","archived":false,"fork":false,"pushed_at":"2022-08-14T22:31:52.000Z","size":75,"stargazers_count":128,"open_issues_count":4,"forks_count":16,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-05-11T18:44:05.619Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/seratch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-04-25T13:15:03.000Z","updated_at":"2023-01-16T13:35:26.000Z","dependencies_parsed_at":"2022-08-06T23:00:46.509Z","dependency_job_id":null,"html_url":"https://github.com/seratch/rspec-kickstarter","commit_stats":null,"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seratch%2Frspec-kickstarter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seratch%2Frspec-kickstarter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seratch%2Frspec-kickstarter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seratch%2Frspec-kickstarter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seratch","download_url":"https://codeload.github.com/seratch/rspec-kickstarter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247378149,"owners_count":20929297,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T06:01:32.264Z","updated_at":"2025-04-05T18:08:40.581Z","avatar_url":"https://github.com/seratch.png","language":"Ruby","funding_links":[],"categories":["Ruby"],"sub_categories":[],"readme":"# rspec-kickstarter\n\nRSpec 3 code generator toward existing Ruby code. This gem will help you working on existing legacy code which has no tests.\n\n[![Build Status](https://travis-ci.org/seratch/rspec-kickstarter.png)](https://travis-ci.org/seratch/rspec-kickstarter)\n[![Coverage Status](https://coveralls.io/repos/seratch/rspec-kickstarter/badge.png)](https://coveralls.io/r/seratch/rspec-kickstarter)\n[![Code Climate](https://codeclimate.com/github/seratch/rspec-kickstarter.png)](https://codeclimate.com/github/seratch/rspec-kickstarter)\n\n## Installation\n\nhttps://rubygems.org/gems/rspec-kickstarter\n\n    gem install rspec-kickstarter\n\n## Usage\n\n    rspec-kickstarter ./app\n    rspec-kickstarter ./lib\n    rspec-kickstarter ./lib/yourapp/util.rb\n\n## Options\n\n```\n$ rspec-kickstarter -h\nUsage: rspec-kickstarter [options]\n    -f                               Create if absent or append to the existing spec\n        --force\n    -n                               Dry run mode (shows generated code to console)\n        --dry-run\n    -r                               Run in Rails mode\n        --rails\n    -o VAL                           Output directory (default: ./spec)\n        --output-dir VAL\n    -D VAL                           Delta tempalte path (e.g. ./rails_controller_delta.erb)\n        --delta-template VAL\n    -F VAL                           Full template path (e.g. ./rails_controller_full.erb)\n        --full-template VAL\n    -v                               Print version\n        --version\n```\n\n## Output example\n\nUnfortunately, `lib/foo/bar_baz.rb` has no test. That's too bad...\n\n```ruby\nmodule Foo\n  class BarBaz\n\n    def self.xxx(a, b = \"aaa\")\n    end\n\n    def yyy()\n    end\n\n    private\n\n    def zzz(a)\n    end\n\n  end\nend\n```\n\nOK, run `rspec-kickstarter` now!\n\n```sh\n$ rspec-kickstarter lib/foo/bar_baz.rb\n./spec/foo/bar_baz_spec.rb created.\n```\n\n`spec/foo/bar_baz_spec.rb` will be created as follows.\n\n```ruby\n# -*- encoding: utf-8 -*-\nrequire 'spec_helper'\nrequire 'foo/bar_baz'\n\ndescribe Foo::BarBaz do\n\n  # TODO: auto-generated\n  describe '#xxx' do\n    it 'works' do\n      a = double('a')\n      b = double('b')\n      result = Foo::BarBaz.xxx(a, b)\n      expect(result).not_to be_nil\n    end\n  end\n\n  # TODO: auto-generated\n  describe '#yyy' do\n    it 'works' do\n      bar_baz = Foo::BarBaz.new\n      result = bar_baz.yyy()\n      expect(result).not_to be_nil\n    end\n  end\n\nend\n```\n\n## Appending lacking test templates\n\n`-f` option allows appending lacking test templates to existing specs.\n\nFor instance, `additional_ops` method is added after spec creation.\n\n```ruby\nmodule Foo\n  class BarBaz\n\n    def self.xxx(a, b = \"aaa\")\n    end\n\n    def yyy()\n    end\n\n    def additional_ops\n    end\n\n    private\n\n    def zzz(a)\n    end\n\n  end\nend\n```\n\nExecute command.\n\n`rspec-kickstarter -f lib/foo/bar_baz.rb`\n\nThe following code will be appended.\n\n```ruby\n\n  # TODO: auto-generated\n  describe '#additional_ops' do\n    it 'works' do\n      bar_baz = Foo::BarBaz.new\n      result = bar_baz.additional_ops()\n      expect(result).not_to be_nil\n    end\n  end\n\nend\n```\n\n## Rails mode\n\nIn Rails mode, rspec-kickstarter generates Rails way spec code for controllers and helpers.\n\n```\n$ rspec-kickstarter -r app/controllers/root_controller.rb\n```\n\nOutput for scaffold:\n\n```ruby\n# -*- encoding: utf-8 -*-\n\nrequire 'rails_helper'\n\ndescribe CommentsController do\n\n  # TODO: auto-generated\n  describe 'GET index' do\n    it 'works' do\n      get :index, {}, {}\n      expect(response.status).to eq(200)\n    end\n  end\n\n  # TODO: auto-generated\n  describe 'GET show' do\n    it 'works' do\n      get :show, {}, {}\n      expect(response.status).to eq(200)\n    end\n  end\n\n  # TODO: auto-generated\n  describe 'GET new' do\n    it 'works' do\n      get :new, {}, {}\n      expect(response.status).to eq(200)\n    end\n  end\n\n  # TODO: auto-generated\n  describe 'GET edit' do\n    it 'works' do\n      get :edit, {}, {}\n      expect(response.status).to eq(200)\n    end\n  end\n\n  # TODO: auto-generated\n  describe 'POST create' do\n    it 'works' do\n      post :create, {}, {}\n      expect(response.status).to eq(200)\n    end\n  end\n\n  # TODO: auto-generated\n  describe 'PUT update' do\n    it 'works' do\n      put :update, {}, {}\n      expect(response.status).to eq(200)\n    end\n  end\n\n  # TODO: auto-generated\n  describe 'DELETE destroy' do\n    it 'works' do\n      delete :destroy, {}, {}\n      expect(response.status).to eq(200)\n    end\n  end\n\nend\n```\n\n\n## Customizable code template\n\nTry the template_samples.\n\n```\nruby -Ilib bin/rspec-kickstarter --delta-template=samples/delta_template.erb --full-template=samples/full_template.erb lib/foo.rb -n\n```\n\nWhen you use customized templates for your apps, `gem install rspec-kickstarter` and do like this:\n\n```\nrspec-kickstarter lib -D misc/delta_template.erb -F misc/full_template.erb\n```\n\n## RubyKaigi 2013\n\nLightning talk about rspec-kickstarter at RubyKaigi 2013\n\nhttp://rubykaigi.org/2013/lightning_talks#seratch\n\nhttps://speakerdeck.com/seratch/a-test-code-generator-for-rspec-users\n\n## Related Projects\n\n### Vintage fork\n\nhttps://github.com/ifad/rspec-kickstarter-vintage\n\nThis fork supports ruby 1.8.7 and RSpec 1.x with the old syntax.\n\n### ToFactory\n\nhttps://github.com/markburns/to_factory\n\nToFactory is a FactoryGirl's factories code generator for existing projects.\n\n## License\n\nCopyright (c) 2013 - Kazuhiro Sera\n\nMIT License\n\nhttps://github.com/seratch/rspec-kickstarter/blob/master/LICENSE.txt\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseratch%2Frspec-kickstarter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseratch%2Frspec-kickstarter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseratch%2Frspec-kickstarter/lists"}