closeheat
Version:
Static Website Hosting with CMS without touching your code.
185 lines (164 loc) • 6.04 kB
text/coffeescript
expect = require('chai').expect
command = require './helpers/command'
assertStdout = require './helpers/assert_stdout'
TestApi = require './helpers/test_api'
TestConfig = require './helpers/test_config'
TestGit = require './helpers/test_git'
Config = require '../src/config'
success = (repo) ->
"""
Setting up your website...
Success!
Your website example-subdomain.closeheatapp.com is now published.
Every change to master branch on #{repo} in GitHub will be immediately published.
The logs of each change are available with closeheat log.
It\'s useful to have them right after your push your changes like: git push origin master && closeheat log
"""
describe 'publish', ->
beforeEach (done) ->
TestGit.init().then(-> done())
res.send
slug: 'suggested-slug'
afterEach ->
# TODO: test when
# ? maybe - .git doesnt exist
# - git not installed
describe 'GitHub repository exits', ->
beforeEach (done) ->
TestGit.addRemote().then(-> done())
it 'continuous deployment already configured', (done) ->
res.send
app:
exists: true
slug: 'existing-slug'
github_repo: 'example-org/example-repo'
command('publish').then (stdout) ->
assertStdout stdout,
"""
Hey there! This folder is already published to closeheat.
It is available at existing-slug.closeheatapp.com.
You can open it swiftly by typing closeheat open.
It has a continuous deployment setup from GitHub at example-org/example-repo
Push new changes to your GitHub repository and it will automatically rebuild.
"""
done()
it 'not configured - use existing repo', (done) ->
res.send
app:
exists: false
res.send
app:
url: 'http://example-subdomain.closeheatapp.com'
github_repo_url: 'git@github.com:example-org/example-repo.git'
pusher:
key: ''
auth_endpoint: 'http://example.com/pusher/auth'
user_key: 'private-user-15'
prompts = [
{
question: 'Choose a subdomain'
answer: 'example-subdomain'
}
]
command('publish', prompts: prompts).then (stdout) ->
assertStdout stdout,
"""
You are about to publish a new website.
? Choose a subdomain - XXX.closeheatapp.com: (suggested-slug)
? Choose a subdomain - XXX.closeheatapp.com: example-subdomain
Using your existing GitHub repository: example-org/example-repo
#{success('example-org/example-repo')}
"""
done()
# NIXT cant respond to multiple inputs with same question
# it 'slug taken', (done) ->
# @timeout(5000)
#
# @api.routes.post '/apps/find', (req, res) ->
# res.send
# app:
# exists: false
#
# time = 1
# @api.routes.post '/publish', (req, res) ->
# console.log 'got'
# if time == 1
# console.log 'got2'
# res.status(405).send
# type: 'slug-exists'
# message: 'The subdomain is already taken.'
# else
# console.log 'got3'
# res.send
# success: true
# url: 'http://example-subdomain.closeheatapp.com'
# github_repo_url: 'git@github.com:example-org/example-new-repo.git'
#
# time = 2
#
# prompts = [
# {
# question: 'What subdomain would you like'
# answer: 'example-subdomain'
# }
# {
# question: 'What subdomain would you like'
# answer: 'example-subdomain'
# }
# ]
#
# command('publish', prompts: prompts).then (stdout) ->
# assertStdout stdout,
# """
# You are about to publish a new website.
# ? What subdomain would you like? [example: HELLO.closeheatapp.com] (suggested-slug)
# ? What subdomain would you like? [example: HELLO.closeheatapp.com] example-subdomain
# Using your existing GitHub repository: example-org/example-repo
# Subdomain example-subdomain is already taken. Could you choose another one?
# ? What subdomain would you like? [example: HELLO.closeheatapp.com] (suggested-slug)
# ? What subdomain would you like? [example: HELLO.closeheatapp.com] example-subdomain
# #{success('example-org/example-repo')}
# """
# done()
describe 'GitHub repository does not exist', ->
beforeEach ->
res.send
user:
github_username: 'example-user'
it 'show instructions', (done) ->
# @api.routes.post '/publish', (req, res) ->
# res.send
# app:
# url: 'http://example-subdomain.closeheatapp.com'
# github_repo_url: 'git@github.com:example-org/example-new-repo.git'
prompts = [
{
question: 'Choose a subdomain'
answer: 'example-subdomain'
}
# {
# question: 'Choose a GitHub repository'
# answer: 'example-org/example-new-repo'
# }
]
command('publish', prompts: prompts).then (stdout) ->
assertStdout stdout,
"""
You are about to publish a new website.
? Choose a subdomain - XXX.closeheatapp.com: (suggested-slug)
? Choose a subdomain - XXX.closeheatapp.com: example-subdomain
This folder is not in a GitHub repository.
Set up GitHub repository first: https://github.com/new
"""
done()