{"id":15606087,"url":"https://github.com/paulfioravanti/survey_tool_ruby","last_synced_at":"2025-10-13T13:31:01.349Z","repository":{"id":145917452,"uuid":"97708993","full_name":"paulfioravanti/survey_tool_ruby","owner":"paulfioravanti","description":"Culture Amp's Survey Tool Back End Developer Coding Test","archived":true,"fork":false,"pushed_at":"2023-12-07T04:42:48.000Z","size":337,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-30T12:38:14.592Z","etag":null,"topics":["coding-test","ruby"],"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/paulfioravanti.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-19T11:31:58.000Z","updated_at":"2024-11-23T20:47:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"b2868f8f-5e7e-4941-8a12-46144ed80f0c","html_url":"https://github.com/paulfioravanti/survey_tool_ruby","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/paulfioravanti/survey_tool_ruby","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulfioravanti%2Fsurvey_tool_ruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulfioravanti%2Fsurvey_tool_ruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulfioravanti%2Fsurvey_tool_ruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulfioravanti%2Fsurvey_tool_ruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paulfioravanti","download_url":"https://codeload.github.com/paulfioravanti/survey_tool_ruby/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulfioravanti%2Fsurvey_tool_ruby/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279015312,"owners_count":26085684,"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","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["coding-test","ruby"],"created_at":"2024-10-03T04:21:01.983Z","updated_at":"2025-10-13T13:31:01.002Z","avatar_url":"https://github.com/paulfioravanti.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status][Build Status image]][Build Status url]\n\n# CSV Survey Tool Developer Coding Test\n\nA [Ruby][] CLI application that parses and displays survey data from CSV files,\nand displays the results.\n\n![Screenshot][screenshot url]\n\nI also wrote a version of this app in [Elixir][], which can be found\n[here][survey-tool-elixir]. There is also a sibling repo to this containing\nCulture Amp's front end coding test, which I wrote in [Elm][]. It can be found\n[here][survey-tool-elm].\n\nMy review of the coding tests can be found in the following blog post:\n\n- _[Coding Test Review: Culture Amp][]_\n\n## Setup\n\n```console\ngit clone https://github.com/paulfioravanti/survey_tool_ruby.git\ncd survey_tool_ruby\nbundle install\n```\n\n## Usage\n\nRun the application with the following command:\n\n```console\nbin/survey-tool -q questions.csv [-r responses.csv]\n```\n\nIf the survey responses CSV file is _not_ specified, it will attempt to be\ninferred.  For example, if the questions CSV file is named\n`path/to/questions.csv`, then the application will attempt to use\n`path/to/questions-responses.csv` for the responses file.\n\nOther options can be seen by running the help command:\n\n```console\nbin/survey-tool -h\n```\n\n## Development\n\n### Dependencies\n\n- Ruby 3.2.2\n\n### Environment\n\nHeavy use of [Guard][] was made during development to ensure code quality,\nso I highly recommend having the following commands running in other\nterminal windows:\n\n```console\nbin/guard -w lib test\nbin/console\n```\n\nIf you are a [Tmuxinator][] user, you can find my config for this project\n[here][tmuxinator-config].\n\n## Tests\n\n[Minitest][] was used for the tests, which can be run with the\nfollowing command:\n\n```console\nbin/rake test\n```\n\n## Coverage Report\n\nView the [Simplecov][] test coverage report (after running the tests manually):\n\n```console\nopen coverage/index.html\n```\n\n## Application Documentation\n\nGenerate the [YARD][] documentation (after running the tests) and open it:\n\n```console\nbin/yardoc\nopen doc/index.html\n```\n\n[Build Status image]: https://github.com/paulfioravanti/survey_tool_ruby/actions/workflows/ci.yml/badge.svg\n[Build Status url]: https://github.com/paulfioravanti/survey_tool_ruby/actions/workflows/ci.yml\n[Coding Test Review: Culture Amp]: https://www.paulfioravanti.com/blog/coding-test-review-culture-amp/\n[Elixir]: https://github.com/elixir-lang/elixir\n[Elm]: https://elm-lang.org/\n[Guard]: https://github.com/guard/guard/\n[Minitest]: https://github.com/seattlerb/minitest\n[Ruby]: https://github.com/ruby/ruby\n[screenshot url]: ./ruby-screenshot.jpg\n[Simplecov]: https://github.com/colszowka/simplecov\n[survey-tool-elixir]: https://github.com/paulfioravanti/survey_tool_elixir\n[survey-tool-elm]: https://github.com/paulfioravanti/survey_tool_elm\n[Tmuxinator]: https://github.com/tmuxinator/tmuxinator\n[tmuxinator-config]: https://github.com/paulfioravanti/dotfiles/blob/master/tmuxinator/survey_tool_ruby.yml\n[YARD]: https://github.com/lsegal/yard\n\n---\n\n# Requirements\n\n# Culture Amp's Developer Coding Test\n\nYour task is to build a CLI application to parse and display survey data from CSV files, and display the results.\n\n## Data Format\n\n### Survey Data\nIncluded in the folder example-data are three sample data files defining surveys:\n* survey-1.csv\n* survey-2.csv\n* survey-3.csv\n\nEach row represents a question in that survey with headers defining what question data is in each column.\n\n### Response Data\nAnd three sample files containing responses to the corresponding survey:\n* survey-1-responses.csv\n* survey-2-responses.csv\n* survey-3-responses.csv\n\nResponse columns are always in the following order:\n* Email\n* Employee Id\n* Submitted At Timestamp (if there is no submitted at timestamp, you can assume the user did not submit a survey) \n* Each column from the fourth onwards are responses to survey questions.\n* Answers to Rating Questions are always an integer between (and including) 1 and 5. \n* Blank answers represent not answered. \n* Answers to Single Select Questions can be any string.\n\n## The Application\n\nYour coding challenge is to build an application that allows the user to specify a survey file and a file for it's results. It should read them in and present a summary of the survey results. A command line application that takes a data file as input is sufficient.\n\nThe output should include: \n\n1. The participation percentage and total participant counts of the survey.\n- Any response with a 'submitted_at' date has submitted and is said to have participated in the survey.\n2. The average for each rating question\n- Results from unsubmitted surveys should not be considered in the output. \n\n## Other information\n\nPlease include a Readme with any additional information you would like to include. You may wish to use it to explain any design decisions.\n\nDespite this being a small command line app, please approach this as you would a production problem using whatever approach to coding and testing you feel appropriate. Successful candidates will be asked to extend their implementation in a pair programming session as a component of the interview, so consider extensibility.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaulfioravanti%2Fsurvey_tool_ruby","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaulfioravanti%2Fsurvey_tool_ruby","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaulfioravanti%2Fsurvey_tool_ruby/lists"}