Skip to content
Snippets Groups Projects
Commit d4196856 authored by Dominik Seeger's avatar Dominik Seeger
Browse files

refactor to class component, also poll available submissions regulary

corrected test
parent 4fd11de1
No related branches found
No related tags found
1 merge request!150Resolve "subscription ended on submit"
This commit is part of merge request !150. Comments created here will be created in the context of that merge request.
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
Tasks Tasks
</v-toolbar-title> </v-toolbar-title>
<v-spacer/> <v-spacer/>
<v-btn icon @click="getSubscriptions"> <v-btn icon @click="getSubscriptions(false)">
<v-icon v-if="!updating">refresh</v-icon> <v-icon v-if="!updating">refresh</v-icon>
<v-progress-circular <v-progress-circular
v-else v-else
...@@ -27,54 +27,65 @@ ...@@ -27,54 +27,65 @@
</v-card> </v-card>
</template> </template>
<script> <script lang="ts">
import Vue from 'vue'
import Component from 'vue-class-component'
import { Prop } from 'vue-property-decorator'
import { mapGetters, mapActions, mapState } from 'vuex' import { mapGetters, mapActions, mapState } from 'vuex'
import { UI } from '@/store/modules/ui' import { UI } from '@/store/modules/ui'
import { actions } from '@/store/actions' import { actions } from '@/store/actions'
import SubscriptionCreation from '@/components/subscriptions/SubscriptionCreation' import SubscriptionCreation from '@/components/subscriptions/SubscriptionCreation.vue'
import SubscriptionForList from '@/components/subscriptions/SubscriptionForList' import SubscriptionForList from '@/components/subscriptions/SubscriptionForList.vue'
import SubscriptionsForStage from '@/components/subscriptions/SubscriptionsForStage' import SubscriptionsForStage from '@/components/subscriptions/SubscriptionsForStage.vue'
import { Subscriptions } from '@/store/modules/subscriptions' import { Subscriptions } from '@/store/modules/subscriptions'
export default { @Component({
name: 'subscription-list',
components: { components: {
SubscriptionsForStage, SubscriptionsForStage,
SubscriptionForList, SubscriptionForList,
SubscriptionCreation }, SubscriptionCreation
name: 'subscription-list',
props: {
sidebar: {
type: Boolean,
default: false
}
},
data () {
return {
selectedStage: null,
updating: false
}
}, },
computed: { })
subscriptions () { return Subscriptions.state.subscriptions }, export default class SubscriptionList extends Vue {
stages () { return Subscriptions.availableStages }, @Prop({type: Boolean, required: true, default: false}) sidebar!: boolean
stagesReadable () { return Subscriptions.availableStagesReadable },
showDetail () { selectedStage = null
return !this.sidebar || (this.sidebar && !UI.state.sideBarCollapsed) updating = false
} timer = 0
},
methods: { get subscriptions () { return Subscriptions.state.subscriptions }
async getSubscriptions () { get stages () { return Subscriptions.availableStages }
get stagesReadable () { return Subscriptions.availableStagesReadable }
get showDetail () {
return !this.sidebar || (this.sidebar && !UI.state.sideBarCollapsed)
}
async getSubscriptions (silent: boolean) {
if (silent === false) {
this.updating = true this.updating = true
const subscriptions = await Subscriptions.getSubscriptions()
this.updating = false
return subscriptions
} }
}, const subscriptions = await Subscriptions.getSubscriptions()
created () { this.updating = false
const typesAndSubscriptions = [actions.updateSubmissionTypes(), Subscriptions.getSubscriptions()] return subscriptions
Promise.all(typesAndSubscriptions).then(() => { }
mounted() {
this.timer = setInterval(() => {
this.getSubscriptions(true)
}, 30 * 1e3)
}
beforeDestroy() {
clearInterval(this.timer)
}
created() {
const submissionTypes = actions.updateSubmissionTypes()
const subscriptions = Subscriptions.getSubscriptions()
Promise.all([submissionTypes, subscriptions]).then(() => {
Subscriptions.subscribeToAll() Subscriptions.subscribeToAll()
Subscriptions.cleanAssignmentsFromSubscriptions() Subscriptions.cleanAssignmentsFromSubscriptions(undefined)
}) })
} }
} }
......
...@@ -227,7 +227,8 @@ class UntestedParent: ...@@ -227,7 +227,8 @@ class UntestedParent:
self.write_comments_on_lines([(0, 'I disagree'), (1, 'Full points!')]) self.write_comments_on_lines([(0, 'I disagree'), (1, 'Full points!')])
self.browser.find_element_by_id('score-full').click() self.browser.find_element_by_id('score-full').click()
self.browser.find_element_by_id('submit-feedback').click() self.browser.find_element_by_id('submit-feedback').click()
WebDriverWait(self.browser, 10).until(ec.url_contains('subscription/ended')) sub_url = 'subscription/' + str(self.sub_type.pk) + '/ended'
WebDriverWait(self.browser, 10).until(ec.url_contains(sub_url))
submission_for_code = Submission.objects.get(text=code) submission_for_code = Submission.objects.get(text=code)
self.assertEqual(self.sub_type.full_score, submission_for_code.feedback.score) self.assertEqual(self.sub_type.full_score, submission_for_code.feedback.score)
self.assertEqual(3, submission_for_code.feedback.feedback_lines.count()) self.assertEqual(3, submission_for_code.feedback.feedback_lines.count())
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment