Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
team-friendo
signalboost
Commits
9ce2d471
Verified
Commit
9ce2d471
authored
Sep 07, 2020
by
aguestuser
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[215] rename `recycleablePhoneNumber` -> `recycleRequest`
parent
f2f7db2f
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
124 additions
and
73 deletions
+124
-73
app/db/index.js
app/db/index.js
+2
-2
app/db/migrations/20200907153345-rename-recyclable-phone-numbers-to-recycle-requests.js
...45-rename-recyclable-phone-numbers-to-recycle-requests.js
+59
-0
app/db/models/recycleRequest.js
app/db/models/recycleRequest.js
+24
-0
app/db/models/recycleablePhoneNumber.js
app/db/models/recycleablePhoneNumber.js
+0
-17
test/unit/db/models/recycleRequest.spec.js
test/unit/db/models/recycleRequest.spec.js
+39
-0
test/unit/db/models/recycleablePhoneNumber.spec.js
test/unit/db/models/recycleablePhoneNumber.spec.js
+0
-54
No files found.
app/db/index.js
View file @
9ce2d471
...
...
@@ -10,7 +10,7 @@ const { membershipOf } = require('./models/membership')
const
{
messageCountOf
}
=
require
(
'
./models/messageCount
'
)
const
{
phoneNumberOf
}
=
require
(
'
./models/phoneNumber
'
)
const
{
smsSenderOf
}
=
require
(
'
./models/smsSender
'
)
const
{
recycle
ablePhoneNumber
Of
}
=
require
(
'
./models/recycle
ablePhoneNumber
'
)
const
{
recycle
Request
Of
}
=
require
(
'
./models/recycle
Request
'
)
const
{
wait
}
=
require
(
'
../util
'
)
const
{
maxConnectionAttempts
,
connectionInterval
}
=
config
...
...
@@ -30,7 +30,7 @@ const run = async () => {
membership
:
membershipOf
(
sequelize
,
Sequelize
),
messageCount
:
messageCountOf
(
sequelize
,
Sequelize
),
phoneNumber
:
phoneNumberOf
(
sequelize
,
Sequelize
),
recycle
ablePhoneNumber
:
recycleablePhoneNumber
Of
(
sequelize
,
Sequelize
),
recycle
Request
:
recycleRequest
Of
(
sequelize
,
Sequelize
),
smsSender
:
smsSenderOf
(
sequelize
,
Sequelize
),
}
...
...
app/db/migrations/20200907153345-rename-recyclable-phone-numbers-to-recycle-requests.js
0 → 100644
View file @
9ce2d471
'
use strict
'
;
module
.
exports
=
{
up
:
async
(
queryInterface
,
Sequelize
)
=>
{
await
queryInterface
.
createTable
(
'
recycleRequests
'
,
{
phoneNumber
:
{
type
:
Sequelize
.
STRING
,
primaryKey
:
true
,
allowNull
:
false
,
unique
:
true
,
},
createdAt
:
{
type
:
Sequelize
.
DATE
,
allowNull
:
false
,
defaultValue
:
Sequelize
.
NOW
,
},
updatedAt
:
{
type
:
Sequelize
.
DATE
,
allowNull
:
false
,
defaultValue
:
Sequelize
.
NOW
,
},
})
await
queryInterface
.
addIndex
(
'
recycleRequests
'
,
{
fields
:
[
'
createdAt
'
]
})
return
queryInterface
.
dropTable
(
'
recycleablePhoneNumbers
'
)
},
down
:
async
(
queryInterface
,
Sequelize
)
=>
{
await
queryInterface
.
dropTable
(
'
recycleRequests
'
)
return
queryInterface
.
createTable
(
'
recycleablePhoneNumbers
'
,
{
channelPhoneNumber
:
{
type
:
Sequelize
.
STRING
,
primaryKey
:
true
,
allowNull
:
false
,
unique
:
true
,
},
whenEnqueued
:
{
type
:
Sequelize
.
DATE
,
allowNull
:
false
,
},
createdAt
:
{
type
:
Sequelize
.
DATE
,
allowNull
:
false
,
defaultValue
:
Sequelize
.
NOW
,
},
updatedAt
:
{
type
:
Sequelize
.
DATE
,
allowNull
:
false
,
defaultValue
:
Sequelize
.
NOW
,
},
});
}
};
app/db/models/recycleRequest.js
0 → 100644
View file @
9ce2d471
const
{
isPhoneNumber
}
=
require
(
'
../validations
'
)
const
recycleRequestOf
=
(
sequelize
,
Sequelize
)
=>
sequelize
.
define
(
'
recycleRequest
'
,
{
phoneNumber
:
{
type
:
Sequelize
.
STRING
,
primaryKey
:
true
,
allowNull
:
false
,
unique
:
true
,
validate
:
isPhoneNumber
,
},
createdAt
:
{
type
:
Sequelize
.
DATE
,
allowNull
:
false
,
defaultValue
:
Sequelize
.
NOW
,
},
updatedAt
:
{
type
:
Sequelize
.
DATE
,
allowNull
:
false
,
defaultValue
:
Sequelize
.
NOW
,
},
})
module
.
exports
=
{
recycleRequestOf
}
app/db/models/recycleablePhoneNumber.js
deleted
100644 → 0
View file @
f2f7db2f
const
recycleablePhoneNumberOf
=
(
sequelize
,
DataTypes
)
=>
{
const
recycleablePhoneNumber
=
sequelize
.
define
(
'
recycleablePhoneNumber
'
,
{
channelPhoneNumber
:
{
type
:
DataTypes
.
STRING
,
primaryKey
:
true
,
allowNull
:
false
,
unique
:
true
,
},
whenEnqueued
:
{
type
:
DataTypes
.
DATE
,
allowNull
:
false
,
},
})
return
recycleablePhoneNumber
}
module
.
exports
=
{
recycleablePhoneNumberOf
}
test/unit/db/models/recycleRequest.spec.js
0 → 100644
View file @
9ce2d471
import
{
expect
}
from
'
chai
'
import
{
describe
,
it
,
before
,
after
,
afterEach
}
from
'
mocha
'
import
{
run
}
from
'
../../../../app/db/index
'
import
{
genPhoneNumber
}
from
'
../../../support/factories/phoneNumber
'
describe
(
'
recycleRequest model
'
,
()
=>
{
let
db
let
phoneNumber
=
genPhoneNumber
()
before
(
async
()
=>
(
db
=
await
run
()))
afterEach
(
async
()
=>
await
db
.
recycleRequest
.
destroy
({
where
:
{}
}))
after
(
async
()
=>
await
db
.
stop
())
it
(
'
has the correct fields
'
,
async
()
=>
{
console
.
log
(
'
bar
'
)
const
recycleRequest
=
await
db
.
recycleRequest
.
create
({
phoneNumber
})
expect
(
recycleRequest
.
phoneNumber
).
to
.
be
.
a
(
'
string
'
)
expect
(
recycleRequest
.
createdAt
).
to
.
be
.
a
(
'
Date
'
)
expect
(
recycleRequest
.
updatedAt
).
to
.
be
.
a
(
'
Date
'
)
})
describe
(
'
validations
'
,
()
=>
{
it
(
'
requires a phoneNumber
'
,
async
()
=>
{
const
err
=
await
db
.
recycleRequest
.
create
({
phoneNumber
:
undefined
}).
catch
(
e
=>
e
)
expect
(
err
.
message
).
to
.
include
(
'
phoneNumber cannot be null
'
)
})
it
(
'
requires phone number to have valid e164 format
'
,
async
()
=>
{
const
err
=
await
db
.
recycleRequest
.
create
({
phoneNumber
:
'
foobar
'
}).
catch
(
e
=>
e
)
expect
(
err
.
message
).
to
.
include
(
'
Validation error
'
)
})
it
(
"
doesn't allow the same phone number to be enqueued twice
"
,
async
()
=>
{
await
db
.
recycleRequest
.
create
({
phoneNumber
})
const
err
=
await
db
.
recycleRequest
.
create
({
phoneNumber
}).
catch
(
e
=>
e
)
expect
(
err
.
name
).
to
.
equal
(
'
SequelizeUniqueConstraintError
'
)
})
})
})
test/unit/db/models/recycleablePhoneNumber.spec.js
deleted
100644 → 0
View file @
f2f7db2f
import
{
expect
}
from
'
chai
'
import
{
describe
,
it
,
before
,
after
}
from
'
mocha
'
import
{
run
}
from
'
../../../../app/db/index
'
import
{
genPhoneNumber
}
from
'
../../../support/factories/phoneNumber
'
describe
(
'
recycleablePhoneNumber model
'
,
()
=>
{
let
db
let
channelPhoneNumber
=
genPhoneNumber
()
before
(
async
()
=>
{
db
=
await
run
()
})
after
(
async
()
=>
{
await
db
.
recycleablePhoneNumber
.
destroy
({
where
:
{}
})
await
db
.
stop
()
})
it
(
'
has the correct fields
'
,
async
()
=>
{
const
enqueuedChannelNumber
=
await
db
.
recycleablePhoneNumber
.
create
({
channelPhoneNumber
,
whenEnqueued
:
new
Date
().
toISOString
(),
})
expect
(
enqueuedChannelNumber
.
channelPhoneNumber
).
to
.
be
.
a
(
'
string
'
)
expect
(
enqueuedChannelNumber
.
whenEnqueued
).
to
.
be
.
a
(
'
Date
'
)
})
describe
(
'
validations
'
,
()
=>
{
it
(
'
requires a channelPhoneNumber
'
,
async
()
=>
{
const
err
=
await
db
.
recycleablePhoneNumber
.
create
({
whenEnqueued
:
new
Date
().
toISOString
()
})
.
catch
(
e
=>
e
)
expect
(
err
.
message
).
to
.
include
(
'
channelPhoneNumber cannot be null
'
)
})
it
(
'
requires a timestamp for whenEnqueued
'
,
async
()
=>
{
const
err
=
await
db
.
recycleablePhoneNumber
.
create
({
channelPhoneNumber
:
genPhoneNumber
()
})
.
catch
(
e
=>
e
)
expect
(
err
.
message
).
to
.
include
(
'
whenEnqueued cannot be null
'
)
})
it
(
"
doesn't allow the same phone number to be enqueued twice
"
,
async
()
=>
{
const
err
=
await
db
.
recycleablePhoneNumber
.
create
({
channelPhoneNumber
,
whenEnqueued
:
new
Date
().
toISOString
(),
})
.
catch
(
e
=>
JSON
.
stringify
(
e
.
errors
[
0
]))
expect
(
err
).
to
.
include
(
'
channelPhoneNumber must be unique
'
)
})
})
})
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment