From d5910a264a0ea3410d28b84113170d3e00d6f30a Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Wed, 24 Oct 2018 15:26:17 -0500 Subject: [PATCH] add test of seed data to CI closes #296 --- .travis.yml | 38 +++++++++--------- FilterLists.sln | 8 +++- .../FilterListsDbContextModelSnapshot.cs | 2 + .../FilterLists.Data.Tests.csproj | 26 +++++++++++++ .../SeedFilterListsDbContextTests.cs | 39 +++++++++++++++++++ 5 files changed, 94 insertions(+), 19 deletions(-) create mode 100644 tests/FilterLists.Data.Tests/FilterLists.Data.Tests.csproj create mode 100644 tests/FilterLists.Data.Tests/SeedFilterListsDbContextTests.cs diff --git a/.travis.yml b/.travis.yml index 25f7dd913..880c14fe4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,31 +3,33 @@ language: csharp mono: none dotnet: 2.1.403 solution: FilterLists.sln +services: + - mysql addons: apt: packages: - - sshpass + - sshpass script: -- scripts/build.sh -- dotnet test tests/FilterLists.Services.Tests/FilterLists.Services.Tests.csproj /p:CollectCoverage=true /p:CoverletOutputFormat=opencover + - scripts/build.sh + - dotnet test tests/FilterLists.Services.Tests/FilterLists.Services.Tests.csproj /p:CollectCoverage=true /p:CoverletOutputFormat=opencover after_script: -- bash <(curl -s https://codecov.io/bash) + - bash <(curl -s https://codecov.io/bash) env: global: - #FTP_USER - - secure: o/C5sWQSvHAENA7OSgKyptgiI7mbBlMZOvy6cwiQDes9df32oy60CgWHhgFJ2bM61fiJt0jsvogrTY1Rk8HEYphHsJ/WzuOqbnPFJZ9V74HaGf9SN7O+8GjOrPd1p+v3Kv2q0Py3FdGeKWEbWn352Js2VRNw6uvlxxihNxETnTak2QymQ5SQpcd//O7E5NDTAO7/+mn9Le5ZN6ZE6mDf53YGVcaiN/sAbh9QOE17LX9fp5F0veuQ3a/wWjZlDLZBUwZAAxSPGqefv2eOx5wIpbbBhkFEqpN4xmhUrYNfzsGDMthhiaLAWS0JfnhSsc1l4T6b/ljoNarY2BSEYPwG4utdCauI1jdh8kR/ZZoLG7/8TJ396iIWlXW3Z0C4kHhD3075F6tqr3LbRQR5OU85+uAqwBhutwQkLLJ+Usp0pu8wj89mMYxC4Cp66aLJSdMqeemR6UIUNojNlqI1+wsclsgRgCK0KIf4LNcdmPh4WkURbzZ1SNTkmyb85bVCnP0heF6HPIguZ2aUYCWKfGuOv5ohFfv+IDPaYdQybZSPrEsROKyapgnJqvIc03UgIcAgb7GhZG4ZxAtuRNqzwg9PU0aL9vWXN6qbLm2oM5Fj0cIrab3leVpSHvJBvfxS0Wl18GhRDP7Bzmf1crkxwJqXZw1YFEK7BSuLJ7VTWo7mQUY= - #FTP_PASSWORD - - secure: JW9ZqU7dgvWSEZBAQ7ZG3/f1xt79RdR3p1wTLAlmGia8eOPCcmLd9sSder6dw08YvM6QaMTkNfoVWX2tl6ppZ5pRnYlv9bzdj1PDz9Twe9+acGJ13u97siTF9hRNI6KnUrJDZfkKDO3Kdeg0pI/5vib2gglhyVfiBYgcOAjHEHLp53fbet/hvx3gPMzunjRXFEoM6VdqBspqCSKHWF4nziVaapRGhFCq2sFL1RFz3whDGGY/7BRl2cchY11ysAyRsw+fNriwU0Hf7NTXdWFxvnsl1/pLcPnzECRjb48jgWctWwoOqm7aD5eAPCJgUEElMZc34HckinnvOg05N8ySchsMp6rJfT9G00Lu5RWtPRnpQ38CcHOR1K54kpe+PLrs8M/bOR9yQdCLoEyqfdUxNfcBIE3d8NkLIjDC4MomoQftg6QdEUhlOCwXGQn1M6jyp2AlAgs/SGPHb3zT6Lr3MUKAbYeYbb912d5KYFeu97I5ls3cWVV/omU0iOU6OT0hRgWiy+EtHOzzIQtgXoARh/AZXovytJcKiSvhDi/jZ9UIGE5HCrPwNkQ2SdcrCFF/TKFsjNK+SYoibDgqdh4rgBUrI5yGGgBn3EdvkBZWr78IQjM4A0TwyjGC+R7BHVRipvoaKOtsO7NC5qqb+3NJasEymsS5tH6LxcA3odx/rs0= - #FTP_HOST - - secure: Q/MyM2VmEeW0z6ujxQAHS6GLMXE3Dguu75oSARykrFJGk85iNTij7OiHvqfTYSBdw/h+47zv/pjtHwD8os3LTmTKpMOu3PyMP+SOk6J1SGKUKx1J959GHMRw94Dqcr7RbGmQA5eVWq/GJzPJffhWcMOSSwXSIaYFZcBTXIYqMMmcxwSEULutfvyfzhOm+8psdHLQQhjX2QcYHNHJQTpJ6+WJ7tLpZIxg5iHSZe1dPRVpeozOJ/+hhxPWwi2XDNt3LG9VUg4jMF24HXcw5zJLgSZGV7oy+XUMrcRV27DzL/s+nGS4FM2TQbMal94FU0tSyTAA+Qj80hUNvlgL/tykmDRK+E2am+04SisUtuTVPLjVy52qqwt25tvbOQH9BjN5eieZxj4uYog1S3HL5BUa7032MZbToZzt8IuOxyfIKfGZBUYwyWLK5pPWxQwnZhGIFpH98m0wTAsggvCrr1n9mNJeYO0n0DymTt+xWqHE/MIxKU3aUo0RNWGXNIwrp4TjYOaf/GgeKAUMSI5TzLhKY2n3uPfCniM4p25Ysf0RmnMEKW0VsXpSWfyIAtwqnF1NGFU/RJn2X13LsYLxwzE8JJ1hSEW+QQ7k1ZJKEqZWYEvhbF+7RD/l5KkKgZD1L8FGLLUEK6eTY65/rQV+4gprAVFw43PnkYa2codUn48952A= - #FTP_DIR - - secure: Fh47PH2JNBtvr7Dbbzf/wG+HizL7bND63JyhY97kG7VHtXSeLwWTw13YvF0UDoWa+37NicTOKUgGemg7Mz+K4+GpOiTBUm5YNTpw8ECpdys9G4xZURsIqUYUxrr5k//TddvRP+4CaH0miOW3hKF4SSnT9BwJeTMxsZjQNsg78UKTOWhGQIkmXqbpgzWOFoUH5NrrNTe+KoIYRJ85DOtGLwjpuKKOivjd090MG18ZcQ63SqQ0TTTr3gGHgahrc/IPzSFFsPiLHWjpCk3EkbL8M+GaSQtJ8jUE7hqfTFXBZdB2ws8Z7qbjSwLY6o3YgvW53GGMH8DBpYOq+iKbQnUG7/v4YWBsuUOPRb6TbtSNHEZUfqeKo7Ku60roSNLanMmIPsvnbNnWy+wuA19g/4YIxwNJpx+FkACnYc9NSjrnLIS39mo4w3ngcM+YcNLIe1bmxOQVxr++BbmbbDj1dQng0JotfZtUNmEMmNFpE3q9xdNYQPfFBMor8DxqDYTJ4UB4MSNfmNnJd1Io9ccDf77AFltyHrKzV7bK/ZcV7YA/kMgxpCU3WEt0DmXWVsMaaMBlv+iwF2ebOaYQODIpbl8rAHTRhfsFfdpZkZSPwlQiwyWRoVYMdl5JZ6jOjlIrmRxMc9rySDlJA16Zf5Ha2fVb9SSMczFuR1qd6fOujpyGaio= - #CF_GLOBAL_API_KEY - - secure: kh18jMJa474a5ihcPgnX/DfiMb1F/vVES1Y2LTOn2khJEpDOAXOkE33GHUrh3aCEf1/Wi09FdXWGzLGcps7DIozGcYNHZDd9iFdud0GUfmDYhEbrnph8GQZx/JghxuRZ0p6NW4PTmyrvCyUly01WK994+tEkKjf7+VZfjaxbXqLOo1zsBgRIAKBST2zXo/eFI89wlp6up5yn8W2gsfon++5Ahtt9zEZYN8QoD26Ii+B05niEEjJ5wkKgvLBY58OCxFp4Gg6kq4AS4kj8+3S7mFn0l4WAoEqTGJEDy43iLhEQgCf0AhZLetPOXVwkUQ2w+nUup1jpCyGUjC7vZKGHMxJXW1V3NtLQTw+Q+TGCYFIBa/yCU0TMInHI9p3VpZl2I6PziqAaUOSoKMI6WkVUy91veb23+pTVKD0N6XQBB1RFZD1eIH9kPCFOoha453RxRYt2iv9ndhd5mNGLGbyDkiOZ18zl4hl/E9aG2Yl/CDaVzVGkKCxTPAHH7z4QKnKZLRyVL7ylktlcDydnAHI7x8/iHRkJF5hpcy3LldOO0DJXBIoIoD5i+Vd7tqCkcWM5E87PQUZeyUACogayrFOs2szhVIPq91TH68TbeLRQicZ4e5VIt8ASJqpalBFBjtI1NKDGrqGGT12pG1QMOdvK0lEIWMwnSxsBa0X0ERqaAuQ= - #CF_EMAIL - - secure: t+IYZ85pjetgRMA8/wdNvQp6vcY62yMA3J/YCVdIrmoT6Zg1rPLy9XObz242Htpj9Cn6g4rWgmYZ+YHmzJJ5rh2q33voMn1hwYUvkj76tOnwDR9Y1nZcYfSk3nly/Tn4U8xdrbt9VylPwztaccUp6WtcdSZ/NQ4MP1TGmmJvjq/wfrRZdyDltas5g+e5YkP4k3hByIm+t7TUb0fKuIVSCktnwUl4FvQvhgZT7tzOecmTE1Kiw7QMbs1B6Mr+DE2eYNBqJC8IGpMGdoCqVjv1vEj3/u8XTUA78kZwrc2vz6uiz6Vr2E4SjR7ryf0y1KCQMDYr5eUMVb3L4HjFpRnJ+93lL4kdoOkEfdpgn2PSck+vEDDpJ2MWXeE5Fzz7AO34sFSbBR90+OiDH32msI7a8bEIZ5y6zCaJmh4eppPhYCH8SffWOTDAzDUrlV0JTmJgyUvY8oCi4bUxYtHVrraRQLg5tk1MJNPRqbi3fhevUMweoeEyzSdCxRmgNjN41KBRVSMUHSyHcEpKALBxHESoPQ/B+54swUBFVZ3q5rbvFln1mKCWd23BQqCft2U+PWT1IcTStbPSNVWFF2mpaeNlDK6gOToF66uz0DHbN81RvydiB5ryBz6gHHnOwtry0dBAQ7eBHkTx5aTWyCl81mvoEbDFio4eYEIVTtJ3xr0KJ/Y= - #CF_FILTERLISTS_ZONE - - secure: a2mR9nIaDs+HdIyShSqigrlydYJ27eJPuNuRG5pZ/kuqlJkbXxsOHwjHXjn22ERQQJKwjXbZxgGQxf9Ef9WmFygTVW5WZdpWcOCE5IZBYSZikwU2M6WO9w3ENvNes8mgcOQM9EoNLZTFJQZB9SNIWhqZysW6jRFxNFdDrI0AdyjG/1u7jzC56zo79/oJs9g25mOaFCqnQWjE9N5/tTqW23MjQBQexCCAMyafvq65Jji8LY624bcyMg0vWNHfPdP0ZUIUhFgkpEBq9+6CjKwNougD0C4FqYFBmB3kVT/sEn6/oc2XdXkp1jEA7sdl1pFss8YrpRBcpbhz5kKePlujkorIr6xgqjJ2N9q2N23V6ekWnLu97ZuivSPfSQ8NPj0WHT4+AWagHRUFmgERtyI74y4UnA68ADmKuQBp1GPzsNhJ/4w3K/Tro0McjbH9ac7v2DfHPdCGBsnv93AK1opVUIB6pdacDqgwQk9/XbTd0wW3t4l4cLlSsgykPxydwA2R6lG+fFyLrviBiLdv+KTzD015y0VY339sPFwarRha2+uUYNcunSZtw0oarqHJQoJvhY1aoF2tBJ4MJG4h87tUecjhDbKSti+l/GNU/3oIMfTDnt/MqaA9Bnt/MwVDZBW0eY6koSzxbfePUOKbvPL8eI8Ax+aYoGKMestjW7sw1tk= + #FTP_USER + - secure: o/C5sWQSvHAENA7OSgKyptgiI7mbBlMZOvy6cwiQDes9df32oy60CgWHhgFJ2bM61fiJt0jsvogrTY1Rk8HEYphHsJ/WzuOqbnPFJZ9V74HaGf9SN7O+8GjOrPd1p+v3Kv2q0Py3FdGeKWEbWn352Js2VRNw6uvlxxihNxETnTak2QymQ5SQpcd//O7E5NDTAO7/+mn9Le5ZN6ZE6mDf53YGVcaiN/sAbh9QOE17LX9fp5F0veuQ3a/wWjZlDLZBUwZAAxSPGqefv2eOx5wIpbbBhkFEqpN4xmhUrYNfzsGDMthhiaLAWS0JfnhSsc1l4T6b/ljoNarY2BSEYPwG4utdCauI1jdh8kR/ZZoLG7/8TJ396iIWlXW3Z0C4kHhD3075F6tqr3LbRQR5OU85+uAqwBhutwQkLLJ+Usp0pu8wj89mMYxC4Cp66aLJSdMqeemR6UIUNojNlqI1+wsclsgRgCK0KIf4LNcdmPh4WkURbzZ1SNTkmyb85bVCnP0heF6HPIguZ2aUYCWKfGuOv5ohFfv+IDPaYdQybZSPrEsROKyapgnJqvIc03UgIcAgb7GhZG4ZxAtuRNqzwg9PU0aL9vWXN6qbLm2oM5Fj0cIrab3leVpSHvJBvfxS0Wl18GhRDP7Bzmf1crkxwJqXZw1YFEK7BSuLJ7VTWo7mQUY= + #FTP_PASSWORD + - secure: JW9ZqU7dgvWSEZBAQ7ZG3/f1xt79RdR3p1wTLAlmGia8eOPCcmLd9sSder6dw08YvM6QaMTkNfoVWX2tl6ppZ5pRnYlv9bzdj1PDz9Twe9+acGJ13u97siTF9hRNI6KnUrJDZfkKDO3Kdeg0pI/5vib2gglhyVfiBYgcOAjHEHLp53fbet/hvx3gPMzunjRXFEoM6VdqBspqCSKHWF4nziVaapRGhFCq2sFL1RFz3whDGGY/7BRl2cchY11ysAyRsw+fNriwU0Hf7NTXdWFxvnsl1/pLcPnzECRjb48jgWctWwoOqm7aD5eAPCJgUEElMZc34HckinnvOg05N8ySchsMp6rJfT9G00Lu5RWtPRnpQ38CcHOR1K54kpe+PLrs8M/bOR9yQdCLoEyqfdUxNfcBIE3d8NkLIjDC4MomoQftg6QdEUhlOCwXGQn1M6jyp2AlAgs/SGPHb3zT6Lr3MUKAbYeYbb912d5KYFeu97I5ls3cWVV/omU0iOU6OT0hRgWiy+EtHOzzIQtgXoARh/AZXovytJcKiSvhDi/jZ9UIGE5HCrPwNkQ2SdcrCFF/TKFsjNK+SYoibDgqdh4rgBUrI5yGGgBn3EdvkBZWr78IQjM4A0TwyjGC+R7BHVRipvoaKOtsO7NC5qqb+3NJasEymsS5tH6LxcA3odx/rs0= + #FTP_HOST + - secure: Q/MyM2VmEeW0z6ujxQAHS6GLMXE3Dguu75oSARykrFJGk85iNTij7OiHvqfTYSBdw/h+47zv/pjtHwD8os3LTmTKpMOu3PyMP+SOk6J1SGKUKx1J959GHMRw94Dqcr7RbGmQA5eVWq/GJzPJffhWcMOSSwXSIaYFZcBTXIYqMMmcxwSEULutfvyfzhOm+8psdHLQQhjX2QcYHNHJQTpJ6+WJ7tLpZIxg5iHSZe1dPRVpeozOJ/+hhxPWwi2XDNt3LG9VUg4jMF24HXcw5zJLgSZGV7oy+XUMrcRV27DzL/s+nGS4FM2TQbMal94FU0tSyTAA+Qj80hUNvlgL/tykmDRK+E2am+04SisUtuTVPLjVy52qqwt25tvbOQH9BjN5eieZxj4uYog1S3HL5BUa7032MZbToZzt8IuOxyfIKfGZBUYwyWLK5pPWxQwnZhGIFpH98m0wTAsggvCrr1n9mNJeYO0n0DymTt+xWqHE/MIxKU3aUo0RNWGXNIwrp4TjYOaf/GgeKAUMSI5TzLhKY2n3uPfCniM4p25Ysf0RmnMEKW0VsXpSWfyIAtwqnF1NGFU/RJn2X13LsYLxwzE8JJ1hSEW+QQ7k1ZJKEqZWYEvhbF+7RD/l5KkKgZD1L8FGLLUEK6eTY65/rQV+4gprAVFw43PnkYa2codUn48952A= + #FTP_DIR + - secure: Fh47PH2JNBtvr7Dbbzf/wG+HizL7bND63JyhY97kG7VHtXSeLwWTw13YvF0UDoWa+37NicTOKUgGemg7Mz+K4+GpOiTBUm5YNTpw8ECpdys9G4xZURsIqUYUxrr5k//TddvRP+4CaH0miOW3hKF4SSnT9BwJeTMxsZjQNsg78UKTOWhGQIkmXqbpgzWOFoUH5NrrNTe+KoIYRJ85DOtGLwjpuKKOivjd090MG18ZcQ63SqQ0TTTr3gGHgahrc/IPzSFFsPiLHWjpCk3EkbL8M+GaSQtJ8jUE7hqfTFXBZdB2ws8Z7qbjSwLY6o3YgvW53GGMH8DBpYOq+iKbQnUG7/v4YWBsuUOPRb6TbtSNHEZUfqeKo7Ku60roSNLanMmIPsvnbNnWy+wuA19g/4YIxwNJpx+FkACnYc9NSjrnLIS39mo4w3ngcM+YcNLIe1bmxOQVxr++BbmbbDj1dQng0JotfZtUNmEMmNFpE3q9xdNYQPfFBMor8DxqDYTJ4UB4MSNfmNnJd1Io9ccDf77AFltyHrKzV7bK/ZcV7YA/kMgxpCU3WEt0DmXWVsMaaMBlv+iwF2ebOaYQODIpbl8rAHTRhfsFfdpZkZSPwlQiwyWRoVYMdl5JZ6jOjlIrmRxMc9rySDlJA16Zf5Ha2fVb9SSMczFuR1qd6fOujpyGaio= + #CF_GLOBAL_API_KEY + - secure: kh18jMJa474a5ihcPgnX/DfiMb1F/vVES1Y2LTOn2khJEpDOAXOkE33GHUrh3aCEf1/Wi09FdXWGzLGcps7DIozGcYNHZDd9iFdud0GUfmDYhEbrnph8GQZx/JghxuRZ0p6NW4PTmyrvCyUly01WK994+tEkKjf7+VZfjaxbXqLOo1zsBgRIAKBST2zXo/eFI89wlp6up5yn8W2gsfon++5Ahtt9zEZYN8QoD26Ii+B05niEEjJ5wkKgvLBY58OCxFp4Gg6kq4AS4kj8+3S7mFn0l4WAoEqTGJEDy43iLhEQgCf0AhZLetPOXVwkUQ2w+nUup1jpCyGUjC7vZKGHMxJXW1V3NtLQTw+Q+TGCYFIBa/yCU0TMInHI9p3VpZl2I6PziqAaUOSoKMI6WkVUy91veb23+pTVKD0N6XQBB1RFZD1eIH9kPCFOoha453RxRYt2iv9ndhd5mNGLGbyDkiOZ18zl4hl/E9aG2Yl/CDaVzVGkKCxTPAHH7z4QKnKZLRyVL7ylktlcDydnAHI7x8/iHRkJF5hpcy3LldOO0DJXBIoIoD5i+Vd7tqCkcWM5E87PQUZeyUACogayrFOs2szhVIPq91TH68TbeLRQicZ4e5VIt8ASJqpalBFBjtI1NKDGrqGGT12pG1QMOdvK0lEIWMwnSxsBa0X0ERqaAuQ= + #CF_EMAIL + - secure: t+IYZ85pjetgRMA8/wdNvQp6vcY62yMA3J/YCVdIrmoT6Zg1rPLy9XObz242Htpj9Cn6g4rWgmYZ+YHmzJJ5rh2q33voMn1hwYUvkj76tOnwDR9Y1nZcYfSk3nly/Tn4U8xdrbt9VylPwztaccUp6WtcdSZ/NQ4MP1TGmmJvjq/wfrRZdyDltas5g+e5YkP4k3hByIm+t7TUb0fKuIVSCktnwUl4FvQvhgZT7tzOecmTE1Kiw7QMbs1B6Mr+DE2eYNBqJC8IGpMGdoCqVjv1vEj3/u8XTUA78kZwrc2vz6uiz6Vr2E4SjR7ryf0y1KCQMDYr5eUMVb3L4HjFpRnJ+93lL4kdoOkEfdpgn2PSck+vEDDpJ2MWXeE5Fzz7AO34sFSbBR90+OiDH32msI7a8bEIZ5y6zCaJmh4eppPhYCH8SffWOTDAzDUrlV0JTmJgyUvY8oCi4bUxYtHVrraRQLg5tk1MJNPRqbi3fhevUMweoeEyzSdCxRmgNjN41KBRVSMUHSyHcEpKALBxHESoPQ/B+54swUBFVZ3q5rbvFln1mKCWd23BQqCft2U+PWT1IcTStbPSNVWFF2mpaeNlDK6gOToF66uz0DHbN81RvydiB5ryBz6gHHnOwtry0dBAQ7eBHkTx5aTWyCl81mvoEbDFio4eYEIVTtJ3xr0KJ/Y= + #CF_FILTERLISTS_ZONE + - secure: a2mR9nIaDs+HdIyShSqigrlydYJ27eJPuNuRG5pZ/kuqlJkbXxsOHwjHXjn22ERQQJKwjXbZxgGQxf9Ef9WmFygTVW5WZdpWcOCE5IZBYSZikwU2M6WO9w3ENvNes8mgcOQM9EoNLZTFJQZB9SNIWhqZysW6jRFxNFdDrI0AdyjG/1u7jzC56zo79/oJs9g25mOaFCqnQWjE9N5/tTqW23MjQBQexCCAMyafvq65Jji8LY624bcyMg0vWNHfPdP0ZUIUhFgkpEBq9+6CjKwNougD0C4FqYFBmB3kVT/sEn6/oc2XdXkp1jEA7sdl1pFss8YrpRBcpbhz5kKePlujkorIr6xgqjJ2N9q2N23V6ekWnLu97ZuivSPfSQ8NPj0WHT4+AWagHRUFmgERtyI74y4UnA68ADmKuQBp1GPzsNhJ/4w3K/Tro0McjbH9ac7v2DfHPdCGBsnv93AK1opVUIB6pdacDqgwQk9/XbTd0wW3t4l4cLlSsgykPxydwA2R6lG+fFyLrviBiLdv+KTzD015y0VY339sPFwarRha2+uUYNcunSZtw0oarqHJQoJvhY1aoF2tBJ4MJG4h87tUecjhDbKSti+l/GNU/3oIMfTDnt/MqaA9Bnt/MwVDZBW0eY6koSzxbfePUOKbvPL8eI8Ax+aYoGKMestjW7sw1tk= deploy: skip_cleanup: true provider: script diff --git a/FilterLists.sln b/FilterLists.sln index 1a708bc38..8a4a4abb6 100644 --- a/FilterLists.sln +++ b/FilterLists.sln @@ -48,7 +48,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sql", "sql", "{A4BB2C81-523 scripts\sql\snapshotTimeAnalysis.sql = scripts\sql\snapshotTimeAnalysis.sql EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FilterLists.Services.Tests", "tests\FilterLists.Services.Tests\FilterLists.Services.Tests.csproj", "{7D9F0D85-E906-401A-BDAD-724440B34567}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FilterLists.Services.Tests", "tests\FilterLists.Services.Tests\FilterLists.Services.Tests.csproj", "{7D9F0D85-E906-401A-BDAD-724440B34567}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FilterLists.Data.Tests", "tests\FilterLists.Data.Tests\FilterLists.Data.Tests.csproj", "{DA34DED7-B352-4855-9C7B-9E3D983DBE2E}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -80,6 +82,10 @@ Global {7D9F0D85-E906-401A-BDAD-724440B34567}.Debug|Any CPU.Build.0 = Debug|Any CPU {7D9F0D85-E906-401A-BDAD-724440B34567}.Release|Any CPU.ActiveCfg = Release|Any CPU {7D9F0D85-E906-401A-BDAD-724440B34567}.Release|Any CPU.Build.0 = Release|Any CPU + {DA34DED7-B352-4855-9C7B-9E3D983DBE2E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DA34DED7-B352-4855-9C7B-9E3D983DBE2E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DA34DED7-B352-4855-9C7B-9E3D983DBE2E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DA34DED7-B352-4855-9C7B-9E3D983DBE2E}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/FilterLists.Api/Migrations/FilterListsDbContextModelSnapshot.cs b/src/FilterLists.Api/Migrations/FilterListsDbContextModelSnapshot.cs index 4ea06d109..83cf8ebac 100644 --- a/src/FilterLists.Api/Migrations/FilterListsDbContextModelSnapshot.cs +++ b/src/FilterLists.Api/Migrations/FilterListsDbContextModelSnapshot.cs @@ -407,6 +407,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.HasKey("Id"); + b.HasIndex("Raw"); + b.ToTable("rules"); }); diff --git a/tests/FilterLists.Data.Tests/FilterLists.Data.Tests.csproj b/tests/FilterLists.Data.Tests/FilterLists.Data.Tests.csproj new file mode 100644 index 000000000..589ce74b0 --- /dev/null +++ b/tests/FilterLists.Data.Tests/FilterLists.Data.Tests.csproj @@ -0,0 +1,26 @@ + + + + netcoreapp2.1 + + false + + + + + all + runtime; build; native; contentfiles; analyzers + + + + + all + runtime; build; native; contentfiles; analyzers + + + + + + + + diff --git a/tests/FilterLists.Data.Tests/SeedFilterListsDbContextTests.cs b/tests/FilterLists.Data.Tests/SeedFilterListsDbContextTests.cs new file mode 100644 index 000000000..8bb7bee31 --- /dev/null +++ b/tests/FilterLists.Data.Tests/SeedFilterListsDbContextTests.cs @@ -0,0 +1,39 @@ +using FilterLists.Data.Seed.Extensions; +using Microsoft.EntityFrameworkCore; +using MySql.Data.MySqlClient; +using Xunit; + +namespace FilterLists.Data.Tests +{ + public class SeedFilterListsDbContextTests + { + private const string CiTestServerConnString = "Server=localhost;Uid=travis;"; + private const string CiTestDatabaseConnString = CiTestServerConnString + "Database=filterlistsdatatest;"; + + /// + /// requires "CREATE USER 'travis'@'localhost';" on non-Travis mysql instance + /// + [Fact] + public async void SeedOrUpdateAsync_DoesNotThrowException() + { + var options = new DbContextOptionsBuilder() + .UseMySql(CiTestDatabaseConnString, m => m.MigrationsAssembly("FilterLists.Api")) + .Options; + using (var context = new FilterListsDbContext(options)) + { + await context.Database.EnsureDeletedAsync(); + using (var conn = new MySqlConnection(CiTestServerConnString)) + { + await conn.OpenAsync(); + var cmd = new MySqlCommand( + "CREATE DATABASE filterlistsdatatest CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;", + conn); + await cmd.ExecuteNonQueryAsync(); + } + + await context.Database.MigrateAsync(); + await SeedFilterListsDbContext.SeedOrUpdateAsync(context, "../../../../../../../../data"); + } + } + } +} \ No newline at end of file